Multi-path routing
First Claim
1. A method for managing real time communications comprising:
- establishing, by a first client device, a plurality of user datagram protocol (“
UDP”
) flows with a source device, wherein each UDP flow is defined by a set of network addresses, a transmission port, and a protocol specification;
transmitting, by the first client device, at least one probing packet along each of the plurality of UDP flows;
receiving, by the first client device, information from the source device, the information responsive to receipt of the at least one probing packet along each of the plurality of UDP flows;
prioritizing, by the first client device, the plurality of UDP flows based, at least in part, on the information from the source device;
selecting, by the first client device, a UDP flow from the prioritized plurality of UDP flows;
transmitting, by the first client device, information that identifies the selected UDP flow;
obtaining, by a plurality of additional client devices, the transmitted information that identifies the selected UDP flow, wherein the plurality of additional client devices do not determine a selected UDP flow; and
transmitting, by the plurality of additional client devices, data communications via the selected UDP flow.
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.
16 Citations
22 Claims
-
1. A method for managing real time communications comprising:
-
establishing, by a first client device, a plurality of user datagram protocol (“
UDP”
) flows with a source device, wherein each UDP flow is defined by a set of network addresses, a transmission port, and a protocol specification;transmitting, by the first client device, at least one probing packet along each of the plurality of UDP flows; receiving, by the first client device, information from the source device, the information responsive to receipt of the at least one probing packet along each of the plurality of UDP flows; prioritizing, by the first client device, the plurality of UDP flows based, at least in part, on the information from the source device; selecting, by the first client device, a UDP flow from the prioritized plurality of UDP flows; transmitting, by the first client device, information that identifies the selected UDP flow; obtaining, by a plurality of additional client devices, the transmitted information that identifies the selected UDP flow, wherein the plurality of additional client devices do not determine a selected UDP flow; and transmitting, by the plurality of additional client devices, data communications via the selected UDP flow. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A system comprising:
a first computing device comprising one or more processors configured with processor-executable instructions to perform operations comprising; transmit at least one data communication along a plurality of established user datagram protocol (“
UDP”
) flows;receive information from a target device, the information responsive to the processing of the data communication by the target device; dynamically select a UDP flow from the plurality of established UDP flows based on the received information; and transmit information that identifies the selected UDP flow to one or more additional computing devices, wherein the one or more additional computing devices are configured to select a UDP flow based at least in part on the transmitted information. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14)
-
15. A system comprising:
a first computing device comprising one or more processors configured with processor-executable instructions to perform operations comprising; transmit at least one data communication along a plurality of established data flows, wherein each flow is defined by a set of network addresses, a transmission port and a protocol specification; receive information from a target device, the information responsive to the processing of the data communication by the target device; and select a data flow from the plurality of data flows based on the received information; and transmit information that identifies the selected data flow for distribution to a plurality of additional computing devices associated with the first computing device, wherein the plurality of additional computing devices are not configured to independently select a data flow. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22)
Specification