Multi-path routing
First Claim
1. A method for managing real time communications comprising:
- establishing, by a client device, a first plurality of user datagram protocol (“
UDP”
) flows with a source device, wherein each UDP flow of the first plurality of UDP flows is defined by a set of network addresses, a transmission port, and a protocol specification, and wherein each UDP flow of the first plurality of UDP flows is associated with a different network path;
transmitting, by the client device, at least one probing packet along the first plurality of UDP flows;
receiving, by the client device, information from the source device, the information responsive to receipt of the transmitted probing packet;
generating, by the client device, a first prioritized plurality of UDP flows based, at least in part, on the first plurality of UDP flows and the information from the source device;
selecting, by the client device, a first UDP flow and an associated first network path from the first prioritized plurality of UDP flows;
transmitting, by the client device;
data communications utilizing the first UDP flow and the first network path;
establishing, by the source device, a second plurality of UDP flows with the client device, wherein each UDP flow of the second plurality of UDP flows is defined by a set of network addresses, a transmission port and a protocol specification, and wherein each UDP flow of the second plurality of UDP flows is associated with a different network path;
transmitting, by the source device, at least one probing packet along each of the second plurality of UDP flows;
receiving, by the source device, information from the client device, the information responsive to receipt of the transmitted probing packet;
generating, by the source device, a second prioritized plurality of UDP flows based, at least in part, on the second plurality of UDP flows and the information from the source device;
selecting, by the source device, a second UDP flow and an associated second network path from the second prioritized plurality of UDP flows;
transmitting, by the source device, data communications utilizing the second UDP flow and the second network path;
determining, by the client device, that the data communications utilizing the first UDP flow and the first network path have satisfied a criterion;
in response to the determination,transmitting, by the client device, at least one additional probing packet along the first plurality of established UDP flows;
receiving, by the client device, additional information from the source device, the additional information responsive to receipt of the at least one additional probing packet;
updating, by the client device, the first prioritized plurality of UDP flows based, at least in part, on the additional information;
selecting, by the client device, an updated UDP flow and an associated updated network path from the first prioritized plurality of UDP flows; and
transmitting, by the client device, data communications utilizing the updated UDP flow and the updated network path.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods are provided for dynamically routing packets using multi-flow and multi-path multiplexing connections. A first computing device and second computing device communicate via a plurality of data flows, which may be routed across various network paths. Each flow is defined by a set of network addresses, a set of ports, and a protocol specification, such as UDP. The second device sends information to the first device regarding the various data flows. The first device may send probing packets to facilitate collecting data flow information. Information may include latency, packet loss, and other values. Based on the information received, the first device may select or prioritize data flows to mitigate congestion, and address performance criteria. The first device may also transmit information regarding selected data flows to other devices, allowing the other devices to utilize a selected data flow even if they lack multiplexing capability.
18 Citations
23 Claims
-
1. A method for managing real time communications comprising:
-
establishing, by a client device, a first plurality of user datagram protocol (“
UDP”
) flows with a source device, wherein each UDP flow of the first plurality of UDP flows is defined by a set of network addresses, a transmission port, and a protocol specification, and wherein each UDP flow of the first plurality of UDP flows is associated with a different network path;transmitting, by the client device, at least one probing packet along the first plurality of UDP flows; receiving, by the client device, information from the source device, the information responsive to receipt of the transmitted probing packet; generating, by the client device, a first prioritized plurality of UDP flows based, at least in part, on the first plurality of UDP flows and the information from the source device; selecting, by the client device, a first UDP flow and an associated first network path from the first prioritized plurality of UDP flows; transmitting, by the client device;
data communications utilizing the first UDP flow and the first network path;establishing, by the source device, a second plurality of UDP flows with the client device, wherein each UDP flow of the second plurality of UDP flows is defined by a set of network addresses, a transmission port and a protocol specification, and wherein each UDP flow of the second plurality of UDP flows is associated with a different network path; transmitting, by the source device, at least one probing packet along each of the second plurality of UDP flows; receiving, by the source device, information from the client device, the information responsive to receipt of the transmitted probing packet; generating, by the source device, a second prioritized plurality of UDP flows based, at least in part, on the second plurality of UDP flows and the information from the source device; selecting, by the source device, a second UDP flow and an associated second network path from the second prioritized plurality of UDP flows; transmitting, by the source device, data communications utilizing the second UDP flow and the second network path; determining, by the client device, that the data communications utilizing the first UDP flow and the first network path have satisfied a criterion; in response to the determination, transmitting, by the client device, at least one additional probing packet along the first plurality of established UDP flows; receiving, by the client device, additional information from the source device, the additional information responsive to receipt of the at least one additional probing packet; updating, by the client device, the first prioritized plurality of UDP flows based, at least in part, on the additional information; selecting, by the client device, an updated UDP flow and an associated updated network path from the first prioritized plurality of UDP flows; and transmitting, by the client device, data communications utilizing the updated UDP flow and the updated network path. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A system comprising:
a computing device comprising one or more processors configured with processor-executable instructions to perform operations comprising; transmitting at least one data communication along a plurality of established user datagram protocol (“
UDP”
) flows, wherein each of the plurality of established UDP flows is associated with a different network path;receiving information from a target device, the information responsive to the processing of the data communication by the target device; selecting a UDP flow and associated network path from the plurality of established UDP flows based on the information; utilizing the selected UDP flow and network path to send additional data communication between a client device and the target device; and in response to determining that the additional data communication between the client device and the target device have satisfied a criterion; transmitting at least one additional data communication along the plurality of established UDP flows; receiving additional information from the target device, the additional information responsive to processing of the additional data communication by the target device; and selecting an updated UDP flow from the plurality of established UDP flows based on the additional information. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14)
-
15. A system comprising:
-
a computing device comprising one or more processors configured with processor-executable instructions to perform operations comprising; transmitting at least one data communication via a plurality of data flows, wherein each data flow of the plurality of data flows is defined by a set of network addresses, a transmission port, and a protocol specification, and wherein each data flow of the plurality of data flows is associated with a different network path; receiving information from a target device, the information responsive to the processing of the data communication by the target device and associated with measurements of latencies of the data flows; selecting a data flow from the plurality of data flows based on the received information; and in response to determining that data communications via the selected data flow satisfy a criterion; transmitting at least one additional data communication along a plurality of established data flows; receiving additional information from the target device, the additional information responsive to the processing of the at least one additional data communication by the target device; and selecting an updated data flow from the plurality of data flows based on the additional information. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23)
-
Specification