The goal of this experiment is to determine whether packet tailgating has accuracy comparable to previously known techniques with a significant reduction in the number of packets sent and received. For these measurements, we use a prototype implementation of nettimer. The results in this section are preliminary and are intended as a proof of concept and not an evaluation of the full potential of the technique.
We compare the results of the latest publicly available versions (listed in Table 2) of pathchar [7], clink [4], pchar [11], and nettimer. pathchar, clink, and pchar implement the one-packet technique described earlier. Although 1.0 is the latest publicly available version of Downey's clink program, it does not incorporate the adaptive algorithms described in [4]. However, those techniques are complementary with packet tailgating.
| TTL | C | BW/C | pathchar | clink | pchar | nettimer |
| 1 | 1 | 10 | 7.9 | 7.8 | 7.9 | 6.7 |
| 2 | 1 | 100 | 34 | 35 | 34 | 62 |
| 3 | 1 | 100 | 31 | 32 | 32 | 21 |
| 4 | 1 | 100 | 9.6 | 7.9 | 7.9 | 38 |
| TTL | C | BW/C | pathchar | clink | pchar | nettimer |
| 1 | 1 | 10 | 8.0 | 7.9 | 7.9 | 7.6 |
| 2 | 1 | 100 | 35 | 32 | 34 | 36 |
| 3 | 1 | 100 | 77 | 100 | 88 | 100 |
| 4 | 1 | 622 | 345 | 223 | 222 | 244 |
| 5 | 1 | 622 | 145 | 173 | 330 | 239 |
| 6 | 1 | 622 | 289 | 508 | 183 | 286 |
| 7 | 1 | 622 | 207 | 168 | 224 | 277 |
| 8 | 1 | 155 | 55 | 60 | 49 | 45 |
| 9 | 2 | 100 | 36 | 35 | 39 | 55 |
| 10 | 2 | 100 | 73 | 44 | 66 | 34 |
| 11 | 1 | 100 | 36 | 52 | 43 | 66 |
We ran each program using default settings from
tnt.stanford.edu to statistics.stanford.edu (4 hops)
and to www.berkeley.edu (11 hops). The short path has a RTT
of 1.0ms and the long path has an RTT of 4.2ms. The actual number of
channels of the links and their bandwidths are listed in the 2nd and
3rd columns of Table 3 and
Table 5. We chose these paths because we know that
both endpoints are well connected and that their administrators would
be likely to tell us the link bandwidths of these links. In addition,
both the one-packet and tailgating techniques can measure these paths
because the destinations do not rate-limit or filter ICMP packets and
there is no very slow link followed by a very fast link.
The measurement source node, tnt.stanford.edu, is an Intel Pentium II 266MHz with 256MB of main memory. It is running Redhat 6.1 with a GNU/Linux kernel 2.2.12-20. The results were gathered from 1:21 to 2:13 AM PST on May 30. We chose this time because there would be relatively little traffic in the network. We used tcpdump to determine the number of packets sent and received.
The short path results are summarized in Table 3 and Table 4. All of the programs have approximately the same accuracy, but nettimer uses an order of magnitude fewer packets than the others. In bandwidth measurements, pathchar, clink, and pchar are mostly in agreement, which is not surprising considering their measurement technique is similar. In particular, all of these programs under-estimate the last link on this path. This is because the destination host responds to probes with an ICMP port unreachable message which is up to 584 bytes. This is within the RFC standard because it sometimes allows the sender to make a more accurate correlation between the ICMP packet and the UDP packet that caused it. However, pathchar, clink, and pchar apparently do not take into account how much longer the large ICMP packet takes to travel back to the source, causing an under estimation of the bandwidth.
The long path results are summarized in Table 5 and Table 4. These results show that there is not significant accumulation of error in the tailgating implementation compared to the others. However, the results of all the programs deviate by as much as 68% from the nominal values, even though there was relatively little traffic during this time.
We believe that the four most likely contributors to error for all four programs are 1) unreachable nominal values, 2) errors in implementation, 3) noise, 4) timing resolution, and 5) multi-channel links.
Although some of the links have a nominal value of 622Mb/s, in practice a router may not actually be able to forward packets this quickly. We are attempting to investigate this issue through simulation.
Another possible source of error is the implementation. The problem with not accounting for large ICMP packets is an example of such an error. If three independent implementations of the same algorithm all have the same error, then there are likely even more errors in our singular implementation.
The problem with noise is that we are trying to measure differences in
packet delays that are several orders of magnitude smaller than delays
caused by other traffic. In our experiment, to measure the 622Mb/s
links, we have to detect differences in delays of
= 19
s. Just one packet
queued at the wrong time could result in a delay of
= 1.2ms. This is almost 100 times
larger than the delay we are trying to measure. One solution is to
deploy nettimer software at the destination instead of
relying on TCP RST packets. This would eliminate the interference of
noise along the reverse path. We are implementing this in our next
version of nettimer.
The timing resolution of the host machine and operating system can
also cause a large error in the bandwidth estimate. We measured the
timing resolution of the source machine by sending small packets to
the loopback interface and measuring the smallest non-zero
inter-packet delay. This gives an upper bound on timing
resolution. The timing resolution of tnt.stanford.edu is
no worse than 20
s. Nonetheless, this could cause us to measure
a 622Mb/s link as a 414Mb/s link or a 1333Mb/s link. The GNU/Linux
2.3 kernel has a more efficient method of conveying packet timings to
applications, and we hope to test this shortly.
Finally, while we are adapting nettimer to detect multi-channel links, the one-packet techniques will have difficulty measuring the multi-channel links 9 and 10 because of the inability of their fundamental model to consider such links.
Kevin Lai 2001-04-04