IP Library Granted Patent US 10,708,170
Granted Patent B2
US 10,708,170 · App. 15/921,238 · Granted Jul 7, 2020

Transferring data over multiple network paths using decoupled sub-flows

Inventors: Subhabrata Sen (Westfield, NJ); Zhuoqing Morley Mao (Ann Arbor, MI); Feng Qian (Bloomington, IN); Yihua Guo (Mountain View, CA)
Assignees: AT&T Intellectual Property I, L.P.; The Trustees of Indiana University; The Regents of the University of Michigan
H04L45/14H04L45/24H04L45/44H04W84/12
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,708,170
App. No.
15/921,238
Granted
Jul 7, 2020
Kind
B2
Abstract

A request for a chunk of data is received from an application executing on a remote device. The chunk of data is split into a plurality of packets including a first packet and a second packet. A first sub-flow is selected to transport the first packet to the remote device and a second sub-flow is selected to transport the second packet. The first sub-flow is decoupled from the second sub-flow. A first stop time is selected for the first sub-flow and a second stop time is selected for the second sub-flow. The first stop time determines when the first sub-flow will complete at the remote device and the second stop time determines when the second sub-flow will complete at the remote device. The first stop time and the second stop time are selected so that the first sub-flow and the second sub-flow will complete simultaneously at the remote device.

Claims (44)

1. A method, comprising:

receiving, by a processing system including at least one processor, a request for a chunk of data from an application executing on a remote device;

splitting, by the processing system, the chunk of data into a plurality of packets including a first packet and a second packet;

selecting, by the processing system, a first sub-flow to transport the first packet and a second sub-flow to transport the second packet to the remote device, wherein the first sub-flow is decoupled from the second sub-flow to the remote device;

selecting, by the processing system, a first stop time for the first sub-flow and a second stop time for the second sub-flow, wherein the first stop time determines when the first sub-flow will complete at the remote device and the second stop time determines when the second sub-flow will complete at the remote device, and wherein the first stop time and the second stop time are selected so that the first sub-flow and the second sub-flow are calculated to complete simultaneously at the remote device;

transmitting, by the processing system, the first sub-flow over a first network path of a transport layer protocol connection to the remote device; and

transmitting, by the processing system, the second sub-flow over a second network path of the transport layer protocol connection, wherein the transmitting the first sub-flow over the first network path transmits the first sub-flow from a first byte of the chunk of data going forward, and wherein the transmitting the second sub-flow over the second network path transmits the second sub-flow from a last byte of the chunk of data going backward.

2. The method of claim 1 , wherein the first network path is a wireless fidelity network path, and wherein the second network path is a cellular network path.

3. The method of claim 1 , wherein the first sub-flow has a first one-way delay and the second sub-flow has a second one-way delay that is larger than the first one-way delay, and wherein the transmitting the first sub-flow stops earlier than the transmitting the second sub-flow.

4. The method of claim 3 , wherein a timing offset between stopping the transmitting the first sub-flow and stopping the transmitting the second sub-flow is calculated based on a latency and a bandwidth of a network supporting the transport layer protocol connection.

5. The method of claim 1 , further comprising:

determining that all bytes of the first sub-flow have been delivered to the remote device, but that all bytes of the second sub-flow have not been delivered to the remote device; and

reinjecting a number of bytes of the second sub-flow in the first sub-flow, subsequent to all bytes of the first sub-flow being delivered to the remote device.

6. The method of claim 5 , wherein the number of bytes is computed based on a bandwidth of the first sub-flow, a bandwidth of the second sub-flow, a round trip time of the first sub-flow, and a round trip time of the second sub-flow.

7. The method of claim 5 , wherein the number of bytes is computed based on a rate of fluctuation of a condition of a network including the first network path and the second network path.

8. The method of claim 7 , wherein the number of bytes varies proportionally to the rate of fluctuation of the condition of the network.

9. The method of claim 1 , wherein the chunk of data is fully downloaded to the remote device when the first sub-flow meets the second sub-flow.

10. The method of claim 1 , wherein the first sub-flow and the second sub-flow are two of a plurality of sub-flows totaling more than two sub-flows.

11. A non-transitory computer-readable medium storing a first set of instructions which, when executed by a processor, cause the processor to perform operations, the operations comprising:

receiving a request for a chunk of data from an application executing on a remote device;

splitting the chunk of data into a plurality of packets including a first packet and a second packet;

selecting a first sub-flow to transport the first packet and a second sub-flow to transport the second packet to the remote device, wherein the first sub-flow is decoupled from the second sub-flow to the remote device;

selecting a first stop time for the first sub-flow and a second stop time for the second sub-flow, wherein the first stop time determines when the first sub-flow will complete at the remote device and the second stop time determines when the second sub-flow will complete at the remote device, and wherein the first stop time and the second stop time are selected so that the first sub-flow and the second sub-flow are calculated to complete simultaneously at the remote device;

transmitting the first sub-flow over a first network path of a transport layer protocol connection to the remote device; and

transmitting the second sub-flow over a second network path of the transport layer protocol connection, wherein the transmitting the first sub-flow over the first network path transmits the first sub-flow from a first byte of the chunk of data going forward, and wherein the transmitting the second sub-flow over the second network path transmits the second sub-flow from a last byte of the chunk of data going backward.

12. The non-transitory computer-readable medium of claim 11 , wherein the first sub-flow has a first one-way delay and the second sub-flow has a second one-way delay that is larger than the first one-way delay, and wherein the transmitting the first sub-flow stops earlier than the transmitting the second sub-flow.

13. The non-transitory computer-readable medium of claim 12 , wherein a timing offset between stopping the transmitting the first sub-flow and stopping the transmitting the second sub-flow is calculated based on a latency and a bandwidth of a network supporting the transport layer protocol connection.

14. The non-transitory computer-readable medium of claim 11 , the operations further comprising:

determining that all bytes of the first packet have been delivered to the remote device, but that all bytes of the second packet have not been delivered to the remote device; and

reinjecting a number of bytes of the second packet in the first sub-flow, subsequent to all bytes of the first packet being delivered to the remote device.

15. The non-transitory computer-readable medium of claim 14 , wherein the number of bytes is computed based on a bandwidth of the first sub-flow, a bandwidth of the second sub-flow, a round trip time of the first sub-flow, and a round trip time of the second sub-flow.

16. The non-transitory computer-readable medium of claim 14 , wherein the number of bytes is computed based on a rate of fluctuation of a condition of a network including the first network path and the second network path.

17. The non-transitory computer-readable medium of claim 16 , wherein the number of bytes varies proportionally to the rate of fluctuation of the condition of the network.

18. The non-transitory computer-readable medium of claim 11 , wherein the chunk of data is fully downloaded to the remote device when the first sub-flow meets the second sub-flow.

19. The non-transitory computer-readable medium of claim 11 , wherein the first sub-flow and the second sub-flow are two of a plurality of sub-flows totaling more than two sub-flows.

20. A device comprising:

a processor; and

a computer-readable medium storing a set of instructions which, when executed by the processor, cause the processor to perform operations, the operations comprising:

receiving a request for a chunk of data from an application executing on a remote device;

splitting the chunk of data into a plurality of packets including a first packet and a second packet;

selecting a first sub-flow to transport the first packet and a second sub-flow to transport the second packet to the remote device, wherein the first sub-flow is decoupled from the second sub-flow to the remote device;

selecting a first stop time for the first sub-flow and a second stop time for the second sub-flow, wherein the first stop time determines when the first sub-flow will complete at the remote device and the second stop time determines when the second sub-flow will complete at the remote device, and wherein the first stop time and the second stop time are selected so that the first sub-flow and the second sub-flow are calculated to complete simultaneously at the remote device;

transmitting the first sub-flow over a first network path of a transport layer protocol connection to the remote device; and

transmitting the second sub-flow over a second network path of the transport layer protocol connection, wherein the transmitting the first sub-flow over the first network path transmits the first sub-flow from a first byte of the chunk of data going forward, and wherein the transmitting the second sub-flow over the second network path transmits the second sub-flow from a last byte of the chunk of data going backward, wherein the chunk of data is fully downloaded to the remote device when the first sub-flow meets the second sub-flow.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 14, 2020
From: MAO, ZHUOQING MORLEY; GUO, YIHUA
To: THE REGENTS OF THE UNIVERSITY OF MICHIGAN
Reel/Frame 051505/0380 →
CONFIRMATORY LICENSE Recorded May 23, 2018
From: INDIANA UNIVERSITY
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 046222/0630 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2018
From: QIAN, FENG
To: THE TRUSTEES OF INDIANA UNIVERSITY
Reel/Frame 045301/0902 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2018
From: SEN, SUBHABRATA
To: AT&T INTELLECTUAL PROPERTY I, L.P.
Reel/Frame 045208/0598 →
Continuity (1)
Related Publication 20190288935A1 · Sep 19, 2019
Cited By (2)
US 12,363,603 US 12,425,859