This invention relates generally to network communications, and more particularly but not exclusively, to managing network communications for TCP over TCP traffic using multiple TCP connections between communicating network devices.
Transmission Control Protocol (TCP) is one of the protocols within the Internet protocol set of network communication protocols on which many of today's networks run. Applications on network devices may employ TCP to create connections with each other and exchange data using network packets. TCP protocol is known as a connection-oriented protocol that was designed to guarantee reliable, in-order delivery of data.
TCP devices package the data into streams of bytes called segments which may be sent as individual IP datagrams. TCP checks to make sure that no packets are lost by giving each segment a sequence number which numbers the bytes in the stream, and an acknowledgement number which tells a receiving network device the next expected sequence number, from which the last received sequence number may be intuited. Indirectly, the acknowledgement number tells the sending network device if a segment is lost, by noting whether an acknowledgement for a sent segment is received by the sending network device within a defined amount of time. This time period is typically referred to as a retransmission time out period (RTO). Thus, if a segment is determined to be lost, the sending device may retransmit that segment after the RTO expires, or sooner based on certain optional recovery mechanisms.
Over the Internet, however, parameters such as bandwidth, latency, jitter, and loss rate may vary vastly from one connection to another or even change over time for a single connection. Thus, a fixed timeout for determining whether a packet is lost may be inappropriate. In fact, selection of a fixed timeout might result in inappropriately sending more packets than necessary, thereby increasing congestion over a network, and leading to an effect sometimes known as “meltdown.” Therefore, TCP uses an adaptive timeout for determining packet loss and whether to retransmit a packet. Several such congestion avoidance algorithms are described in Request for Comments (RFC) 2001, which is available through the Internet Engineering Task Force (IETF). A typical implementation might start with a conservative timeout estimate, and when a segment is not acknowledged within this timeout estimate, increases the timeout and reduces the estimate of available network capacity (via “the congestion window”) for subsequent segments.