3

According to the RFC, SampleRTT is measured once every RTT.

My text: Computer Networking: A top-down approach (6ed By: Kurose & Ross) also states, that:

Instead of measuring a SampleRTT for every transmitted segment, most TCP implementations take only one SampleRTT measurement at a time. That is, at any point in time, the SampleRTT is being estimated for only one of the transmitted but currently unacknowledged segments, leading to a new value of SampleRTT approximately once every RTT.

But when multiple unacknowledged segments are sent at the same time, and each may have a different RTT. How is it measured once every RTT, and not once per segment?

2
  • Hello and welcome ... what text are you reading? – jonathanjo Mar 22 '19 at 15:13
  • @jonathanjo Hi, Thank you. I've edited the question to add the information. – Jurgen Mar 22 '19 at 15:24
3

My understanding is that, for simplicity's sake, the algorithm is measuring the RTT of a single segment at a time, which is basically a sampling technique.

If we were measuring every segment's RTT, we'd get a full series of RTTs as the ACKs arrived. If we only have one measurement active at a time, we get a subset of the full series of times. As the next thing we do with the RTT series is smooth them, it doesn't make much difference if we have the full set or the subset.

We use the smoothed times to estimate the future RTTs, in order to reduce congestion but keep utilisation up. Having times for 100% of the segments as opposed to one-per-send-window doesn't make the predictions significantly better, because the real issue is with unpredictable sudden changes such as links going down or high-usage streams starting.

1
  • That would make sense, considering in the quote above they state "approximately once every RTT". Thank you! – Jurgen Mar 22 '19 at 16:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.