IP Library Granted Patent US 9,571,407
Granted Patent B2
US 9,571,407 · App. 14/566,071 · Granted Feb 14, 2017

Strategically scheduling TCP stream transmissions

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,571,407
App. No.
14/566,071
Granted
Feb 14, 2017
Kind
B2
Abstract

Provided are methods, systems and computer program products for improving TCP stream transmissions by establishing a transmission schedule and making modifications to the timing and/or rate at which data packets are transmitted based on a timing of acknowledgment signals received in response to transmitted data packets.

Claims (85)

1. A system for delivering content objects from a content delivery network to client systems over an Internet, comprising:

a server, wherein the server is configured to:

receive requests to deliver content objects to client systems, wherein:

the requests are from client systems;

the server is one of a plurality of servers in a point of presence of a content delivery network;

the content delivery network includes a plurality of points of presence distributed geographically; and

the content delivery network delivers content over the Internet to client systems;

a cache for storing a schedule of timing and rates of transmissions of packets of data including portions of requested content objects, wherein

the schedule includes an initial packet transfer rate;

the server being further configured to:

determine the schedule;

transmit a first plurality of packets of data according to the schedule, wherein:

portions of requested content objects are distributed among the first plurality of packets of data;

receive acknowledgment signals in response to packets of data of the first plurality of packets of data;

determine changes to the schedule based on a timing of receipt of the acknowledgement signals in response to packets of data of the first plurality of packets of data, wherein:

a time difference between receipt of consecutive acknowledgment signals in response to packets of data of the first plurality of packets of data is used to determine an updated packet transfer rate; and

changes to the schedule are made using the updated packet transfer rate; and

transmit a second plurality of packets of data according to the schedule, wherein:

portions of requested content objects are distributed among the second plurality of packets of data.

2. The system of claim 1 , wherein the server is further configured to:

transmit a third plurality of packets of data at a rate faster than the updated packet transfer rate, wherein portions of requested content objects are distributed among the third plurality of packets of data;

receive acknowledgment signals in response to packets of data of the third plurality of packets of data;

determine changes to the schedule based on a timing of receipt of the acknowledgment signals in response to packets of data of the third plurality of packets of data, wherein:

a time difference between receipt of consecutive acknowledgment signals in response to packets of data of the third plurality of packets of data is used to determine a further updated packet transfer rate; and

changes to the schedule are made using the further updated packet transfer rate; and

transmit a fourth plurality of packets of data according to the schedule, wherein portions of requested content objects are distributed among the fourth plurality of packets of data.

3. The system of claim 1 , wherein the server is further configured to:

receive requests to deliver content objects to a plurality of client systems having a common network subnet; and

use the schedule for transmitting packets of data for requested content to the plurality of client systems.

4. The system of claim 1 , wherein a plurality of time differences between receipt of consecutive acknowledgment signals in response to packets of data of the first plurality of packets of data are used in a statistical analysis to determine the updated packet transfer rate.

5. The system of claim 1 , wherein the server is configured to determine the schedule by receiving application level information from a client system and selecting the initial packet transfer rate based on the application level information.

6. The system of claim 5 , wherein the application level information includes a client application User-Agent or a content type or content length of the content objects.

7. The system of claim 1 , wherein the server is configured to determine the schedule by receiving Internet address geolocation or provider information or Internet address network characteristics and selecting the initial packet transfer rate based on the Internet address geolocation or provider information or Internet address network characteristics.

8. The system of claim 7 , wherein the Internet address geolocation or provider information or Internet address network characteristics identifies a client wireless network connection and wherein the initial packet transfer rate is selected to match characteristics of a wireless network connection to the client system.

9. The system of claim 7 , wherein changes to the schedule are determined using a sensitivity factor that is dependent upon the Internet address geolocation or provider information or the Internet address network characteristics.

10. The system of claim 1 , wherein the server is configured to determine the schedule using one or more of a time of day, a day of week, historical network congestion information, historical client network characteristics or historical client system Internet service provider characteristics.

11. A method for delivering content objects from a content delivery network to client systems over an Internet, the method comprising:

receiving a request to deliver one or more content objects to a client system, wherein:

the request is received at a server;

the request is received from the client system;

the server is one of a plurality of servers in a point of presence of a content delivery network;

the content delivery network includes a plurality of points of presence distributed geographically; and

the content delivery network delivers content over the Internet to client systems;

determining a schedule for transmitting packets of data including portions of the one or more content objects, wherein:

the schedule includes an initial packet transfer rate;

transmitting a first plurality of packets of data according to the schedule, wherein:

portions of the one or more content objects are distributed among the first plurality of packets of data;

receiving acknowledgment signals in response to packets of data of the first plurality of packets of data;

determining changes to the schedule based on a timing of receipt of the acknowledgment signals in response to packets of data of the first plurality of packets of data, wherein:

a time difference between receipt of consecutive acknowledgment signals in response to packets of data of the first plurality of packets of data is used to determine an updated packet transfer rate; and

changes to the schedule are made using the updated packet transfer rate; and

transmitting a second plurality of packets of data according to the schedule, wherein:

portions of the one or more content objects are distributed among the second plurality of packets of data.

12. The method of claim 11 , further comprising:

transmitting a third plurality of packets of data at a rate faster than the updated packet transfer rate, wherein portions of the one or more content objects are distributed among the third plurality of packets of data;

receiving acknowledgment signals in response to packets of data of the third plurality of packets of data;

determining changes to the schedule based on a timing of receipt of the acknowledgment signals in response to packets of data of the third plurality of packets of data, wherein:

a time difference between receipt of consecutive acknowledgment signals in response to packets of data of the third plurality of packets of data is used to determine a further updated packet transfer rate; and

changes to the schedule are made using the further updated packet transfer rate; and

transmitting a fourth plurality of packets of data according to the schedule, wherein portions of the one or more content objects are distributed among the fourth plurality of packets of data.

13. The method of claim 11 , wherein the client system is a first client system, the method further comprising:

receiving a second request to deliver one or more additional content objects to a second client system, wherein:

the second request is received at the server;

the request is received from the second client system;

the second client system is on a same network subnet as the first client system;

transmitting a third plurality of packets of data to the second client system according to the schedule, wherein:

the schedule includes the updated packet transfer rate;

portions of the one or more additional content objects are distributed among the third plurality of packets of data.

14. The method of claim 11 , wherein a plurality of time differences between receipt of consecutive acknowledgment signals in response to packets of data of the first plurality of packets of data are used in a statistical analysis to determine the updated packet transfer rate.

15. The method of claim 11 , wherein determining the schedule includes receiving application level information from the client system and selecting the initial packet transfer rate based on the application level information.

16. The method of claim 15 , wherein the application level information includes a client application User-Agent or a content type or content length of the one or more content objects.

17. The method of claim 11 , wherein determining the schedule includes receiving Internet address geolocation or provider information or Internet address network characteristics and selecting the initial packet transfer rate based on the Internet address geolocation or provider information or Internet address network characteristics.

18. The method of claim 17 , wherein the Internet address geolocation or provider information or Internet address network characteristics identifies a client wireless network connection and wherein the initial packet transfer rate is selected to match characteristics of a wireless network connection to the client system.

19. The method of claim 11 , wherein determining the schedule includes using one or more of a time of day, a day of week, historical network congestion information, historical client network characteristics or historical client system Internet service provider characteristics.

20. A computer-program product tangibly embodied in a non-transitory machine-readable storage medium, comprising instructions that, when executed by one or more processors in a computing device, cause the computing device to:

receive requests to deliver content objects to client systems;

determine a schedule of timing and rates of transmissions of packets of data including portions of requested content objects;

transmit a first plurality of packets of data according to the schedule, wherein:

portions of requested content objects are distributed among the first plurality of packets of data;

receive acknowledgment signals in response to packets of data of the first plurality of packets of data;

determine changes to the schedule based on a timing of receipt of the acknowledgement signals in response to packets of data of the first plurality of packets of data, wherein:

a time difference between receipt of consecutive acknowledgment signals in response to packets of data of the first plurality of packets of data is used to determine an updated packet transfer rate; and

changes to the schedule are made using the updated packet transfer rate; and

transmit a second plurality of packets of data according to the schedule, wherein:

portions of requested content objects are distributed among the second plurality of packets of data.

Assignments (9)
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 065597/0406] Recorded Jul 9, 2025
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
To: UPLYNK, INC. (F/K/A EDGIO, INC.)
Reel/Frame 071875/0105 →
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 065597/0212] Recorded Jul 3, 2025
From: LYNROCK LAKE MASTER FUND LP
To: UPLYNK, INC. (F/K/A EDGIO, INC.); MOJO MERGER SUB, LLC
Reel/Frame 071817/0877 →
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 068763/0276] Recorded Jul 3, 2025
From: LYNROCK LAKE MASTER FUND LP
To: UPLYNK, INC. (F/K/A EDGIO, INC.); MOJO MERGER SUB, LLC
Reel/Frame 071818/0022 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2025
From: EDGIO, INC.
To: DRNC HOLDINGS, INC.
Reel/Frame 070071/0327 →
CHANGE OF NAME Recorded Sep 9, 2024
From: LIMELIGHT NETWORKS, INC.
To: EDGIO, INC.
Reel/Frame 068898/0281 →
PATENT SECURITY AGREEMENT Recorded Aug 23, 2024
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: LYNROCK LAKE MASTER FUND LP [LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER]
Reel/Frame 068763/0276 →
PATENT SECURITY AGREEMENT Recorded Nov 15, 2023
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: LYNROCK LAKE MASTER FUND LP [LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER]
Reel/Frame 065597/0212 →
PATENT SECURITY AGREEMENT Recorded Nov 15, 2023
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
Reel/Frame 065597/0406 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2014
From: HARVELL, BRADLEY B.
To: LIMELIGHT NETWORKS, INC.
Reel/Frame 034590/0791 →