| CPC H04L 45/74 (2013.01) [H04L 12/66 (2013.01); H04L 41/0896 (2013.01); H04L 43/0852 (2013.01); H04L 43/0882 (2013.01); H04L 43/106 (2013.01); H04L 45/22 (2013.01); H04L 45/302 (2013.01); H04L 47/125 (2013.01); H04L 47/2483 (2013.01); H04L 47/34 (2013.01); H04L 49/90 (2013.01)] | 19 Claims |

|
1. A network gateway for routing data flows across a plurality of network connections, the network gateway comprising:
a plurality of network interfaces for transmitting data over the plurality of network connections; and
at least one processor configured for:
monitoring time-variant network transmission characteristics of the plurality of network connections;
generate a bandwidth estimate of a first network connection of the plurality of network connections based on timestamps when test packets are received at a receiving node and a size of the test packets, the test packets sent alongside data packets or as payloads embedded within the data packets;
parsing at least one packet of a data flow of packets to identify a data flow class for the data flow, wherein the data flow class is associated with at least one network interface requirement for the data flow;
transmitting the test packets as a sequential burst of packets across a first network interface of the plurality of network interfaces;
for each packet of the packets in the data flow, providing the packet for routing over one of the plurality of network connections based on the data flow class and the bandwidth estimate of the plurality of network connections and the network connections of other packets in the data flow such that the packets in the data flow arrive at a destination node in a desired sequence; and
wherein the bandwidth estimate of the first network interface is generated using a sum of packet sizes for packets between a first packet in the burst and a second packet in the burst that are divided by a time elapsed between a timestamp for the first packet and a timestamp for the second packet, wherein the first packet is not the initial packet in the burst, and wherein the second packet is subsequent to the first packet in the burst.
|