Document agreed retransmission bounds and verified timer behavior

This commit is contained in:
evgeny committed 2026-10-23 02:21:43 +02:00
1 parent c3ac337ef0
commit b349d7b7b2
2 files changed
+13 -2

No files matched your search

+7 -1
View File
@@ -9,6 +9,11 @@ STARTUP/DRAIN, сериализация и обратный трафик не д
В штатном тесте equal получено 14.464/16Мбит/с, bandwidth — 9.060/10Мбит/с;
очередь медленного канала в bandwidth сократилась примерно с 47 до 21мс.
Изменения протокола и учёта попыток ниже ещё не реализованы.
По уточнению пользователя расчётный RTO ограничен снизу 10мс, сверху 1с.
Текущая общая формула 2*(RTT+jitter) сохранена; нижняя граница уже исправлена.
test_etcp_windows: 17 сценариев PASS, включая семь проверок RTO на управляемых
и обычных часах (нижняя граница, RTT20/200мс, jitter, верхняя граница).
Логи: /tmp/etcp-rto-windows.log, /tmp/etcp-rto-windows-real.log.
Что подтверждено кодом и диагностикой
@@ -221,7 +226,8 @@ uint8: хранить факт состоявшейся отправки отд
перестаёт соответствовать новому владению. FIFO допустима при одном текущем
RTO для всех попыток линка; пересчитывать таймер при его смене.
До первого DATA ACK использовать RTT того же KA-пути как начальную оценку
либо консервативный начальный RTO; не начинать неизвестный путь с 5мс.
либо консервативный начальный RTO. Расчёт по собственным RTT/jitter с запасом
ограничить диапазоном 10мс..1с; 10мс — нижняя граница, не верхняя.
Добавить ротацию retry сразу, пока старый канал ещё UP; не откладывать до DOWN.
Не оставлять промежуточный формат,
в котором новый ACK продолжает обращаться только к last_link.
+6 -1
View File
@@ -31,7 +31,12 @@ HELLO/CHALLENGE/CONFIRM и keepalive передаются своим незав
пересканирование inflight:
- запускается при добавлении пакета в очередь ожидания ACK (wait_ack_cb). устанавливается таймер на первый неистекший пакет.
- возраст последней отправки сравнивается с (RTT_avg10*32+jitter*32)/16,
ограниченным диапазоном 50..10000 таймбаз (5ms..1s).
ограниченным диапазоном 100..10000 таймбаз (10ms..1s).
RTT_avg10 — историческое имя максимального RTT среди links; jitter — среднее
по links значение link->jitter/32768. Оба значения здесь в единицах 0.1ms.
При текущих коэффициентах формула равна 2*(RTT_avg10+jitter), включая запас.
Проверка таймером назначается с дополнительной 1ms и округлением uasync вверх
до миллисекунды; фактический callback может выполняться позже расчётного RTO.
- истёкший пакет освобождает окно прежнего линка и переходит в input_send_q;
его новая попытка проходит обычный допуск по окну и pacing выбранного линка.
- очередь FIFO (сортирована по timestamp добавления = времени отправки), сканирование прекращается на первом неистекшем пакете