Кратко

  • RFC 6298 требует сначала обновить RTTVAR по старому SRTT и лишь затем включить то же измерение RTT в SRTT.
  • RTO складывается из сглаженного среднего и большего из двух значений — точности часов либо четырёхкратного разброса; снизу действует порог в одну секунду.

Два вида памяти об одном измерении

Первое значение R устанавливает SRTT = R и RTTVAR = R/2. Затем RTO вычисляется как SRTT + max(G, 4*RTTVAR), где G — дискретность часов.

Следующее R' не стирает накопленное состояние. RTTVAR получает четверть нового отклонения, а SRTT — лишь одну восьмую нового измерения. Разброс поэтому реагирует быстрее центра.

Сначала оценить неожиданность

Вначале вычисляется |SRTT-R'|, причём SRTT ещё хранит прежнее значение. После обновления RTTVAR среднее можно сдвинуть к R'. Именно такую последовательность требует стандарт.

При обратном порядке среднее заранее приблизилось бы к наблюдению. Выборка уменьшила бы собственное отличие до того, как алгоритм его запомнит. Порядок присваиваний здесь определяет смысл оценки, а не только форму программы.

Ограничители вокруг оценки

Если результат меньше одной секунды, RTO следует поднять до одной секунды. Допустим и верхний предел, но не ниже 60 секунд. Эти рамки не заменяют историю среднего и разброса.

Источник не сообщает, как устроены все современные реализации, и не доказывает оптимальность коэффициентов для любого пути. Правило Карна отвечает на другой вопрос — можно ли принять образец RTT. Рассматриваемый механизм начинает работать после такого решения.

Источники