In DMI I made a report showing end-to-end RTT vs end-to-end ACK RTT. My question was why there is such a big difference between the two and which one is actually relevant ?
here are the two definitions for End-to-End RTT and End-to-End ACK RTT metrics:
End-to-end ACK RTT
The time it takes for an ACK packet to travel from a client to the monitored server and back again.
The time it takes for a SYN packet to travel from the client to a monitored server and back again.
Is this helpful?
As I understand it -
RTT is calculated during the TCP handshake at the beginning of a connection (syn, syn-ack, ack). That would mean this is calculated once per session, with no load on the wire/connection.
ACK RTT is calculated during the data transfer from the ACKs between the client and the server. So ACK RTT is calculated when there is payload and traffic on the wire. There are many of these calculations per session, the number of which can be added as a metric in your report as well.
So which one is more accurate? I like to think of RTT as the "ping" time of the connection with no load. However, if I'm having some performance problems, the ACK RTT may reveal issues when data is transferring to the client. ACK RTT is usually higher but if the number is stable, the connection can be perceived to be solid.
Like many metrics in DCRUM, sometimes the actual value isn't as important as deviations over time. Sometimes the actual value (if it's high) could be an indicator of problem, but fluctuations reveal changes in the performance (either good or bad).