IP Library Granted Patent US 10,425,344
Granted Patent B2
US 10,425,344 · App. 14/975,705 · Granted Sep 24, 2019

Avoiding dropped data packets on a network transmission

Inventors: Taufik Tuan Ma (Portland, OR); Mark J. Karnowski (Huntington Beach, CA); Brandon Hoff (Cherry Hills Village, CO)
Assignee: Avago Technologies International Sales Pte. Limited
H04L47/25H04L5/0055H04L47/11H04L47/12H04L47/30H04L1/0002H04L1/1671
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,425,344
App. No.
14/975,705
Granted
Sep 24, 2019
Kind
B2
Abstract

A method, system, and apparatus are provided to avoid dropping data packets between computers coupled on a network. In one example, the system receives a plurality of data packets from one or more sending servers into a receive queue of a first network interface device (e.g., Fiber Channel host bus adapter) in a receiving server. The receive queue includes addresses to data buffers to store a predetermined number of data packets. The system monitors the number of data packets stored in the data buffers waiting for read out by a software application. The system detects a potential overflow of the receive queue in response to a number of unused data buffers of the receive queue. In response to detecting the potential overflow, the system performs preemptive actions to avoid dropping at least one of the plurality of data packets.

Claims (66)

1. A method to avoid dropping data packets between computers in communication together over a network, the method comprising:

receiving a plurality of data packets from one or more sending servers into a receive queue for a first network interface device of a receiving server, wherein the receive queue includes addresses to data buffers to store a predetermined number of data packets;

monitoring the number of data packets stored in the data buffers waiting for read out by a software application;

detecting a potential overflow of the receive queue in response to a number of unused data buffers of the receive queue dropping to a threshold level of unused data buffers, wherein the threshold level comprises a non-zero number of unused data buffers; and

in response to detecting the potential overflow, performing preemptive actions to avoid dropping at least one of the plurality of data packets, the preemptive actions comprising:

setting an explicit congestion notification (“ECN”) echo bit in an acknowledgement (“ACK”) packet; and

sending the ACK packet to a sending server to cause the sending server to reduce a transmit rate of data packets.

2. The method of claim 1 , wherein the preemptive actions further comprise:

prior to setting the ECN bit in the ACK packet, identifying the sending server by determining which sending server of the one or more sending servers has a greater number of congested queues.

3. The method of claim 2 , wherein the preemptive actions further comprise:

prioritizing the one or more sending servers.

4. The method of claim 1 , wherein the preemptive actions further comprise:

receiving an ECN from a network switch on the network;

detecting an end of an acknowledgement window according to transfer control protocol/Internet protocol (TCP/IP);

detecting the receive queue still has the potential overflow; and

in response to detecting the queue still has the potential overflow, sending another ACK packet to the sending server to cause the sending server to further reduce the transmit rate of data packets.

5. The method of claim 1 , wherein in response to receiving the ACK packet, the sending server reduces the transmit rate by reducing a size of a transmission window of a transmit queue including a number of data packets that are set to be transmitted to the receiving server.

6. The method of claim 1 , wherein the preemptive actions further comprise:

allocating more addresses to more buffers for the queue to enable the software application to store more data packets.

7. The method of claim 1 , wherein the preemptive actions further comprise:

allocating more processor resources to process the plurality of data packets for the software application at a higher rate.

8. The method of claim 1 , wherein the threshold level indicates data packets for the software application are not being processed fast enough.

9. A system for avoiding dropping data packets between computers in communication together over a network, the system comprising:

a processor to execute instructions; and

a storage device coupled to the processor, the storage storing instructions for execution by the processor to cause the processor to perform:

receiving a plurality of data packets from one or more sending servers into a receive queue for a first network interface device of a receiving server, wherein the receive queue includes addresses to data buffers to store a predetermined number of data packets;

monitoring the number of data packets stored in the data buffers waiting for read out by a software application;

detecting a potential overflow of the receive queue in response to a number of unused data buffers associated with the received queue dropping to a threshold level of unused data buffers, wherein the threshold level comprises a non-zero number of unused data buffers; and

in response to detecting the potential overflow, performing preemptive actions to avoid dropping at least one of the plurality of data packets, the preemptive actions comprising:

setting an explicit congestion notification (“ECN”) echo bit in an acknowledgement (“ACK”) packet; and

sending the ACK packet to a sending server to cause the sending server to reduce a transmit rate of data packets.

10. The system of claim 9 , wherein the preemptive actions further comprise:

prior to setting the ECN bit in the ACK packet, identifying the sending server by determining which sending server of the one or more sending servers has a greater number of congested queues.

11. The system of claim 10 , wherein the preemptive actions comprise:

prioritizing the one or more sending servers.

12. The system of claim 9 , wherein the preemptive actions further comprise:

receiving an explicit congestion notification from a network switch on the network;

detecting an end of an acknowledgement window according to transfer control protocol/Internet protocol (TCP/IP);

detecting the receive queue still has the potential overflow; and

in response to detecting the receive queue still has the potential overflow, sending another acknowledgement (ACK) packet to the sending server to cause the sending server to further reduce the transmit rate of data packets.

13. The system of claim 9 , wherein in response to receiving the acknowledgement (ACK) packet, the sending server reduces the transmit rate by reducing a size of a transmission window including a number of data packets that are set to be transmitted to the receiving server.

14. The system of claim 9 , wherein the preemptive actions comprise:

allocating more addresses to more buffers for the receive queue to enable the software application to store more data packets.

15. The system of claim 9 , wherein the preemptive actions comprise:

allocating more processor resources to process the plurality of data packets for the software application at a higher rate.

16. A computer-readable product for avoiding dropping data packets between computers in communication together over a network, the computer-readable product including a non-transitory computer-readable storage medium storing instructions comprising:

receiving a plurality of data packets from one or more sending servers into a receive queue for a first network interface device of a receiving server, wherein the receive queue includes addresses to data buffers to store a predetermined number of data packets;

monitoring the number of data packets stored in the data buffers waiting for read out by a software application;

detecting a potential overflow of the receive queue in response to a number of unused data buffers of the queue dropping to a threshold level of unused data buffers, wherein the threshold level comprises a non-zero number of unused data buffers; and

in response to detecting the potential overflow, performing preemptive actions to avoid dropping at least one of the plurality of data packets, the preemptive actions comprising:

setting an explicit congestion notification (“ECN”) echo bit in an acknowledgement (“ACK”) packet; and

sending the ACK packet to a sending server to cause the sending server to reduce a transmit rate of data packets.

17. The computer-readable product of claim 16 , wherein the preemptive actions further comprise:

prior to setting the ECN bit in the ACK packet, identifying the sending server by determining which sending server of the one or more sending servers has a greater number of congested queues.

18. The computer-readable product of claim 17 , wherein the preemptive actions further comprise:

prioritizing the one or more sending servers.

19. The computer-readable product of claim 16 , wherein the preemptive actions further comprise:

receiving an explicit congestion notification from a network switch on the network;

detecting an end of an acknowledgement window according to transfer control protocol/Internet protocol (TCP/IP);

detecting the receive queue still has the potential overflow; and

in response to detecting the receive queue still has the potential overflow, sending another acknowledgement (ACK) packet to the sending server to cause the sending server to reduce a transmit rate of data packets.

20. The computer-readable product of claim 16 , wherein in response to receiving the acknowledgement (ACK) packet, the sending server reduces the transmit rate by reducing a size of a transmission window of a transmit queue including a number of data packets that are set to be transmitted to the receiving server.

21. The computer-readable product of claim 16 , wherein the preemptive actions further comprise:

allocating more addresses to more buffers for the queue to enable the software application to store more data packets.

22. The computer-readable product of claim 16 , wherein the preemptive actions further comprise:

allocating more processor resources to process the plurality of data packets for the software application at a higher rate.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE OF THE MERGER AND APPLICATION NOS. 13/237,550 AND 16/103,107 FROM THE MERGER PREVIOUSLY RECORDED ON REEL 047231 FRAME 0369. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 8, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048549/0113 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2019
From: KARNOWSKI, MARK J.; HOFF, BRANDON
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 047921/0023 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047231/0369 →
Continuity (1)
Related Publication 20170180261A1 · Jun 22, 2017