|
|
Xiapu Luo and Rocky K. C. Chang
Department of Computing
The Hong Kong Polytechnic University
Hung Hom, Kowloon, Hong Kong, SAR, China
Email: {csxluo|csrchang}@comp.polyu.edu.hk
Therefore, it is important to measure packet reordering [17] and to quantify the degree of reordering [13,14]. Previous works have studied various characteristics of packet reordering, such as its frequency, magnitude, and its relationship with other factors. They can be categorized into two main classes--passive measurement [15] and active measurement [1,2,3,5,6,16,17,18]. In this paper, we concentrate on the active measurement approaches, which can be further classified into two groups. The first is referred to as bulk-transport based measurement that exchanges a relatively large amount of real application traffic between many participating sites [1,3,5,6,16]. The second is packet-train based measurement that sends a train of probing packets, and the feedback information is then used to infer the presence of packet reordering [2,17,18].
The main advantage of the bulk-transport based measurement is their ability to measure the impact of packet reordering on real applications and on different transport protocols. Moreover, they can observe the packet reordering phenomena in both the forward-path and backward-path by examining traffic traces in different directions. However, these approaches require coordinations among various participating sites, which obviously cannot be done easily for an arbitrarily large network scale. The packet-train based measurement, on the other hand, allows any Internet host to measure packet reordering on the paths between itself and any other host. Moreover, this approach usually requires only a small number of packets to conduct the measurement.
The focus of this paper is on the packet-train based measurement methods, which unfortunately still suffer from a number of practical limitations. First, the ICMP and TCP packets used in the ICMP-based approach [2] and the TCP SYN Test [17] are often rate-limited or even filtered by firewalls [19]. Second, both the Dual Connection Test [17] and Tulip [18] rely on the assumption that the ID field in the IP header (IPID) increases monotonically across TCP connections for the same server. This assumption, unfortunately, does not hold in some popular systems, such as Linux and OpenBSD. Third, the Single Connection Test [17] may yield inaccurate results due to the delayed acknowledgment algorithm. The Dual Connection Test also suffers from inaccurate results in the presence of load balancing schemes. Fourth, both the TCP Data Transfer Test [17] and the ICMP-based method [2] cannot distinguish all packet reordering scenarios. Moreover, all the aforementioned methods detect end-to-end packet reordering. That is, two packets can arrive inorder even though they may be reordered in an even number of times on the path.
In this paper we propose three new methods to end-to-end packet reordering measurement, which can detect all four reordering cases: no-reordering, forward-path reordering, backward-path reordering, and dual-path reordering. Since they use TCP data as probing messages in a single connection, the probing messages and the responses will not be filtered by firewalls or routers. Moreover, each measurement is conducted in one TCP session; therefore, the measurement result will not be affected by a content-blind load balancing scheme. To reduce the impact on the normal network traffic, each method injects only a minimal number of packets into the network, and the size of the response packets is also small.
The three methods differ from each other only in the mechanisms to trigger the required responses from the remote host, catering for the diverse TCP implementations in the Internet. Another important feature of our methods is that they only rely on the TCP sliding window protocol, which is supported by all TCP variants (e.g. TCP Tahoe, TCP Reno, TCP NewReno, etc.) [21,22]. Moreover, our approaches make use of customized receiving window size and MSS (Maximum Segment Size) to control the number and size of response packets. Furthermore, we have employed a timeout mechanism to discard suspicious samples as a result of packet losses. We have implemented the three methods in a tool called POINTER, and have thoroughly tested and verified the approaches in a test-bed and websites.
The rest of the paper is organized as follows. In section 2, we introduce the principles behind the three new approaches, including a short review on the TCP sliding window protocol. Based on the general approach, we detail in section 3 the three measurement methods. In section 4, we present the measurement results obtained from a test-bed and the Internet for the validation of the methods. Moreover, we have analyzed the correlation of packet reordering events on a backward path from two websites, and discovered that they share the same path where packet ordering occurs. We finally conclude this paper in section 5 with current work.
The result of Corollary 1 gives us a hint in designing a comprehensive and effective reordering detection scheme. First of all, consider that the server responds with and upon receiving and in order. That is, if there is no forward-path reordering, will be generated first and then followed by . Therefore, the order of receiving and on the client side can differentiate between the cases of no-ordering and backward-ordering.
To trigger the third response , we need an ``erroneous event'' taken place at the server. The novelty here is that we use the reordering of and to serve as the erroneous event. That is, if there is forward-path reordering, the receiver will be compelled to send and another normal response ( or ). For instance, the receiver responds with first and then . Then the order of receiving them by the client can differentiate between the cases of forwarding-reordering and dual-path reordering.
Based on the discussion above, we only need a pair of probing messages and to detect all four reordering cases. Note that we have so far assumed no packet losses and a reasonable amount of latency between the message arrivals at the server. Moreover, the server's responses to and only depend on the information inscribed in the messages and the relative order of the two messages received by the server. We will address the effect of packet losses and the solution to them in section 3.4. In the next section, we first present several possibilities of selecting and based on the TCP sliding window mechanism.
Name | Description | |
SND.UNA | Oldest unacknowledged sequence number (SN) | |
SND.NXT | SN of the next segment to be sent | |
SND.WND | Size of the send window | |
RCV.NXT | SN of the next segment to be received | |
RCV.WND | Size of the receive window | |
SEG.ACK | Acknowledgment number (AN) of a segment | |
SEG.SEQ | First SN of a segment | |
SEG.LEN | The length of a segment in bytes |
In our proposed methods, a client sends a probing message pair to induce two TCP data segments from the server when there is no packet reordering on the forward path, i.e., the probing message pair passes all eight steps. On the other hand, the reordering of the probing message pair, which is perceived as an erroneous event at the server, will induce the transmission of a pure ACK and a data segment. There are altogether three ways of generating the pure ACK.
First of all, a pure ACK can be generated as a result of not passing step 1 where a TCP receiver performs a sequence number check (SNC). The purpose of the SNC is to determines whether the received segment's SN is acceptable according to Eq. (1) or Eq. (2). If the segment fails the SNC (an erroneous event), some TCP implementations will drop the segment and return a pure ACK whose value is specified in the second part of Eq. (3).
A pure ACK can also be generated as a result of not passing step 5, where a TCP receiver performs an acknowledgment number check (ANC) based on Eq. (4). If the ACK is acceptable, the receiver will update its send window by setting SND.UNA = SEG.ACK. Otherwise, if SEG.ACK SND.UNA, i.e., a duplicate ACK, the receiver will ignore it. Moreover, if SEG.ACK SND.NXT (an erroneous event), i.e., acknowledging bytes that have not been sent, some TCP implementations will drop the segment and send back a pure ACK whose value is specified in the second part of Eq. (3).
Finally, if a TCP implementation does not respond to both failed SNC and failed ANC, a pure ACK can still be induced by sending a out-of-ordered segment. Accordingly, we have designed three different probing message pairs based on the server's responses discussed above. The corresponding methods are referred to as (ACknowledgment based Measurement) for the response to a failed SNC, (Sequence number and ACK based Measurement) for the response to a failed ANC, and for the response to a out-of-order segment.
We have tested common systems to observe their responses to the failed SNC and failed ANC. As shown in Table 2, the majority of the tested systems responded to unacceptable ACKs. Therefore, the ACM method can be applied to detect packet reordering on the paths to these systems. Although the Linux systems do not respond to unacceptable ACKs, they respond to unacceptable SNs. Thus, the SAM1 method can be applied to them. Finally, the SAM2 method can be applied to the VM and HP-UX systems which ignore both unacceptable ACKs and unacceptable SNs.
Operating systems | Response to | Response to | Measurement | |
unacceptable SNs | unacceptable ACKs | Methods | ||
NT4/Win98, Win2000, WinXP, Win2003, | ||||
MaxOSX, NetWare, SCO UNIX, NetBSD, | Not tested | Send a pure ACK | ACM | |
AIX, OS/2, IRIX, Tru64, FreeBSD, | ||||
Solaris 9 , Solaris 8, Solaris*, OpenVMS | ||||
Linux | Send a pure ACK | No response | SAM1 | |
VM and HP-UX | No response | No response | SAM2 |
The probing session can be carried out at any time in the ESTABLISHED state. To keep the following discussion simple, however, we start the probing procedure immediately after the TCP three-way handshake is completed. The notations used in the remaining of this paper are summarized in Table 3, and the segments involved in the 3-way handshaking are given in Table 4. Note that these segment exchanges are the same for all three methods. and are the initial SNs for the client and server, respectively. In , the client initiates a SYN segment with a small advertised window size of . The main function of the small window size is to ensure that the server will adopt for its send window size. Therefore, even before issuing the HTTP request in , the client is able to predict correctly that the server will return one data segment and the size of the TCP payload (), provided that the size of the requested document is larger than . The packet sequence concerned is shown in (3)-(5) in Table 4. As we shall see later, the ANs in the probing message pair are the same for all three methods, because they all exploit the predicability of the server's payload through the small . However, they differ in their SNs and the TCP payloads.
Notations | Description | |
The th segment dispatched by the client | ||
The th segment dispatched by the server | ||
The TCP SYN packet sent by the client | ||
- | The TCP SYN/ACK packet responded by the server | |
th HTTP request sent by the client | ||
Size of in bytes | ||
th pure ACK sent by the client in the ESTABLISHED state | ||
th pure ACK sent by the server in the ESTABLISHED state | ||
th data segment containing the HTTP response sent by the server | ||
The size of the client's advertised window | ||
The size of the server's advertised window |
If these two ACKs arrive at the server in order (Figs. 1(a) and 1(c)), the server will expectedly transmit two data segments and , one after the other, which contain the requested document. The order that and are received at the client can then be used to differentiate between the no-ordering and backward-path ordering cases.
However, if these two ACKs are reordered in the forward path (Figs. 1(b) and 1(d)), the server will discover that is an unacceptable ACK, because and at the time of receiving the ACK. In this case, the server, which is implemented under the first group of systems in Table 2, is expected to drop and to send back a pure ACK . When , the first ACK, later arrives, the server will send out the requested data in . Thus, the order of receiving and can be used to differentiate between the forward-path and dual-path reordering cases.
|
|||
(a) No reordering |
(b) Forward-path reordering | (c) backward-path reordering | (d) Dual-path reordering |
No. | Segment | Sequence | Acknowledgment | Segment Type | Payload |
Number | Number | Length | |||
The probing message pair | |||||
6 | Pure ACK () | 0 | |||
7 | Pure ACK () | 0 | |||
Server's responses in the absence of packet reordering in the forward path | |||||
8 | HTTP reply () | ||||
9 | HTTP reply () | ||||
Server's responses in the presence of packet reordering in the forward path | |||||
8' | Pure ACK () | 0 | |||
9' | HTTP reply () |
From the parameters in Table 6, it is not difficult to see that the server will send two more data segments, each in the size of , in response to the probing message pair when there is no forward-path reordering. Therefore, the order of receiving the two data segments can be used to differentiate between the no-ordering and backward-path reordering cases.
On the other hand, if the probing message pair is reordered (Figs. 2(b) and 2(d)), will fail the SNC on the server side, because the SN falls outside the legal range according to Eq. (2). Specifically, from Table 6, 's SN is given by () and (0 payload length). On the other hand, at the time of receiving , the server's states as a TCP receiver are given by and . According to Eq. (2), 's SN is therefore illegal, i.e., . As discussed before, the server is therefore expected to discard this pure ACK and to respond with an ACK (). When that contains a correct SN arrives, the server will clearly respond with . Therefore, the order of receiving and can differentiate between the backward-path reordering and dual-path reordering cases. Thus, unlike the method that sends out two pure ACKs, this method sends a second HTTP request, so that the TC4's SN is different from TC3's.
|
|||
(a) No reordering |
(b) Forward-path reordering | (c) backward-path reordering | (d) Dual-path reordering |
No. | Segment | Sequence | Acknowledgment | Segment Type | Payload |
Number | Number | Length | |||
The probing message pair | |||||
6 | HTTP request () | ||||
7 | Pure ACK () | 0 | |||
Server's responses in the absence of packet reordering in the forward path | |||||
8 | HTTP reply () | ||||
9 | HTTP reply () | ||||
Server's responses in the presence of packet reordering in the forward path | |||||
8' | Pure ACK () | 0 | |||
9' | HTTP reply () |
Same as the ACM method, the total size of the requested document must be at least to ensure a proper working of this method. In terms of the overhead, the size of the probing message pair for the method is larger than that in the method by bytes, the size of the second HTTP request message. However, the maximum amount of HTTP data returned by the server is the same for both methods, i.e., bytes.
Similar to the method, the probing message pair uses different SNs. However, notice from Table 7 that the SNs are offset by and respectively, where is a small value. That is, both messages contain unexpected but acceptable SN (out-of-order segments). Therefore, the recipient of will enable the server to advance its send window and to send a data segment. When later reaches the server, this segment acknowledges all the outstanding data sent by the server (AN = ); therefore, the server will also advance its send window. As a result, the server will reply with another data segment . The server therefore responds with a total of two data segments whose order of arriving at the client can be used to differentiate between the no-ordering and backward-path reordering cases.
If the two messages are reordered, as shown in Figs. 3(b) and 3(d), the message contains an unacceptable ACK. However, the HP-UX and VM server will ignore the illegal AN, but, similar to other TCP implementations, it will definitely respond to the out-of-ordered segment with a duplicate ACK, . There is a minor difference between the HP-UX and VM systems though. contains a SN of for an HP-UX server) whereas contains a SN of for a VM server, and both contain an AN of . However, this difference does not affect our measurement method, and in fact it can be used to remotely identify these two systems [19]. On the other hand, the second message contains an acceptable AN of . In this case, the server will advance its and reply with a data segment with and . Therefore, the order of receiving the ACK and data segment from the server can be used to differentiate between the backward-path reordering and dual-path reordering cases.
|
|||
(a) No reordering |
(b) Forward-path reordering | (c) backward-path reordering | (d) Dual-path reordering |
No. | Segment | Sequence | Acknowledgment | Segment Type | Payload |
Number | Number | Length | |||
The probing message pair | |||||
6 | HTTP request () | ||||
7 | HTTP request () | ||||
Server's responses in the absence of packet reordering in the forward path | |||||
8 | HTTP reply () | ||||
9 | HTTP reply () | ||||
Server's responses in the presence of packet reordering in the forward path | |||||
8' | Pure and duplicate ACK () | 0 | |||
9' | HTTP reply () |
The size of the requested document must again be at least to ensure a proper working of the method. It is not difficult to show that the maximum amount of data required by the method is the same as that for the method, which is only bytes. The size of the probing packets in the method is larger than that of the method by the size of .
To illustrate the problem, consider the scenario in Fig. 4(a) where there is backward-path reordering and the segment is lost. If the client interprets the segment and the retransmitted segment as the server's responses to its probing messages, it will arrive at a false conclusion that there is no packet reordering.
To remedy this problem, we impose a deadline for receiving responses from the server. As illustrated in Fig. 4(a), after the client sends , it will not accept any response arriving after the deadline and declare the measurement unsuccessful. In another example, Fig. 4(b) depicts that the dual-path reordering would be mistaken for the forward-path reordering if the deadline mechanism were not used. It is obvious that the server can only use the timeout mechanism to retransmit the lost packet because it is impossible to trigger the fast retransmit mechanism. We therefore set the deadline to , where is the mean value of RTT between the client and the server.
|
||
(a) A packet loss in the presence of backward-path reordering | (b) A packet loss in the presence of dual-path reordering |
By setting 20 pipes between the subset of 192.168.1.0/24 and 192.168.2.0/24 in the Dummynet, we can emulate the four packet reordering scenarios on the test-bed. We let each method keep on probing the server until it has detected packet reordering events in the probing packet pairs. The measurement results are then compared with the packet traces. Our findings show that all the detection results produced by the ACM and SAM1 methods are correct for all test cases. Moreover, we have validated the two methods on other systems available in our department, including WinXP, Netware, FreeBSD, and Solaris. To validate the methods with the remaining systems listed in Table 2, we have conducted the experiments with the WWW servers in the Internet, to be presented next.
For each web server, the validation process consists the following steps:
Moreover, we have conducted more measurements from WWW servers among the 200 websites used in the above validation process, and obtained measurement results for each server. Fig. 6 shows the empirical cumulative distribution function (CDF) of the forward-path reordering rate and backward-path reordering rate. The measured dual-path reordering rate is zero for all cases. The rate is given by the percentage of measurements that indicate the presence of packet reordering. Then we rank all the servers according to a nondecreasing order of their reordering rates, and obtain the CDF. The results show that more than of the paths experienced forward-path reordering at least once, and backward-path reordering was observed on about of the paths. Moreover, the forward-path reordering was more prevalent than the backward-path reordering in terms of the percentage of reordering events. The forward-path reordering rate could go up as high as 0.4, while that for the backward-reordering was only 0.3.
Unlike the previous results for the websites, the results here indicate that there are more backward-path reordering events than the forward-path ones. Fig. 7(a) shows the mean backward-path reordering rates to both servers obtained from the 59 sets of measurement. Each point is an average of the samples within a set of measurement. The rates for both servers are very similar in many sets of samples. Moreover, the overall means rates for both servers are approximately equal to . To probe into the issue further, we compute the pair-difference test statistic for the 59 sets of data [33], and find that with a confidence interval the backward-path reordering rates are similar for the two servers.
Next, we study and compare the time series of the measurements obtained for the two servers. We use , to denote the presence/absence of backward-path reordering in the corresponding sample. refers to www.applecomputer.com and refers to kidsafe.apple.com. in the presence of backward-path reordering; otherwise, . We compute the autocorrelation value for the th set of data according to [34]
Besides the autocorrelation function, we define a pair-reorder index (PI) by
|
(a) The mean backward-path reordering rates. |
|
(b) The average autocorrelation of backward-path reordering. |
|
(c) The pair-reorder index for backward-path reordering. |
We have implemented the three methods in POINTER and validated the methods in most common systems in both a test-bed and the Internet. We are now in the process of making the tool available in different platforms. With POINTER, one can detect packet reordering on any path in the Internet. Moreover, the tool can be used to study other important issues, such as the correlation of packet reordering events presented in this paper. Furthermore, we are in the process of improving these three methods and conducting a much larger-scale measurement study on the prevalence of packet reordering in the Internet today.
This document was generated using the LaTeX2HTML translator Version 2002-2 (1.70)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
Need help?
Last changed: 22 Sept. 2005 aw |