Patent ID: 8374091

Claim:
A method for a device to implement a network protocol stack comprising an application layer, a transport layer, a physical layer, and at least one layer between the application layer and the transport layer, the network protocol stack at least sending packets in a network communication, the method comprising: performing rate control in a session, comprising: monitoring packet acknowledgments received in response to the packets sent in the network communication; determining a packet loss information and a packet delay information from the packet acknowledgments; filtering the packet loss information and the packet delay information; selecting one of a plurality of variants of a congestion control protocol in real-time within the session, comprising: evaluating the packet delay information to determine if the packet delay information is accurate; evaluating the packet loss information to determine if the packet loss information is accurate; selecting a first variant with congestion control based on the packet delay information when the packet delay information is determined to be accurate; selecting a second variant with congestion control based on the packet loss information when the packet loss information is determined to be accurate; and selecting a third variant with congestion control based on the packet delay information and the packet loss information when the packet delay information and the packet loss information are both determined to be inaccurate; determining a congestion window size by applying the selected variant based at least in part on one or more of the filtered packet loss information and the filtered packet delay information; and setting a transmission rate for the transport layer based on the determined congestion window size.