IP Library Granted Patent US 12,143,217
Granted Patent B2
US 12,143,217 · App. 18/109,802 · Granted Nov 12, 2024

Dynamic management of packet loss

Inventors: Subramanian Varadarajan (Los Gatos, CA); Rosarin Roy Antonyraj (Sunnyvale, CA); Kumaravel Senthivel (San Jose, CA)
Assignee: Palo Alto Networks, Inc.
H04L1/1621H04L1/0009H04L1/08H04L1/1825H04L1/189H04L43/0829H04L43/16H04L1/1809
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 12,143,217
App. No.
18/109,802
Granted
Nov 12, 2024
Kind
B2
Abstract

Exemplary methods, apparatuses, and systems include duplicating a packet within a plurality of packets to be transmitted to a destination computing node as a sequence of packets. The plurality of packets including the duplicate of the packet are transmitted to the destination computing node. Upon receiving a first acknowledgement of the packet from the destination computing node, it is determined that the first acknowledgment is directed to a duplicated packet. In response to determining that the first acknowledgment is directed to a duplicated packet, it is determined that a second acknowledgement has yet to be received for each of one or more packets within the plurality of packets transmitted prior to the packet. In response to determining that the second acknowledgement has yet to be received, the one or more packets are retransmitted to the destination computing node.

Claims (50)

1. A computer-implemented method, comprising:

determining an amount of packet loss in transmitting packets to a destination computing node;

determining, based on the amount of packet loss, a duplication pattern for a plurality of packets to be transmitted to the destination computing node as a sequence of packets;

duplicating a first packet within the plurality of packets according to the duplication pattern, including generating one or more duplicates of the first packet and spacing the one or more duplicates within the plurality of packets according to a spacing between the one or more duplicates of the first packet such that the one or more duplicates are distributed throughout the sequence of packets;

transmitting the plurality of packets including the one or more duplicates of the first packet to the destination computing node;

receiving a first acknowledgement from the destination computing node; and

in accordance with a determination that the first acknowledgement is directed to a duplicate of the first packet:

in accordance with a determination that a second acknowledgement has yet to be received for a first one or more packets within the plurality of packets transmitted prior to the duplicate of the first packet, retransmitting at least one packet of the first one or more packets to the destination computing node.

2. The computer-implemented method of claim 1 , further comprising calculating a number of candidate packets as a predetermined percentage of the amount of packet loss.

3. The computer-implemented method of claim 2 , further comprising, in accordance with a determination that the amount of packet loss is more than a predetermined threshold, capping the number of candidate packets at a predetermined maximum value.

4. The computer-implemented method of claim 1 , further comprising determining a non-zero spacing between the one or more duplicates based on a predetermined minimum number of non-duplicated packets to be transmitted between duplicated packets.

5. The computer-implemented method of claim 1 , further comprising duplicating the first packet after the sequence of packets.

6. The computer-implemented method of claim 1 , wherein the duplication pattern further includes a respective number of duplicates of each of candidate packet that is duplicated.

7. The computer-implemented method of claim 1 , further comprising:

subsequent to retransmitting the first one or more packets to the destination computing node, determining a second amount of packet loss in transmitting the plurality of packets including the one or more duplicates of the first packet to the destination computing node;

determining, based on the second amount of packet loss, a second duplication pattern for a second plurality of packets to be transmitted to the destination computing node as a second sequence of packets, wherein the second duplication pattern includes (i) a second number of candidate packets of the second sequence of packets to be duplicated, (ii) a second number of duplicates of each of the second number of candidate packets, and (iii) a second non-zero spacing between duplicates of each of the second number of candidate packets;

duplicating a second packet within the second plurality of packets according to the second duplication pattern, including generating one or more duplicates of the second packet and spacing the one or more duplicates within the plurality of packets according to the second non- zero spacing; and

transmitting the second plurality of packets including the one or more duplicates of the second packet to the destination computing node.

8. A non-transitory computer-readable medium storing instructions, which when executed by a processing device, cause the processing device to perform a method comprising:

determining an amount of packet loss in transmitting packets to a destination computing node;

duplicating a first packet within a plurality of packets to be transmitted to the destination computing node as a sequence of packets, based on the amount of packet loss, including generating one or more duplicates of the first packet and spacing the one or more duplicates within the plurality of packets according to a non-zero spacing;

transmitting the plurality of packets including the one or more duplicates of the first packet to the destination computing node;

receiving a first acknowledgement from the destination computing node; and

in accordance with a determination that the first acknowledgement is directed to a duplicate of the first packet:

in accordance with a determination that a second acknowledgement has yet to be received a first one or more packets within the plurality of packets transmitted prior to the duplicate of the first packet, retransmitting at least one packet of the first one or more packets to the destination computing node.

9. The non-transitory computer-readable medium of claim 8 , further comprising calculating a number of candidate packets to duplicate as a predetermined percentage of the amount of packet loss.

10. The non-transitory computer-readable medium of claim 9 , further comprising, in accordance with a determination that the amount of packet loss is more than a predetermined threshold, capping the number of candidate packets at a predetermined maximum value.

11. The non-transitory computer-readable medium of claim 8 , further comprising determining the non-zero spacing based on a predetermined minimum number of non-duplicated packets to be transmitted between duplicated packets.

12. The non-transitory computer-readable medium of claim 8 , further comprising duplicating the first packet after the sequence of packets.

13. The non-transitory computer-readable medium of claim 8 , wherein duplicating the first packet within the plurality of packets is further based on a duplication pattern that includes a respective number of the duplicates of each candidate packet that is duplicated.

14. The non-transitory computer-readable medium of claim 8 , further comprising:

subsequent to retransmitting the first one or more packets to the destination computing node, determining a second amount of packet loss in transmitting the plurality of packets including the one or more duplicates of the first packet to the destination computing node;

determining, based on the second amount of packet loss, a second duplication pattern for a second plurality of packets to be transmitted to the destination computing node as a second sequence of packets, wherein the second duplication pattern includes (i) a second number of candidate packets of the second sequence of packets to be duplicated, (ii) a second number of duplicates of each of the second number of candidate packets, and (iii) a second non-zero spacing between duplicates of each of the second number of candidate packets;

duplicating a second packet within the second plurality of packets according to the second duplication pattern, including generating one or more duplicates of the second packet and spacing the one or more duplicates within the second plurality of packets according to the second non-zero spacing; and

transmitting the second plurality of packets including the one or more duplicates of the second packet to the destination computing node.

15. An apparatus comprising:

a processing device; and

a memory coupled to the processing device, the memory storing instructions which, when executed by the processing device, cause the apparatus to:

determine an amount of packet loss in transmitting packets to a destination computing node;

determine, based on the amount of packet loss, a duplication pattern for a plurality of packets to be transmitted to the destination computing node as a sequence of packets, wherein the duplication pattern includes a non-zero spacing between duplicates;

duplicate a first packet within the plurality of packets according to the duplication pattern, including generating one or more duplicates of the first packet and spacing the one or more duplicates within the plurality of packets according to the non-zero spacing;

transmit the plurality of packets including the one or more duplicates of the first packet to the destination computing node;

receive a first acknowledgement from the destination computing node; and

in accordance with a determination that the first acknowledgement is directed to a duplicate of the first packet:

in accordance with a determination that a second acknowledgement has yet to be received for a first one or more packets within the plurality of packets transmitted prior to the duplicate of the first packet, retransmit at least one packet of the first one or more packets to the destination computing node.

16. The apparatus of claim 15 , wherein a number of candidate packets to duplicate is calculated as a predetermined percentage of the amount of packet loss.

17. The apparatus of claim 16 , wherein, in accordance with a determination that the amount of packet loss is more than a predetermined threshold, the number of candidate packets is capped at a predetermined maximum value.

18. The apparatus of claim 15 , wherein the non-zero spacing is calculated based on a predetermined minimum number of non-duplicated packets to be transmitted between duplicated packets.

19. The apparatus of claim 15 , wherein the first packet is duplicated after the sequence of packets.

20. The apparatus of claim 15 , wherein the duplication pattern further includes a respective number of duplicates of each candidate packet that is duplicated.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY DATA PREVIOUSLY RECORDED ON REEL 063900 FRAME 0586. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Aug 14, 2023
From: ZYCADA NETWORKS, INC.
To: PALO ALTO NETWORKS, INC.
Reel/Frame 064585/0057 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2023
From: ZYCADA NETWORKS, INC.,
To: ZYCADA NETWORKS, INC.; PALO ALTO NETWORKS, INC.
Reel/Frame 063900/0586 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2023
From: VARADARAJAN, SUBRAMANIAN; ANTONYRAJ, ROSARIN ROY; SENTHIVEL, KUMARAVEL
To: ZYCADA NETWORKS, INC.
Reel/Frame 062802/0981 →
Continuity (4)
Continuation 17534367 · Nov 23, 2021
Continuation 16459477 · Jul 1, 2019
Continuation 15602023 · May 22, 2017
Related Publication 20240056224A1 · Feb 15, 2024