IP Library Granted Patent US 10,033,489
Granted Patent B1
US 10,033,489 · App. 14/579,147 · Granted Jul 24, 2018

Managing communications based on network conditions

Inventor: Paul Derek DeMarco (Seattle, WA)
Assignee: AMAZON TECHNOLOGIES, INC.
H04L1/188H04L1/1896H04L43/08H04L67/10H04L69/16
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,033,489
App. No.
14/579,147
Granted
Jul 24, 2018
Kind
B1
Abstract

Various examples are directed to optimizing communications based on network conditions. A computing device may be programmed to receive from a process executing at the computing device a network transmission request. The network transmission request may indicate payload data and a recipient computing device. The computing device may transmit to a recipient computing device a plurality of data packets. Each of the plurality of data packets may comprise at least a portion of the payload data. The computing device may detect an improvement in network conditions and accelerate retransmission of at least one data packet.

Claims (86)

1. A computing device, the computing device comprising:

a wireless transceiver;

a memory; and

at least one processor, wherein the at least one processor is programmed to:

execute a network interface layer protocol that is configured to:

detect an improvement in network conditions; and

write an indication of the improvement to the memory; and

execute a Transmission Control Protocol (TCP) configured to:

receive from an application executing at the computing device a network transmission request, wherein the network transmission request indicates payload data and a recipient computing device;

format a plurality of data packets, wherein each of the plurality of data packets comprises a portion of the payload data;

transmit a first data packet selected from the plurality of data packets to the recipient computing device using the wireless transceiver;

determine the indication of the improvement in network conditions is stored at the memory;

identify a set of data packets selected from the plurality of data packets, wherein the set of data packets were transmitted before the improvement in network conditions; and

retransmit the set of data packets in an order in which the set of data packets were originally transmitted.

2. The computer device of claim 1 , wherein the TCP is further configured to:

determine that retransmission of the set of data packets was successful; and

reduce a retransmission time-out threshold, wherein the retransmission time-out threshold is a time after transmitting a first data packet when the TCP causes the first data packet to be retransmitted when the computing device has not received an acknowledgement from the recipient computing device that the recipient computing device received the first data packet.

3. The computing device of claim 1 , wherein the network interface layer protocol is further configured to:

monitor network conditions; and

periodically write an indication of network conditions to the memory.

4. A computing device, the computing device comprising:

a wireless transceiver;

a memory;

at least one processor, wherein the at least one processor is programmed to:

receive from a process executing at the computing device a network transmission request, wherein the network transmission request indicates payload data and a recipient computing device;

transmit to the recipient computing device a plurality of data packets, wherein each of the plurality of data packets comprises at least a portion of the payload data;

read from the memory an indication of at least one current network condition written to the memory by a network interface layer, wherein the at least one processor is programmed to execute the network interface layer, and the network interface layer is programmed to write the indication of the at least one current network condition to the memory;

determine the at least one current network condition is improved relative to at least one past network condition; and

accelerate a retransmission of at least one data packet selected from the plurality of data packets.

5. The computing device of 4 , wherein the at least one current network condition comprises a signal strength on a wireless network.

6. The computing device of claim 4 , wherein the wireless transceiver is selected from the group consisting of a wireless local area network (WLAN) transceiver and a cellular transceiver.

7. The computing device of claim 4 , wherein the at least one processor is further programmed to detect an improvement in network conditions, wherein to accelerate the retransmission of the at least one data packet the at least one processor is further programmed to:

identify a set of outstanding data packets selected from the plurality of data packets, wherein the set of outstanding data packets were transmitted by the computing device before the improvement in network conditions was detected; and

retransmit the set of outstanding data packets to the recipient computing device.

8. The computing device of claim 7 , wherein the at least one processor is further programmed to:

determine the retransmission of the set of outstanding data packets was successful; and

reduce a retransmission time-out threshold, wherein the retransmission time-out threshold is a time after transmitting a first data packet when a Transmission Control Protocol (TCP) causes the first data packet to be retransmitted when the computing device has not received an acknowledgement from the recipient computing device that the recipient computing device received the first data packet.

9. The computing device of claim 7 , wherein the at least one processor is further programmed to: retransmit the set of outstanding data packets in order from a first data packet originally transmitted to a last data packet originally transmitted.

10. The computing device of 4 , wherein the at least one processor is further programmed to:

detect an improvement in network conditions;

identify a set of outstanding data packets selected from the plurality of data packets, wherein the set of outstanding data packets were transmitted by the computing device before the improvement in network conditions was detected; and

select a subset of the set of outstanding data packets;

retransmit the subset of the set of outstanding data packets to the recipient computing device;

determine retransmission of the subset was successful; and

retransmit a remainder of the set of outstanding data packets to the recipient computing device.

11. The computing device of claim 10 , wherein the at least one processor is further programmed to: determine an acknowledgement from the recipient computing device was received by a threshold portion of the subset of the set of outstanding data packets.

12. A computing device, the computing device comprising:

a first wireless transceiver;

a second wireless transceiver;

a memory;

at least one processor, wherein the at least one processor is programmed to:

execute an operating system;

execute an application, wherein the application is configured to:

send a transmit request comprising data to be transmitted utilizing the first wireless transceiver;

query the operating system for at least one network condition at a first time;

determine the application has not received a confirmation of the transmit request within a threshold time;

after determining the application has not received the confirmation of the transmit request within the threshold time, query the operating system for the at least one network condition at a second time;

determine the at least one network condition at the second time indicates an improvement since the first time, wherein determining the at least one network condition at the second time indicates the improvement since the first time comprises determining that a connection has been established using the second wireless transceiver; and

resend the transmit request for transmission using the second wireless transceiver.

13. The computing device of claim 12 , wherein the at least one processor is further programmed to, before resending the transmit request, determine the transmit request can be safely resent.

14. A computing device, the computing device comprising:

a cellular transceiver;

a wireless local area network (WLAN) transceiver

a memory;

at least one processor, wherein the at least one processor is programmed to:

execute an operating system;

execute an application, wherein the application is configured to:

send a first transmit request comprising payload data, wherein the first transmit request is to be transmitted utilizing the cellular transceiver;

send a second transmit request, prior to receipt of an acknowledgement message related to the first transmit request, wherein the second transmit request comprises the payload data, wherein the second transmit request is to be transmitted utilizing the WLAN transceiver;

determine the first transmit request is complete; and

send a request to cancel the second transmit request.

15. The computing device of claim 14 , wherein the at least one processor is further programmed to periodically determine whether a first confirmation of the first transmit request is received before a second confirmation of the second transmit request.

16. A computing device, the computing device comprising:

a wireless transceiver;

a memory;

at least one processor, wherein the at least one processor is programmed to:

receive from a process executing at the computing device a network transmission request, wherein the network transmission request indicates payload data and a recipient computing device;

transmit to the recipient computing device a plurality of data packets, wherein each of the plurality of data packets comprises at least a portion of the payload data;

detect an improvement in network conditions by:

polling a network interface layer to determine a signal strength of a wireless network; and

determining the signal strength is improved relative to at least one previous signal strength; and

accelerate a retransmission of at least one data packet selected from the plurality of data packets.

17. The computing device of claim 16 , wherein to accelerate the retransmission of the at least one data packet the at least one processor is further programmed to:

identify a set of outstanding data packets selected from the plurality of data packets, wherein the set of outstanding data packets were transmitted by the computing device before the improvement in network conditions was detected; and

retransmit the set of outstanding data packets to the recipient computing device.

18. The computing device of claim 16 , wherein the at least one processor is programmed to execute the network interface layer, and wherein the network interface layer is programmed to provide an indication of the at least one current network condition in response to the polling the network interface layer by the at least one processor.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 16, 2015
From: DEMARCO, PAUL DEREK
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 034740/0104 →
Cited By (2)
US 12,501,108 US 12,572,927