IP Library Granted Patent US 9,692,560
Granted Patent B1
US 9,692,560 · App. 14/663,912 · Granted Jun 27, 2017

Methods and systems for reliable network communication

Inventors: Yoav Galon (Givatayim, IL); Rafi Shalom (Petah Tikva, IL); Amit Radzi (Tel-Aviv, IL)
Assignee: QLOGIC Corporation
H04L1/1628H04L47/34
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 9,692,560
App. No.
14/663,912
Granted
Jun 27, 2017
Kind
B1
Abstract

Methods and systems for network communication are provided. One of the methods includes receiving an out of order packet at a requestor device that is communicably connected to a responder device; storing the out of order packet at an out of order buffer location; and sending a lossy reliable connection (LRC) packet to the responder device when selective acknowledgement (SACK) is supported between the requestor device and the responder device, with information regarding an updated sequence number in a LRC extended header (LRCETH) that indicates to the responder information regarding in-order packets that have been received by the requestor device.

Claims (45)

1. A machine implemented method, comprising:

receiving an out of order packet at a requestor device that is communicably connected to a responder device for a connection;

storing the out of order packet at an out of order buffer location and saving a packet sequence number (PSN);

determining that selective acknowledgement (SACK) is supported between the requestor device and the responder device for the connection;

sending a lossy reliable connection (LRC) packet to the responder device when selective acknowledgement (SACK) is supported between the requestor device and the responder device, with information regarding an updated sequence number in a LRC extended header (LRCETH) that indicates to the responder device information regarding in-order packets that have been received by the requestor device;

sending by the requestor device the LRC packet with an updated in-order PSN value, when SACK is not supported between the requestor device and the responder device;

determining that an acknowledgement packet with a SACK block has been received, when a received packet at the requestor device is not an out of order packet;

processing the SACK block for the acknowledgement packet and updating a data structure that tracks retransmit packets from the requestor device; and

invoking a retransmit process to retransmit packets from the requestor device to the responder device.

2. The method of claim 1 , further comprising:

receiving a duplicate acknowledgement (ACK) packet or a not acknowledgement packet at the requestor device when the received packet at the requestor device is not an out of order packet and the acknowledgement packet with the SACK block is not received; and

invoking a retransmit flow after a threshold number of duplicate ACK packets have been received.

3. The method of claim 1 , wherein the requestor device and the responder device are remote direct memory access (RDMA) nodes.

4. The method of claim 3 , wherein the RDMA nodes are configured to process InfiniB and packets.

5. The method of claim 4 , wherein the LRCETH is included in an extended header (ETH) of each InfiniB and packet.

6. The method of claim 5 , wherein the LRCETH includes an acknowledgement sequence number indicating an amount of in order data that was received by a queue pair (QP).

7. A machine implemented method, comprising:

receiving a lossy reliable connection (LRC) extended header (LRCETH) packet with a selective acknowledgement (SACK) block at a responder device communicating with a requestor device;

processing the SACK block by the responder device and updating a data structure that tracks packet retransmission from the responder device to the requestor device;

retransmitting a packet from the responder device to the requester device, based on the SACK block information;

for a non-LRC packet without a SACK block received at the responder device, determining by the responder device that the non-LRC packet without a SACK block is a duplicate LRC packet;

determining by the responder device that the responder device has received N duplicate packets with a same packet sequence number; and

updating a congestion window with an indicator for re-transmit workflow;

for an out of order packet received at the responder device and for supported SACK transmission, the responder device transmitting an acknowledgement packet with updated SACK information.

8. The method of claim 7 , wherein the requestor device and the responder device are remote direct memory access (RDMA) nodes.

9. The method of claim 8 , wherein the RDMA nodes are configured to process InfiniB and packets.

10. The method of claim 9 , wherein the LRCETH is included in an extended header (ETH) of each InfiniB and packet.

11. The method of claim 10 , wherein the LRCETH includes an acknowledgement sequence number indicating an amount of in order data that was received by a queue pair (QP).

12. The method of claim 7 , wherein when a duplicate LRCETH packet is received at the responder device, then a retransmit flow is invoked after a threshold number of duplicate acknowledgement packets have been received.

13. The storage medium of claim 7 , the machine executable code further causing the machine to:

receive a duplicate acknowledgement (ACK) packet or a not acknowledgement packet at the requestor device when the received packet at the requestor device is not an out of order packet and the acknowledgement packet with the SACK block is not received; and

invoke a retransmit flow after a threshold number of duplicate ACK packets have been received.

14. A non-transitory, machine readable storage medium having stored thereon instructions for performing a method, comprising machine executable code which when executed by at least one machine, causes the machine to:

receive an out of order packet at a requestor device that is communicably connected to a responder device for a connection;

store the out of order packet at an out of order buffer location and saving a packet sequence number (PSN);

determine that selective acknowledgement (SACK) is supported between the requestor device and the responder device for the connection;

send a lossy reliable connection (LRC) packet to the responder device when SACK is supported between the requestor device and the responder device, with information regarding an updated sequence number in a LRC extended header (LRCETH) that indicates to the responder device information regarding in-order packets that have been received by the requestor device;

send by the requestor device the LRC packet with an updated in-order PSN value, when SACK is not supported between the requestor device and the responder device;

determine that an acknowledgement packet with a SACK block has been received, when a received packet at the requestor device is not an out of order packet;

process the SACK block for the acknowledgement packet and updating a data structure that tracks retransmit packets from the requestor device; and

invoke a retransmit process to retransmit packets from the requestor device to the responder device.

15. The storage medium of claim 14 , wherein the requestor device and the responder device are remote direct memory access (RDMA) nodes.

16. The storage medium of claim 15 , wherein the RDMA nodes are configured to process InfiniB and packets.

17. The storage medium of claim 16 , wherein the LRCETH is included in an extended header (ETH) of each InfiniB and packet.

18. The storage medium of claim 17 , wherein the LRCETH includes an acknowledgement sequence number indicating an amount of in order data that was received by a queue pair (QP).

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2015
From: GALON, YOAV; SHALOM, RAFI; RADZI, AMIT
To: QLOGIC CORPORATION
Reel/Frame 035216/0853 →
Continuity (1)
Provisional Application 62023088 · Jul 10, 2014