Кратко
- RFC 6298 вычисляет срок повторной передачи из сглаженного времени пути и его вариации, отказываясь от неоднозначных образцов после повтора.
- Первое ожидание может начаться с одной секунды; потерянный SYN возвращает три секунды для данных, а каждое следующее истечение удваивает RTO.
Молчание — слабое свидетельство. Мог потеряться сегмент, мог потеряться ACK, а могли просто задержаться оба. Слишком ранний повтор создаёт копию и добавляет нагрузку на, возможно, перегруженный путь. Слишком долгое ожидание не чинит настоящую потерю. RTO выбирает между ошибками, не утверждая, что знает причину.
Оценка хранит время и неопределённость
До первого измерения RFC рекомендует RTO в одну секунду, разрешая большее консервативное значение. После первого образца R задаются SRTT = R, RTTVAR = R/2 и RTO = SRTT + max(G, 4*RTTVAR), где G — точность часов.
Для следующих образцов RTTVAR сначала обновляется со старым SRTT; beta равна четверти, alpha — одной восьмой, K — четырём. Затем меняется SRTT. Такой порядок измеряет неожиданность новой величины относительно прежней оценки. RTO остаётся суммой сглаженного времени и большего из G и четырёх вариаций.
Результат меньше секунды следует поднять до секунды. Максимум разрешён только в 60 секунд или больше. Реализация может быть осторожнее, но не должна повторять агрессивнее алгоритма.
Не каждый ACK учит часы
Алгоритм Карна обязателен. ACK после повторной передачи может относиться к первой или второй копии и не должен становиться образцом RTT, кроме случая, когда TCP Timestamps снимает неоднозначность. Без меток обычно нужен хотя бы один образец за RTT; с ними возможно много, но правила оценщика сохраняются.
Это не PAWS: метка здесь связывает ACK с отправкой, а не отбрасывает старые номера после оборота последовательности.
Один таймер для самых старых неподтверждённых данных
При отправке новых данных с остановленным таймером он запускается с текущим RTO. ACK для всего ожидающего останавливает его. ACK, продвигающий подтверждение при оставшихся данных, перезапускает его с тем же RTO.
При истечении TCP повторяет самый старый неподтверждённый сегмент, удваивает RTO и запускает таймер с удвоенным значением. Экспоненциальное отступление делает действие при повторном молчании всё дороже. Поздний чистый RTT может снизить RTO; после нескольких отступлений SRTT и RTTVAR можно очистить, если они больше не описывают путь.
У первой секунды есть исключение. Если SYN истёк при RTO менее трёх секунд, после установления соединения перед данными значение нужно вернуть к трём. Путь опроверг быстрое предположение.
Таймер управляет, а не ставит диагноз
Нападающий может задержать измеряемый пакет и увеличить RTO или попробовать снизить его подделкой. Сглаживание и отступление ограничивают длительность, но не подтверждают источник задержки. Истечение — действие в неопределённости, не доказательство потери.
Единственный источник — RFC 6298, опубликованный в Standards Track в июне 2011 года. Он задаёт алгоритм и историческую мотивацию, но не современные настройки и не RTT конкретной сети.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
