In computer networking, a transport protocol provides communication between applications residing in different hosts. The transport protocol used in the Internet and similar networks is Transmission Control Protocol (“TCP”). TCP provides reliable transport of data between hosts, in part, by establishing that a source host must require an acknowledgment from a destination host whenever a data packet is received. If the source host does not receive that acknowledgement within a certain amount of time called a retransmission delay, the source host acts under the assumption that the data packet did not reach the destination host and retransmits the data packet. The retransmission delay in TCP is typically 200 milliseconds (“ms”).
In a traditional scenario for communications between a client and a server, the client sends packets to an Internet service provider (“ISP”), which, in turn, sends the packets over transit links to the server. The server may be part of a data center and may operate on a high-speed local area network (“LAN”). The server tracks the packets it needs to transmit back to the client using TCP windowing. When the client acknowledges certain packets, it informs the server of what packets it has seen so far in the packet flow. For example, if the server has sent 100 bytes and the client acknowledges 50 bytes, this signifies to the Web server that the client has seen the first 50 bytes. In the current flow of TCP, the server would only retransmit if it does not receive an acknowledgement from all 100 bytes. This can result in the client experiencing undesirable delays in receiving data from the server.
It is with respect to these and other considerations that the disclosure made herein is presented.