Existing end-to-end congestion control algorithms, in Transmission Control Protocol (TCP), use packet loss and queueing delay for congestion detection, and use static control laws to adjust the sending rate and to control the congestion. This approach presupposes that the network, and its interaction with the congestion control mechanism, is static or quasi-static. In practice, the state of the network continuously changes over time, resulting in suboptimal performance of existing algorithms.