IP Library › Granted Patent US 11,308,024
Granted Patent B2
US 11,308,024 · App. 16/765,389 · Granted Apr 19, 2022

Multi-path RDMA transmission

Inventors: Guo Chen (Redmond, WA); Thomas Moscibroda (Beijing, CN); Peng Cheng (Redmond, WA); Yuanwei Lu (Redmond, WA); Yongqiang Xiong (Beijing, CN)
Assignee: Microsoft Technology Licensing, LLC
G06F15/17331H04L47/11H04L47/34H04L47/622H04L67/1097H04L69/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 11,308,024
App. No.
16/765,389
Granted
Apr 19, 2022
Kind
B2
Abstract

In accordance with implementations of the subject matter described herein, there provides a solution for multi-path RDMA transmission. In the solution, at least one packet is generated based on an RDMA message to be transmitted from a first device to a second device. The first device has an RDMA connection with the second device via a plurality of paths. A first packet in the at least one packet includes a plurality of fields, which include information for transmitting the first packet over a first path of the plurality of paths. The at least one packet is transmitted to the second device over the plurality of paths via an RDMA protocol. The first packet is transmitted over the first path. The multi-path RDMA transmission solution according to the subject matter described herein can efficiently utilize rich network paths while maintaining a low memory footprint in a network interface card.

Claims (59)

1. A device for data transmission, comprising:

a processing unit; and

a memory coupled to the processing unit and storing instructions for execution by the processing unit, the instructions, when executed by the processing unit, causing the device to perform actions, the actions comprising:

generating at least one packet including at least a first packet based on a remote direct memory access (RDMA) message to be transmitted from the device to another device, the device having an RDMA connection with the other device via a plurality of paths, the first packet including at least a plurality of fields, the plurality of fields including information for transmitting the first packet over a first path of the plurality of paths, wherein the plurality of fields includes a seventh field indicating a congestion notification generated by a packet forwarding device on the first path, the congestion notification indicating a congestion condition of the first path detected by the packet forwarding device and an eighth field indicating a maximum sequential sequence number among packets received at the other device;

transmitting the at least one packet to the other device over the plurality of paths via an RDMA protocol, the first packet being transmitted over the first path; and

in response to receiving a first acknowledgement for the first packet from the other device over the first path, updating congestion control information indicating a congestion condition of the plurality of paths at least based on the congestion notification indicated by the seventh field and the maximum sequential sequence number indicated by the eighth field.

2. The device according to claim 1 , wherein the plurality of fields include:

a first field indicating an identifier of the first path;

a second field indicating a packet sequence number of the first packet;

a third field indicating a message sequence number of the RDMA message; and

a fourth field indicating a sequence number of the first packet in the RDMA message.

3. The device according to claim 2 , wherein transmitting the at least one packet comprises:

obtaining the congestion control information indicating a congestion condition of the plurality of paths;

determining, based on the congestion control information, whether the first packet is allowed to be transmitted; and

in response to determining that the first packet is allowed to be transmitted, transmitting the first packet to the other device over the first path via the RDMA protocol.

4. The device according to claim 3 , wherein the at least one packet further includes a second packet subsequent to the first packet, and transmitting the at least one packet comprises:

in response to receiving the first acknowledgement for the first packet from the other device over the first path, updating the congestion control information; and

controlling transmission of the second packet based on the updated congestion control information.

5. The device according to claim 4 , wherein the first acknowledgement at least includes:

a fifth field indicating the identifier of the first path; and

a sixth field indicating the packet sequence number of the first packet.

6. The device according to claim 1 , wherein updating the congestion control information comprises:

in response to receiving the first acknowledgement, determining a maximum packet sequence number among packets for which acknowledgements have been received;

determining an out-of-order tolerance for transmission of the at least one packet;

determining, based on the maximum packet sequence number and the out-of-order tolerance, a threshold sequence number of a packet allowed to be transmitted over the first path; and

updating the congestion control information at least based on the packet sequence number indicated by the sixth field and the threshold sequence number.

7. The device according to claim 6 , wherein the first packet further includes a ninth field indicating a transmission sequence on which the first packet depends, and transmitting the at least one packet comprises:

determining, at least based on the congestion control information and the out-of-order tolerance, a time interval for transmitting the first packet; and

in response to a third packet immediately preceding the first packet in the at least one packet being transmitted, waiting at least for the time interval to transmit the first packet.

8. The device according to claim 1 , the actions further comprising:

in response to receiving a negative acknowledgement from the other device, determining a fourth packet in connection with the negative acknowledgement from the at least one packet;

processing the fourth packet by adding a retransmission tag to the fourth packet; and

retransmitting the processed fourth packet to the other device over a second path of the plurality of paths via the RDMA protocol, over which an acknowledgement has been received.

9. A device for data transmission, comprising:

a processing unit; and

a memory coupled to the processing unit and storing instructions for execution by the processing unit, the instructions, when executed by the processing unit, causing the device to perform actions, the actions comprising:

receiving at least one packet including at least a first packet from another device over a plurality of paths via a remote direct memory access (RDMA) protocol, the device having an RDMA connection with the other device via the plurality of paths, the first packet including at least a plurality of fields, the plurality of fields including information for transmitting the first packet over a first path of the plurality of paths;

in response to receiving the first packet over the first path, generating a first acknowledgement for the first packet, wherein the first acknowledgment includes a seventh field indicating a congestion notification generated by a packet forwarding device on the first path, the congestion notification indicating a congestion condition of the first path detected by the packet forwarding device and an eighth field indicating a maximum sequential sequence number among packets received at the device; and

transmitting the first acknowledgement to the other device over the first path.

10. The device according to claim 9 , wherein the at least one packet is generated based on an RDMA message, and the plurality of fields include:

a first field indicating an identifier of the first path;

a second field indicating a first packet sequence number of the first packet;

a third field indicating a message sequence number of the RDMA message; and

a fourth field indicating a sequence number of the first packet in the RDMA message.

11. The device according to claim 9 , the first acknowledgement further comprising:

a fifth field indicating the identifier of the first path;

a sixth field indicating the first packet sequence number of the first packet.

12. The device according to claim 9 , the actions further comprising:

obtaining a bitmap for recording a state of a received packet;

in response to receiving the first packet over the first path, determining whether a location corresponding to the first packet is present in the bitmap; and

in response to determining the location corresponding to the first packet is present in the bitmap, updating a state associated with the first packet at the location.

13. The device according to claim 12 , the actions further comprising:

in response to determining that the location corresponding to the first packet is absent in the bitmap, determining a packet to be retransmitted based on the bitmap;

generating a negative acknowledgement indicating the packet to be retransmitted; and

transmitting the negative acknowledgement to the other device over the first path.

14. A computer-implemented method comprising:

generating, based on a remote direct memory access (RDMA) message to be transmitted from a first device to a second device, at least one packet including at least a first packet, the first device having an RDMA connection with the second device via a plurality of paths, the first packet including at least a plurality of fields, the plurality of fields including information for transmitting the first packet over a first path of the plurality of paths, wherein the plurality of fields includes a seventh field indicating a congestion notification generated by a packet forwarding device on the first path, the congestion notification indicating a congestion condition of the first path detected by the packet forwarding device and an eighth field indicating a maximum sequential sequence number among packets received at the other device;

transmitting the at least one packet to the second device over the plurality of paths via an RDMA protocol, the first packet being transmitted over the first path and

in response to receiving a first acknowledgement for the first packet from the other device over the first path, updating congestion control information indicating a congestion condition of the plurality of paths at least based on the congestion notification indicated by the seventh field and the maximum sequential sequence number indicated by the eighth field.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 19, 2020
From: CHEN, GUO; LU, YUANWEI; CHENG, PENG; MOSCIBRODA, THOMAS; XIONG, YONGQUIANG
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 052703/0074 →
Priority Claims (1)
CN 201711352625.4 · Dec 15, 2017 · national
Continuity (1)
Related Publication 20200334195A1 · Oct 22, 2020
Cited By (2)
US 12,244,670 US 12,561,262