This invention relates to packet data transmissions, in particular transmission of data using the Transmission Control Protocol (TCP) over Internet Protocol (IP) networks. TCP provides stability of networks by its integrated congestion and flow control mechanisms. Further, information on TCP and IP networks are, for instance, available from U.S. Pat. No. 6,298,041 B1.
While the TCP sending rate is normally controlled by the sender, there are scenarios and environments, where the receiver has some knowledge of the used links and bit rates, which make it worthwhile to let the receiver control the data transmission rate of the sender to some extent. In order to apply this mechanism, the receiver should have knowledge of the Round Trip Time (RTT) value to control or limit the sender's bit rate. As a result, the sender would not have to probe for the available bit rate by itself, which normally comes to the expense of packet losses and is less accurate than the receiver's information.
The sending bit rate in the TCP sender is controlled by a sliding window called congestion window. The sender sends data and receives cumulative acknowledgements. Outstanding data is the data that the sender has already sent, but has not received acknowledgements for it. The sender is allowed to have the amount of outstanding data equal to the current value of the congestion window. Because the data is usually acknowledged one RTT after it was sent, the allowed sending bit rate, B_send can be calculated from the RTT and the congestion window size, cwnd, as: B_send=cwnd/RTT. An example of these typical values could be RTT=100 ms and B_send=64 Kbit/s.
The congestion window at the server is dynamically adjusted according to gathered network information, e.g. in cases of packet losses, the TCP sender would assume congestion in the network and deflate the window. In cases of no packet losses, the window is slightly and regularly increased. However, the window which TCP uses to control the sending of data packets, is the minimum of the congestion window and another window-size signalled by the receiver called the advertised window, awnd. This is usually used for the flow control features of TCP, i.e. to ensure that a fast TCP sender does not send more data than the receiver can consume.
In conclusion, the receiver can limit the upper sending rate of the sender of a TCP connection, by using the integrated flow control and send an advertised window with the value calculated from RTT and maximum sending bit rate.
If only one connection member has data to send, RTT measurements for the receiver in a TCP connection is only possible at the beginning of a connection (TCP starts with a 3-way handshake). The measurement, which the receiver can perform at connection setup, is not accurate, because it is based on small control packets (usually around 40 bytes). The data packets are much larger in size, e.g. 1500 bytes, and thus the RTT is usually much higher than for the small control packets.
Considering this, receivers can make a rough RTT measurement at connection set-up, but do not have further RTT information afterwards. As the RTT is usually dynamic and variable in IP networks, the receiver should collect RTT information more frequently to perform a reliable sending bit rate control at the sender.
As described above, the receiver in a TCP connection can control the sending bit rate of the sender by signalling an upper limit in form of the advertised window. However, in order to calculate an advertised window to be signalled, the receiver needs an RTT measurement. The better and more accurate the measurement is, the better is the window calculation and the better is the link usage after the sender adopted the window size.
The present invention provides a method of performing round-trip time (RTT) measurements in a data packet receiver in a fast and reliable manner as set forth in claim 1. Preferred embodiments of the method are subject to various dependent claims. According to the method of the present invention, the receiver determines the time interval between sending of an acknowledgement, which triggers transmission of a new data packet, and the time instant of receiving the triggered data packet. If this measurement mechanism is done an a regular basis, it provides the receiver with a fairly good estimation of the RTT.
In the following, the invention will be described in further detail with reference to the accompanying drawing which show:
A receiver having a TCP connection with a sender via a network can start an RTT measurement by sending an acknowledgement to the sender and waiting for receipt of a data packet triggered by this acknowledgement. However, the receiver should ensure that several requirements are fulfilled before starting the RTT measurement. In the following, several example requirements are described.
For the purpose of the following description, a data packet consists of a header having a typical length of 40 bytes, this header including a sequence number field which indicates the first data byte in this segment. This value can serve as an identifier for the data packet. A typical size for a TCP packet including header and data is 1500 bytes. Generally, it is understood by those skilled in the art that an acknowledgement contains the awnd value and the sequence number of the data packet which the sender of the acknowledgement is expecting to receive, this is known as the acknowledgement number.
In the following,
As a first requirement R1 after start (step 100A in
For example if awnd has a value of 10 data segments, it can be assumed that the sender is no longer in the slow start phase after receiving 19 packets.
In
The Figure shows that waiting 2*awnd−1=2*5−1=9 packets (until packet with SN=10 arrives) coincides with the point at where the sender is flow-controlled. This means that every ACK packet only triggers one data packet at the sender. The first packet in the example for which this applies is packet number 10.
A second requirement R2 is that the receiver should be able to estimate the sequence number of the data packet the current acknowledgement is going to trigger at the sender. In other words, that the receiver is able to calculate the value of an expected sequence number, SN_expect (step 300A). This check succeeds if the advertised window awnd has not been increased for a predetermined number of packets (step 300B). A side effect of increasing the value of the advertised window is the possibility of having bursts of packets at the sender. This would also disturb the RTT measurement and erroneously increase its value.
In
A further query representing a third requirement R3 is performed to check whether the ACK triggers a new data packet at the TCP sender (step 400A). This means that a query is performed whether the awnd value has been decreased (step 400B) If so, no RTT measurement is possible for a predetermined number of next data packets. If there is a decrease, it is decided to wait for an additional number of (awnd_old-awnd_new) packets (step 450B).
In the example illustrated in
Only if all above-mentioned requirements R1-R3 are fulfilled, the receiver starts RTT measurement as indicated in step 500A, B with the current acknowledgement. For making an RTT measurement, the steps as illustrated in
In step 510, an acknowledgement of the currently received data packet is sent from the receiver to the sender. Further, as illustrated as step 520, the time instant T_ack, at which the acknowledgement was sent, is stored. In step 530, a sequence number SN_expect of an expected data packet is determined which indicates the sequence number of the first byte of the TCP data packet triggered by the current acknowledgement. The expected sequence number is calculated as follows:
SN_expect=SN—ack+(awnd−1)*MSS
where SN_ack is the acknowledgement number in the current acknowledgement and MSS denotes the maximum segment size in bytes.
In the receiver, in step 540, the sequence number of all data packets SN_data that are received after T_ack is compared according to the condition
SN_data≧SN_expect.
If this condition is not true, the receiver waits for the next received data packet if the condition is true, the next step 550 is performed wherein the actual time instant T_now is stored. In the next step 560, a calculation of RTT can be performed as
RTT=T_now−T—ack.
Generally, RTT measurements described in the flowchart of
Number | Date | Country | Kind |
---|---|---|---|
02013311 | Jun 2002 | EP | regional |
Number | Name | Date | Kind |
---|---|---|---|
6560243 | Mogul | May 2003 | B1 |
6622172 | Tam | Sep 2003 | B1 |
6745361 | Gradischnig | Jun 2004 | B1 |
6754228 | Ludwig | Jun 2004 | B1 |
6757255 | Aoki et al. | Jun 2004 | B1 |
7035214 | Seddigh et al. | Apr 2006 | B1 |
20020154600 | Ido et al. | Oct 2002 | A1 |
20020181494 | Rhee | Dec 2002 | A1 |
Number | Date | Country |
---|---|---|
0948168 | Oct 1999 | EP |
1077559 | Feb 2001 | EP |
0205496 | Jan 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20030231636 A1 | Dec 2003 | US |