Кратко

  • RFC 9937 задаёт PRR как стандартный способ регулировать отправку во время Fast Recovery. Отправитель получает SndCnt из собственных оценок и цели ssthresh, которую выбирает алгоритм контроля перегрузки.
  • Право на очередную отправку не является сообщением о свободном узком месте, завершённой обработке у получателя или восстановленном клиентском результате.

После потери сеть легко описывают одной зелёной фразой: ACK снова приходят, значит путь восстановлен. RFC 9937 предлагает более точный предмет. Документ IETF Standards Track от декабря 2025 года заменяет RFC 6937 и регулирует объём данных, который TCP или другой транспорт посылает в быстрой фазе восстановления. Его цель — приблизить фактический flight size к ssthresh.

ssthresh выбирает не PRR, а используемый алгоритм контроля перегрузки. PRR ведёт локальную бухгалтерию: DeliveredData — лучшая оценка того, что текущий ACK указывает как доставленное; inflight — оценка неподтверждённых данных; RecoverFS — оценка того, что может быть доставлено в этом эпизоде. Вместе с SafeACK и счётчиками эти значения дают SndCnt.

Выше цели отправка пропорциональна; ниже действует консервативная граница, слегка расширяемая при хорошем прогрессе ACK. По завершении cwnd устанавливается в ssthresh; RFC отдельно рекомендует pacing, поскольку возможна серия отправок подряд. Это описание действия конца, а не удостоверение того, что очереди, полисеры, конкурирующие потоки и удалённое приложение уже в безопасном состоянии.

SACK повышает точность, но не обязателен. Входы может предоставить разная логика обнаружения потерь. Для режима без SACK предусмотрено ограничение против лишних duplicate ACK, которые иначе завысили бы оценку доставки. Следовательно, даже хорошо защищённый расчёт видит лишь то, что доступно отправителю.

Развёртывание PRR меняет реализацию у отправителя и не требует изменений у получателя или сети. Оно совместимо с Reno и CUBIC, а справедливость остаётся свойством алгоритма контроля перегрузки. Из этого не возникает право объявить общий ресурс здоровым.

Полезен воспроизводимый чек восстановления: контроллер и версия, ssthresh, входы ACK/SACK и потерь, оценки, SndCnt, повторная передача, pacing, ограничения окна/приложения и независимое наблюдение после эпизода. Принцип работающего кода Heng Lu сохраняет именно эту границу: локальный расчёт ценен как локальный факт, но не как власть над внешним последствием.

Источники