The present invention relates generally to communications, and in specific embodiments, to communicating Aggressive Transmission Control Protocol (TCP) Retransmission.
Transmission Control Protocol (TCP) is a core protocol corresponding to the transport layer of the Internet Protocol (IP) suite, and serves as an intermediate level/layer between the application layer (e.g., the program) and the internet protocol (IP) layer. TCP provides reliable and ordered delivery of a data from a program on one computer to another program on another computer, and is used for most major Internet applications (e.g., browsing, email, file transfer, etc.).
Technical advantages are generally achieved, by embodiments of this disclosure which describe transmission control protocol (TCP) connection control parameter in-band signaling.
In accordance with an embodiment, a method for TCP communication is provided. In this example, the method includes beginning to transmit a traffic flow over a TCP connection, detecting a congestion condition, and determining whether to recognize or ignore the congestion condition. The method further includes continuing to transmit the traffic flow over the TCP connection without reducing a transmission rate upon determining to ignore the congestion condition. An apparatus for performing this method is also provided.
In accordance with another embodiment, another method for TCP communication is provided. In this example, the method includes beginning to transmit a traffic flow over a TCP connection, detecting a congestion condition, and determining whether a transmission rate over the TCP connection exceeds a threshold. The method further includes ignoring the congestion condition when the transmission rate fails to exceed the threshold. An apparatus for performing this method is also provided.
In accordance with another embodiment, yet another method for TCP communication is provided. In this example, the method includes storing a traffic flow in a queue, beginning to transmit the traffic flow over a TCP connection in accordance with a congestion algorithm, detecting a congestion condition, and determining whether an amount of data remaining in the queue exceeds a threshold. The method further includes ignoring the congestion condition when the amount of data remaining in the queue fails to exceed the threshold. An apparatus for performing this method is also provided.
In accordance with another embodiment, yet another method for TCP communication is provided. In this example, the method includes beginning to transmit a traffic flow over a TCP connection, detecting a congestion condition, receiving a duplicate ACK message indicating that one or more packets in the traffic flow were not successfully received by a receiving device, and determining whether a number of duplicate ACK messages received exceeds a threshold The method further includes re-transmitting the one or more packets without reducing a transmission rate of the TCP connection when the number of duplicate ACK messages fails to exceed the threshold. An apparatus for performing this method is also provided.
For a more complete understanding of the present disclosure, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
Corresponding numerals and symbols in the different figures generally refer to corresponding parts unless otherwise indicated. The figures are drawn to clearly illustrate the relevant aspects of the embodiments and are not necessarily drawn to scale.
The making and using of embodiments of this disclosure are discussed in detail below. It should be appreciated, however, that the concepts disclosed herein can be embodied in a wide variety of specific contexts, and that the specific embodiments discussed herein are merely illustrative and do not serve to limit the scope of the claims. Further, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of this disclosure as defined by the appended claims. Aspects of this disclosure may be applied to various communication protocols. Notably, while much of this disclosure is discussed in the context of transmission control protocol (TCP), embodiments discussed herein may be applied to any communication protocol. Indeed, aspects of this disclosure may be particularly useful for protocols in which control/manipulation of communication parameters influences network performance. Techniques for dynamically optimizing TCP connections are disclosed in U.S. Non-Provisional application Ser. No. 13/802,329 filed on Mar. 13, 2013, entitled “Dynamic Optimization of TCP Connections,” which is incorporated herein by reference as if reproduced in its entirety.
To reduce network congestion, conventional TCP algorithms typically lower the transmission rate or window size for a TCP connection upon detecting a congestion condition. However, in some situations it is undesirable or otherwise unnecessary to reduce the transmission rate or window size. For example, some traffic flows (e.g., short flows, low rate flows, etc.) have little impact on network congestion such that reducing their transmission rate may diminish quality of service (QoS) for those flows without meaningfully mitigating congestion. By way of another example, some flows may have only a small amount of data remaining in their queue such that it is more beneficial to complete transmission of the flow without reducing the window size or transmission rate. As yet another example, it may be desirable to reduce the transmission of traffic flows based on a priority level such that transmission rates of lower priority flows are reduced before that of higher priority flows.
Aspects of this disclosure provide a mechanism for selectively ignoring congestion conditions such that the transmission rate for some flows is not maintained following detection of the condition. For example, congestion conditions may be ignored for short flows, high priority flows, flows being communicated at low transmission rates, flows destined for wireless networks, or any other situation in which reducing the transmission rate is undesirable. The mechanism for detecting congestion conditions may vary. In some networks, destination endpoints may send a series of duplicate acknowledgment (ACK) messages to indicate that a packet was not received. In such networks, embodiments of this disclosure may maintain the transmission rate until a certain number of duplicate ACKs are received (e.g., three duplicate ACKs, etc.) in order to ensure the presence of congestion before reducing QoS.
TCP algorithms may operate by increasing/decreasing their transmission rate (e.g., window size) to manage or avoid congestion.
Even though the TCP transmissions sequence 200 depicts typical TCP phases, other TCP algorithms may include other phases affecting flow and congestion control. As mentioned above, TCP algorithms can have more phases (or less phases) than the four shown in the TCP transmission sequence 200. That said, TCP algorithms having different characteristics (e.g., parameters, phases, etc.) may attempt to address a common problem of fundamental flow and congestion control in the network.
Considerations when designing a TCP algorithm may include the initial TCP transmission rate, history of similar traffic coming from nearby locations (e.g., as might be stored in a history table), the rate at which the initial transmission rate is increased, which slow start algorithm to implement (if any), information specified in a profile table, which events or criteria constitute a congestion event, to what extent decreasing the TCP transmission rate will mitigate congestion, the rate at which to increase the TCP transmission rate following a congestion condition, what parameters to change (if any upon approaching the past congestion event transmission rate (or whether this rate should be reached at all), etc. One or more of these considerations may depend on the choice of TCP algorithm and the setting of TCP parameters.
In some embodiments, at least some of the responsibility for managing TCP connections may be delegated to a middlebox. A middlebox may be a source endpoint, and may be configured to dynamically adjust TCP connection parameters and/or history/profile table entries in accordance with in-band signaling received from the destination endpoint. A middlebox may also be a destination endpoint, and may be configured to request or otherwise trigger adjustments to TCP connection parameters and/or history/profile table entries by communicating in-band signaling to the source endpoint.
In some embodiments, a single middlebox may be implemented on the server side of the network.
In other embodiments, a middlebox is implemented on the client side as well as the server side.
When determining whether or not to ignore the congestion condition, the source endpoint may consider a variety of different factors. In one embodiment, the source endpoint chooses to ignore the congestion condition when a transmission rate over the TCP connection fails to exceed a threshold. In another embodiment, the source endpoint chooses to ignore the congestion condition when an amount of data remaining in a queue associated with the traffic flow fails to exceed a threshold, as may be indicative of a short flow or of a flow whose transmission is almost complete. In another embodiment, the source endpoint chooses to recognize or ignore the congestion condition in accordance with a characteristic of the traffic flow (e.g., priority, etc.) or a characteristic associated with a source/destination address of the traffic flow. In one embodiment, the characteristic of the traffic flow and/or source/destination address is determined by analyzing control information and/or data carried by the traffic flow.
In another embodiment, the characteristic of the traffic flow and/or source/destination address is determined in accordance with information stored in a history or profile table. A history table may be used to associate one or more characteristics with a destination or source address. By way of example, a history table may associate a particular source address with a wireless network environment. A profile table may be used to assign/re-assign a TCP congestion control algorithm to a new/persistent connection. Information stored in the history and/or profile table may be considered separately or in conjunction when determining whether or not to ignore the congestion condition. In embodiments, the history or profile table may specify a subscription level of a user associated with the traffic flow, a frequency of congestion associated with a source/destination address of the traffic flow (e.g., whether a source/destination address is classified as a chronic offender), an average round trip time (RTT) of the traffic flow, a network environment associated with a source/destination address of the traffic flow (e.g., wireless or otherwise), or any other characteristic directly or indirectly associated with the traffic flow or the source/destination address of the traffic flow. In yet other embodiments, the source endpoint may maintain the transmission rate until a certain number of duplicate ACKs are received (e.g., three ACKs, etc.) in order to ensure the presence of congestion before reducing QoS.
Although the description has been described in detail, it should be understood that various changes, substitutions and alterations can be made without departing from the spirit and scope of this disclosure as defined by the appended claims. Moreover, the scope of the disclosure is not intended to be limited to the particular embodiments described herein, as one of ordinary skill in the art will readily appreciate from this disclosure that processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed, may perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.