Patent ID: 7680038

Claim:
A method of communicating data from a sender system to a receiver system via a network connection, the method comprising: communicating data from the sender system to the receiver system in a first mode over the network connection, wherein communicating the data in the first mode comprises: (a) determining an available bandwidth estimate for the network connection; (b) determining a bandwidth target that is a fraction of the available bandwidth estimate, such that the bandwidth target is less than the available bandwidth estimate; (c) communicating data from the sender system via the network connection using an unreliable protocol at a data rate that is substantially equal to the bandwidth target; (d) monitoring latency associated with the network connection; repeating (a), (b), (c), and (d) until a condition for exiting the first mode is satisfied; and exiting the first mode upon determining that the condition for exiting the first mode is satisfied; computing a latency threshold (latency threshold ) for the network connection, wherein the latency threshold computed for the network is computed as is set to a greater of (a) a minimum latency threshold value; and (b) the smaller of the latency associated with the network connection plus a constant times a latency deviation value and a first latency value; communicating data from the sender system to the receiver system in a second mode over the network connection, wherein communicating the data in the second mode comprises: (e) determining an available bandwidth estimate for the network connection; (f) determining a bandwidth target that is substantially equal to the available bandwidth estimate; (g) communicating data from the sender system via the network connection using an unreliable protocol at a data rate that is substantially equal to or greater than the bandwidth target; (h) monitoring latency associated with the network connection; repeating (e), (f), (g), and (h) until a condition for exiting the second mode is satisfied; and exiting the second mode upon determining that the condition for exiting the second mode is satisfied; and alternating between the first mode and the second mode over the network connection.