IP Library Granted Patent US 10,798,199
Granted Patent B2
US 10,798,199 · App. 15/872,971 · Granted Oct 6, 2020

Network traffic accelerator

Inventors: Kartikeya Chandrayana (San Francisco, CA); Satish Raghunath (Sunnyvale, CA); Radha Krishna Pagadala (Sunnyvale, CA); Shauli Gal (Mountain View, CA); Maria Garcia Cerdeno (San Jose, CA); Russell Larsen (Santa Clara, CA)
Assignee: Twin Prime, Inc.
H04L67/28H04L67/02H04L69/16H04L43/0835H04L43/0852
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,798,199
App. No.
15/872,971
Granted
Oct 6, 2020
Kind
B2
Abstract

A system for improving network data communications performance between end-user devices and content origin servers. A plurality of accelerators are distributed across a network and communicate with end-user devices and content origin servers. Software development kits installed on end-user devices monitor control channel data traffic between the end-user devices and accelerators. Various data traffic efficiency approaches are implemented by the software development kits on the end-user devices and the plurality of accelerators resulting in improved data communications links between the end-user devices and the content origin servers.

Claims (61)

1. A method, comprising:

determining that a first proxy server, among a plurality of proxy servers, is closer than other proxy servers in the plurality of proxy servers to a particular content origin server;

receiving, by a second proxy server, among the plurality of proxy servers, a request from a user device for content from the particular content origin server, wherein the user device establishes a data connection for the request with the second proxy server via a control channel, the second proxy server is in a geographical area different than the first proxy server;

establishing, by the first proxy server, a connection with the particular content origin server; and

creating a persistent connection between the first proxy server and the second proxy server, wherein communications between the user device and the particular content origin server are routed through the persistent connection, wherein a set of persistent connections that have been created across geographies between proxy servers in the plurality of proxy servers form a dynamic overlay network.

2. The method of claim 1 , wherein the first proxy server is selected using a geo-IP mapping of an IP address of the particular content origin server.

3. The method of claim 1 , wherein the first proxy server is selected using a latency measurement between the first proxy server and the particular content origin server.

4. The method of claim 1 , further comprising:

selecting a peer proxy server among the plurality of proxy servers by using a geo-IP mapping of an IP address of the particular content origin server;

routing the request from the user device to the particular content origin server via a connection between the second proxy server and the peer proxy server;

wherein the determining that the first proxy server is closest to the particular content origin server further comprises:

determining that the first proxy server is closer to the particular content origin server than other proxy servers among the plurality of proxy servers using a latency measurement;

wherein the communications between the user device and the particular content origin server are routed through the persistent connection thereby replacing the connection between the second proxy server and the peer proxy server.

5. The method of claim 1 , further comprising:

assigning an expiration time to the persistent connection.

6. The method of claim 1 , further comprising:

assigning an expiration time to the persistent connection;

upon reaching the expiration time of the persistent connection, determining whether a third proxy server is closer to the particular content origin server than the first proxy server.

7. The method of claim 1 , further comprising:

assigning an expiration time to the persistent connection;

upon reaching the expiration time of the persistent connection, discontinuing the persistent connection between the second proxy server and the first proxy server based on a determination that no outstanding requests exist from the user device to the particular content origin server.

8. The method of claim 1 , further comprising:

wherein the second proxy server sends a URL to the first proxy server;

extracting, by the first proxy server, an address of the particular content origin server from the URL, the first proxy server uses the address to establish the connection with the particular content origin server.

9. The method of claim 1 , further comprising:

recording, by the second proxy server, a range of sequence numbers contained in each segment of data being transmitted to the first proxy server and a timestamp associated with each segment;

receiving, by the second proxy server, an indication from the first proxy server indicating that a portion of or all of a segment was not received;

recording, by the second proxy server, a timestamp associated with the indication;

retransmitting, by the second proxy server, the portion of or all of the segment that was not received;

upon receiving, by the second proxy server, a subsequent indication that the portion of or all of the segment was received by the first proxy server:

determining, by the second proxy server, a number of segments that were lost using the sequence numbers and recorded timestamps; and

calculating, by the second proxy server, a loss rate using a total number of segments transmitted and the number of segments that were lost.

10. One or more non-transitory computer-readable storage media, storing instructions which, when executed by one or more processors, cause performance of, comprising:

determining that a first proxy server, among a plurality of proxy servers, is closer than other proxy servers in the plurality of proxy servers to a particular content origin server;

receiving, by a second proxy server, among the plurality of proxy servers, a request from a user device for content from the particular content origin server, wherein the user device establishes a data connection for the request with the second proxy server via a control channel, the second proxy server is in a geographical area different than the first proxy server;

establishing, by the first proxy server, a connection with the particular content origin server; and

creating a persistent connection between the first proxy server and the second proxy server, wherein communications between the user device and the particular content origin server are routed through the persistent connection, wherein a set of persistent connections that have been created across geographies between proxy servers in the plurality of proxy servers form a dynamic overlay network.

11. The one or more non-transitory computer-readable storage media of claim 10 , wherein the first proxy server is selected using a geo-IP mapping of an IP address of the particular content origin server.

12. The one or more non-transitory computer-readable storage media of claim 10 , wherein the first proxy server is selected using a latency measurement between the first proxy server and the particular content origin server.

13. The one or more non-transitory computer-readable storage media of claim 10 , wherein the instructions which, when executed by the one or more processors, further cause performance of:

selecting a peer proxy server among the plurality of proxy servers by using a geo-IP mapping of an IP address of the particular content origin server;

routing the request from the user device to the particular content origin server via a connection between the second proxy server and the peer proxy server;

wherein the determining that the first proxy server is closest to the particular content origin server further comprises:

determining that the first proxy server is closer to the particular content origin server than other proxy servers among the plurality of proxy servers using a latency measurement;

wherein the communications between the user device and the particular content origin server are routed through the persistent connection thereby replacing the connection between the second proxy server and the peer proxy server.

14. The one or more non-transitory computer-readable storage media of claim 10 , wherein the instructions which, when executed by the one or more processors, further cause performance of:

assigning an expiration time to the persistent connection.

15. The one or more non-transitory computer-readable storage media of claim 10 , wherein the instructions which, when executed by the one or more processors, further cause performance of:

assigning an expiration time to the persistent connection;

upon reaching the expiration time of the persistent connection, determining whether a third proxy server is closer to the particular content origin server than the first proxy server.

16. A system, comprising:

a first proxy server among a plurality of proxy servers;

a second proxy server among the plurality of proxy servers;

a proxy server locator, implemented at least partially in hardware, configured to determine that a first proxy server is closer than other proxy servers in the plurality of proxy servers to a particular content origin server;

a communications device at the second proxy server configured to receive a request from a user device for content from the particular content origin server, wherein the user device establishes a data connection for the request with the second proxy server via a control channel, the second proxy server is in a geographical area different than the first proxy server;

a communications device at the first proxy server configured to establish a connection with the particular content origin server; and

wherein the communications device at the first proxy server creates a persistent connection between the first proxy server and the second proxy server, wherein communications between the user device and the particular content origin server are routed through the persistent connection, wherein a set of persistent connections that have been created across geographies between proxy servers in the plurality of proxy servers form a dynamic overlay network.

17. The system of claim 16 , wherein the first proxy server is selected using a geo-IP mapping of an IP address of the particular content origin server.

18. The system of claim 16 , wherein the first proxy server is selected using a latency measurement between the first proxy server and the particular content origin server.

19. The system of claim 16 , wherein the communications device at the first proxy server assigns an expiration time to the persistent connection.

20. The system of claim 16 , wherein the communications device at the first proxy server assigns an expiration time to the persistent connection, and wherein upon reaching the expiration time of the persistent connection, the proxy server location device determines whether a third proxy server is closer to the particular content origin server than the first proxy server.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE CORRECT THE NATURE OF CONVEYANCE FROM CHANGE OF NAME TO ASSIGNMENT ON THE COVER SHEET PREVIOUSLY RECORDED AT REEL: 69994 FRAME: 767. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Feb 19, 2025
From: TWIN PRIME, INC.
To: SALESFORCE, INC.
Reel/Frame 070259/0094 →
CHANGE OF NAME Recorded Jan 24, 2025
From: TWIN PRIME, INC.
To: SALESFORCE, INC.
Reel/Frame 069994/0767 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2018
From: CHANDRAYANA, KARTIKEYA; RAGHUNATH, SATISH; PAGADALA, RADHA KRISHNA; GAL, SHAULI; CERDENO, MARIA GARCIA; LARSEN, RUSSELL
To: TWIN PRIME, INC.
Reel/Frame 044641/0441 →
Continuity (3)
Continuation 14970510 · Dec 15, 2015
Provisional Application 62092209 · Dec 15, 2014
Related Publication 20180159947A1 · Jun 7, 2018