RTT Stats
RTT (Round-Trip Time) statistics are generated when the -r option is
specified along with the -l option (Section 4.1).
The following fields of output are produced along with the output generated
by the -l option.
surya:/home/mani/tcptrace-manual> tcptrace -lr indica.dmp.gz
1 arg remaining, starting with 'indica.dmp.gz'
Ostermann's tcptrace -- version 6.4.5 -- Fri Jun 13, 2003
153 packets seen, 153 TCP packets traced
elapsed wallclock time: 0:00:00.128422, 1191 pkts/sec analyzed
trace file elapsed time: 0:00:19.092645
TCP connection info:
1 TCP connection traced:
TCP connection 1:
host a: 192.168.0.70:32791
host b: webco.ent.ohiou.edu:23
complete conn: yes
first packet: Thu Aug 29 18:54:54.782937 2002
last packet: Thu Aug 29 18:55:13.875583 2002
elapsed time: 0:00:19.092645
total packets: 153
filename: indica.dmp.gz
a->b: b->a:
total packets: 91 total packets: 62
. . . . . .
. . . . . .
throughput: 10 Bps throughput: 94 Bps
RTT samples: 48 RTT samples: 47
RTT min: 74.1 ms RTT min: 0.1 ms
RTT max: 204.0 ms RTT max: 38.8 ms
RTT avg: 108.6 ms RTT avg: 8.1 ms
RTT stdev: 44.2 ms RTT stdev: 14.7 ms
RTT from 3WHS: 75.0 ms RTT from 3WHS: 0.1 ms
RTT full_sz smpls: 1 RTT full_sz smpls: 1
RTT full_sz min: 79.5 ms RTT full_sz min: 0.1 ms
RTT full_sz max: 79.5 ms RTT full_sz max: 0.1 ms
RTT full_sz avg: 79.5 ms RTT full_sz avg: 0.1 ms
RTT full_sz stdev: 0.0 ms RTT full_sz stdev: 0.0 ms
post-loss acks: 0 post-loss acks: 0
For the following 5 RTT statistics, only ACKs for
multiply-transmitted segments (ambiguous ACKs) were
considered. Times are taken from the last instance
of a segment.
ambiguous acks: 1 ambiguous acks: 0
RTT min (last): 76.3 ms RTT min (last): 0.0 ms
RTT max (last): 76.3 ms RTT max (last): 0.0 ms
RTT avg (last): 76.3 ms RTT avg (last): 0.0 ms
RTT sdv (last): 0.0 ms RTT sdv (last): 0.0 ms
segs cum acked: 0 segs cum acked: 0
duplicate acks: 0 duplicate acks: 0
triple dupacks: 0 triple dupacks: 0
max # retrans: 1 max # retrans: 0
min retr time: 380.2 ms min retr time: 0.0 ms
max retr time: 380.2 ms max retr time: 0.0 ms
avg retr time: 380.2 ms avg retr time: 0.0 ms
sdv retr time: 0.0 ms sdv retr time: 0.0 ms
- RTT samples The total number of Round-Trip Time (RTT) samples
found.
tcptrace
is pretty smart about choosing only valid RTT samples. An
RTT sample is found only if an ack packet is received from the other endpoint
for a previously transmitted packet such that the acknowledgment value is 1
greater than the last sequence number of the packet. Further, it is required
that the packet being acknowledged was not retransmitted, and that no packets
that came before it in the sequence space were retransmitted after the packet
was transmitted. Note : The former condition invalidates RTT samples due to
the retransmission ambiguity problem, and the latter condition invalidates
RTT samples since it could be the case that the ack packet could be
cumulatively acknowledging the retransmitted packet, and not necessarily
ack-ing the packet in question.
- RTT min The minimum RTT sample seen.
- RTT max The maximum RTT sample seen.
- RTT avg The average value of RTT found, calculated
straightforward-ly as the sum of all the RTT values found divided by the
total number of RTT samples.
- RTT stdev The standard deviation of the RTT samples.
- RTT from 3WHS The RTT value calculated from the TCP 3-Way
Hand-Shake (connection opening) [2], assuming that the SYN packets of
the connection were captured.
- RTT full_sz smpls The total number of full-size RTT samples,
calculated from the RTT samples of full-size segments. Full-size segments
are defined to be the segments of the largest size seen in the connection.
- RTT full_sz min The minimum full-size RTT sample.
- RTT full_sz max The maximum full-size RTT sample.
- RTT full_sz avg The average full-size RTT sample.
- RTT full_sz stdev The standard deviation of full-size RTT
samples.
- post-loss acks The total number of ack packets received after
losses were detected and a retransmission occurred. More precisely, a
post-loss ack is found to occur when an ack packet acknowledges a
packet sent (acknowledgment value in the ack pkt is 1 greater than the
packet's last sequence number), and at least one packet occurring before the
packet acknowledged, was retransmitted later. In other words, the ack packet
is received after we observed a (perceived) loss event and are recovering
from it.
- ambiguous acks, RTT min, RTT max, RTT avg, RTT sdv These
fields are printed only if there was at least one ack received that was
ambiguous due to the retransmission ambiguity problem i.e., the segment
being ack-ed was retransmitted and it is impossible to determine if the ack
is for the original or the retransmitted packet. Note that these samples are
not considered in the RTT samples explained above. The statistics
below are calculated from the time of capture of the last transmitted instance
of the segment.
- ambiguous acks is the total number of such ambiguous acks seen.
The following RTT min, RTT max, RTT avg, RTT sdv fields represent
the minimum, maximum, average, and standard deviation respectively of the
RTT samples calculated from ambiguous acks.
- segs cum acked The count of the number of segments that were
cumulatively acknowledged and not directly acknowledged.
- duplicate acks The total number of duplicate acknowledgments
received. An ack packet is found to be a duplicate ack based on this
definition used by 4.4 BSD Lite TCP Stack [10] :
o The ack packet has the biggest ACK (acknowledgment number) ever seen.
o The ack should be pure (carry zero tcp data payload).
o The advertised window carried in the ack packet should not change from the
last window advertisement.
o There must be some outstanding data.
Note : older versions of
tcptrace
(until version 6.4.2) used a legacy
algorithm using just the first condition amongst the four listed above,
to treat an ack as duplicate ack.
This older behavior may be emulated (if necessary at all) with the
--turn_off_BSD_dupack option.
- triple dupacks The total number of triple duplicate
acknowledgments received (three duplicate acknowledgments acknowledging
the same segment),
a condition commonly used to trigger the fast-retransmit/fast-recovery
phase of TCP.
- max # retrans The maximum number of retransmissions seen for
any segment during the lifetime of the connection.
- min retr time The minimum time seen between any two
(re)transmissions of a segment amongst all the retransmissions seen.
- max retr time The maximum time seen between any two
(re)transmissions of a segment.
- avg retr time The average time seen between any two
(re)transmissions of a segment calculated from all the retransmissions.
- sdv retr time The standard deviation of the
retransmission-time samples obtained from all the retransmissions.
The raw RTT samples found can also be dumped into data files with
the -Z option as in
tcptrace -Z file.dmp
This generates
files of the form a2b_rttraw.dat and b2a_rttraw.dat (for both directions of the
first TCP connection traced), c2d_rttraw.dat and d2c_rttraw.dat (for the
second TCP connection traced) etc. in the working directory.
Each of the datafiles contain lines of the form :
seq# rtt
where seq# is the sequence number of the first byte of the segment
being acknowledged (by the ack packet that contributed this RTT sample) and
rtt is the RTT value in milli-seconds of the sample. Note that only
valid RTT samples (as counted in the RTT Samples field listed above)
are dumped.
Super-User
2003-08-29