IP Library Granted Patent US 9,961,024
Granted Patent B2
US 9,961,024 · App. 15/400,499 · Granted May 1, 2018

Enhanced acknowledgement handling in communication packet transfer

Inventor: Artur Bergman (San Francisco, CA)
Assignee: Fastly, Inc.
H04L49/9094G06F13/385H04L1/1607H04L1/188
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,961,024
App. No.
15/400,499
Granted
May 1, 2018
Kind
B2
Abstract

Described herein are methods, systems, and software for handling packet buffering between end users and content servers, such as content delivery nodes. In one example, a method of operating a content server includes generating first and second data packets for first and second content requests. Once generated, the method provides storing the first packets in a packet buffer and transferring the first packets to a first user device. Upon transfer, the first packets are deleted from the packet buffer and replaced with the second packets.

Claims (64)

1. A method of operating a content delivery node, the method comprising:

identifying a first content request from a first end user device for first data;

identifying a second content request from a second end user device for second data;

generating first packets comprising the first data for the first content request;

storing the first packets in a packet buffer of the content delivery node;

transferring the first packets from the packet buffer to the first end user device and deleting the first packets from the packet buffer without regard to receiving a packet acknowledgment from the first end user device;

generating second packets comprising the second data for the second content request;

in response to deleting the first packets, storing the second packets in the packet buffer;

transferring the second packets from the packet buffer to the second end user device;

deleting the second packets from the packet buffer without regard to receiving a packet acknowledgment from the second end user device;

identifying that the packet acknowledgment is not received from the second end user device;

in response to identifying that the packet acknowledgment is not received, regenerating the second packets and storing the regenerated second packets in the packet buffer;

responsive to storing the regenerated second packets in the packet buffer, transferring the regenerated second packets to the second end user device and deleting the regenerated second packets from the packet buffer.

2. The method of claim 1 wherein identifying that the packet acknowledgment is not received from the second end user device comprises identifying a timeout for receiving the packet acknowledgment from the second end user device.

3. The method of claim 1 further comprising:

monitoring for the packet acknowledgments from the first end user device;

receiving the packet acknowledgment from the first end user device; and

completing transfer of the first packets based on the packet acknowledgment.

4. The method of claim 3 wherein completing transfer of the first packets comprises terminating monitoring for the packet acknowledgment from the first end user device.

5. The method of claim 1 further comprising:

identifying that the packet acknowledgment is not received from the first end user device;

in response to identifying that the packet acknowledgment is not received, regenerating the first packets and storing the first packets in the packet buffer; and

responsive to storing the first packets in the packet buffer, transferring the first packets to the first end user device and deleting the first packets from the packet buffer.

6. The method of claim 5 wherein identifying that the packet acknowledgment is not received from the first end user device comprises identifying a timeout for receiving the packet acknowledgement from the first end user device.

7. The method of claim 1 wherein generating the second packets occurs subsequently to generating the first packets.

8. A computer apparatus to operate a content delivery node, the computer apparatus comprising:

processing instructions that, when executed by the content delivery node, direct the content delivery node to:

identify a first content request from a first end user device for first data cached by the content delivery node in memory;

identify a second content request from a second end user device for second data cached by the content delivery node in memory;

generate first packets comprising the first data for the first content request;

store the first packets in a packet buffer of the content delivery node;

transfer the first packets to the first end user device from the packet buffer and delete the first packets from the packet buffer without regard to receiving a packet acknowledgment from the first end user device;

generate second packets comprising the second data for the second content request; and

in response to deleting the first packets, store the second packets in the packet buffer;

transfer the second packets to the second end user device from the packet buffer;

delete the second packets from the packet buffer without regard to receiving a packet acknowledgment from the second end user device;

identify that the packet acknowledgment is not received from the second end user device;

in response to identifying that the packet acknowledgment is not received, regenerate the second packets and store the regenerated second packets in the packet buffer; and

responsive to storing the regenerated second packets in the packet buffer, transfer the regenerated second packets to the second end user device and delete the regenerated second packets from the packet buffer; and

one or more non-transitory computer readable media that store the processing instructions.

9. The computer apparatus of claim 8 wherein the processing instructions to identify that the packet acknowledgment is not received from the second end user device direct the content delivery node to identify a timeout for receiving the packet acknowledgment from the second end user device.

10. The computer apparatus of claim 8 wherein the processing instructions further direct the content delivery node to:

monitor for the packet acknowledgments from the first end user device;

receive the packet acknowledgment from the first end user device; and

complete transfer of the first packets based on the packet acknowledgment.

11. The computer apparatus of claim 10 wherein the processing instructions to complete transfer of the first packets based on the packet acknowledgment direct the content delivery node to terminate monitoring for the packet acknowledgment from the first end user device.

12. The computer apparatus of claim 8 wherein the processing instructions further direct the content delivery node to:

identify that the packet acknowledgment is not received from the first end user device;

in response to identifying that the packet acknowledgment is not received, regenerate the first packets and store the first packets in the packet buffer; and

responsive to storing the first packets in the packet buffer, transfer the first packets to the first end user device and delete the first packets from the packet buffer.

13. The computer apparatus of claim 12 wherein the processing instructions to identify that the packet acknowledgment is not received from the first end user device direct the content delivery node to identify a timeout for receiving the packet acknowledgment from the first end user device.

14. The computer apparatus of claim 8 wherein the processing instructions to generate the second packets direct the content delivery node to generate the second packets concurrently with generating the first packets.

15. A method of operating a content server to facilitate content requests, the method comprising:

identifying a first content request from a first end user device for first data originating from an origin server;

identifying a second content request from a second end user device for second data originating from the origin server;

generating first packets comprising the first data for the first content request and second packets comprising the second data for the second content request;

storing the first packets in a packet buffer of the content server;

transferring the first packets from the packet buffer to the first user device and deleting the first packets from the packet buffer without regard to receiving a packet acknowledgment from the first end user device;

in response to deleting the first packets, storing the second packets in the packet buffer;

transferring the second packets from the packet buffer to the second end user device;

deleting the second packets from the packet buffer without regard to receiving a packet acknowledgment from the second end user device;

identifying that the packet acknowledgment is not received from the second end user device;

in response to identifying that the packet acknowledgment is not received, regenerating the second packets and storing the regenerated second packets in the packet buffer;

responsive to storing the regenerated second packets in the packet buffer, transferring the regenerated second packets to the second end user device and deleting the regenerated second packets from the packet buffer.

Assignments (2)
SECURITY INTEREST Recorded Feb 17, 2021
From: FASTLY, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AND COLLATERAL AGENT
Reel/Frame 055316/0616 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2017
From: BERGMAN, ARTUR
To: FASTLY, INC.
Reel/Frame 040904/0367 →
Continuity (3)
Continuation 14349934
Provisional Application 61769364 · Feb 26, 2013
Related Publication 20170118144A1 · Apr 27, 2017