Slipstream bandwidth management algorithm
First Claim
1. A method at a computing device, the method comprising:
- executing an application at the computing device, the application to communicate with a remote computing device over a public Internet;
approximating outgoing bandwidth for communications from the computing device to the remote computing device;
approximating incoming bandwidth for communications received at the computing device from the remote computing device;
allocating multiple simultaneous Transmission Control Protocol (TCP) connections in support of the application based at least in part on the approximated outgoing bandwidth and based further on the approximated incoming bandwidth; and
iteratively adjusting bandwidth communicated for the application between the computing device and the remote computing device based at least in part on latency between the computing device and the remote computing device, wherein iteratively adjusting bandwidth communicated for the application comprises applying an adjustment having the following operations;
sending a request packet from the computing device to a remote computing device;
calculating anticipated arrival time for a response packet from the remote computing device corresponding to the request packet sent;
receiving the response packet corresponding to the request packet sent;
determining whether the response packet arrived within a specified window of time; and
applying an adjustment to bandwidth communicated for the application based on whether the response packet arrived within the specified window of time, wherein applying an adjustment to the bandwidth communicated for the application based on whether the response packet arrived within the specified window of time comprises;
modifying a nominal packet size affecting the bandwidth communicated for the application.
1 Assignment
0 Petitions
Accused Products
Abstract
In accordance with disclosed embodiments, there are provided methods, systems, and apparatuses for implementing a slipstream bandwidth management algorithm including, for example, means for executing an application a computing device, in which the application is to communicate with a remote computing device over a public Internet; means for approximating outgoing bandwidth for communications from the computing device to the remote computing device; means for approximating incoming bandwidth for communications received at the computing device from the remote computing device; means for allocating multiple simultaneous Transmission Control Protocol (TCP) connections in support of the application based at least in part on the approximated outgoing bandwidth and based further on the approximated incoming bandwidth; and means for iteratively adjusting bandwidth communicated for the application between the computing device and the remote computing device based at least in part on latency between the computing device and the remote computing device. Other related embodiments are disclosed.
135 Citations
29 Claims
-
1. A method at a computing device, the method comprising:
-
executing an application at the computing device, the application to communicate with a remote computing device over a public Internet; approximating outgoing bandwidth for communications from the computing device to the remote computing device; approximating incoming bandwidth for communications received at the computing device from the remote computing device; allocating multiple simultaneous Transmission Control Protocol (TCP) connections in support of the application based at least in part on the approximated outgoing bandwidth and based further on the approximated incoming bandwidth; and iteratively adjusting bandwidth communicated for the application between the computing device and the remote computing device based at least in part on latency between the computing device and the remote computing device, wherein iteratively adjusting bandwidth communicated for the application comprises applying an adjustment having the following operations; sending a request packet from the computing device to a remote computing device; calculating anticipated arrival time for a response packet from the remote computing device corresponding to the request packet sent; receiving the response packet corresponding to the request packet sent; determining whether the response packet arrived within a specified window of time; and applying an adjustment to bandwidth communicated for the application based on whether the response packet arrived within the specified window of time, wherein applying an adjustment to the bandwidth communicated for the application based on whether the response packet arrived within the specified window of time comprises; modifying a nominal packet size affecting the bandwidth communicated for the application. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. Non-transitory computer readable storage medium having instructions stored thereon that, when executed by a processor in a computing device, the instructions cause the computing device to perform operations comprising:
-
executing an application at the computing device, the application to communicate with a remote computing device over a public Internet; approximating outgoing bandwidth for communications from the computing device to the remote computing device; approximating incoming bandwidth for communications received at the computing device from the remote computing device; allocating multiple simultaneous Transmission Control Protocol (TCP) connections in support of the application based at least in part on the approximated outgoing bandwidth and based further on the approximated incoming bandwidth; and iteratively adjusting bandwidth communicated for the application between the computing device and the remote computing device based at least in part on latency between the computing device and the remote computing device, wherein iteratively adjusting bandwidth communicated for the application comprises applying an adjustment having the following operations; sending a request packet from the computing device to a remote computing device; calculating anticipated arrival time for a response packet from the remote computing device corresponding to the request packet sent; receiving the response packet corresponding to the request packet sent; determining whether the response packet arrived within a specified window of time; and applying an adjustment to bandwidth communicated for the application based on whether the response packet arrived within the specified window of time, wherein applying an adjustment to the bandwidth communicated for the application based on whether the response packet arrived within the specified window of time comprises; modifying a nominal packet size affecting the bandwidth communicated for the application. - View Dependent Claims (24)
-
-
25. A computing device comprising:
-
a processor to execute an application, the application being operable to communicate with a remote computing device over a public Internet; a regulator module to approximate outgoing bandwidth for communications from the computing device to the remote computing device; the regulator module to approximate incoming bandwidth for communications received at the computing device from the remote computing device; an Input/Output (I/O) pump to allocate multiple simultaneous Transmission Control Protocol (TCP) connections in support of the application based at least in part on the approximated outgoing bandwidth and based further on the approximated incoming bandwidth; and the regulator module to iteratively adjust bandwidth communicated for the application between the computing device and the remote computing device based at least in part on latency between the computing device and the remote computing device, wherein iteratively adjusting bandwidth communicated for the application comprises applying an adjustment having the following operations; sending a request packet from the computing device to a remote computing device; calculating anticipated arrival time for a response packet from the remote computing device corresponding to the request packet sent; receiving the response packet corresponding to the request packet sent; determining whether the response packet arrived within a specified window of time; and applying an adjustment to bandwidth communicated for the application based on whether the response packet arrived within the specified window of time, wherein applying an adjustment to the bandwidth communicated for the application based on whether the response packet arrived within the specified window of time comprises; modifying a nominal packet size affecting the bandwidth communicated for the application. - View Dependent Claims (26, 27, 28, 29)
-
Specification