Document reduced RTT multiplier and jitter margin for RTO
This commit is contained in:
1 parent
9dbef48eb3
commit
e0f28bf851
3 files changed
+10
-5
No files matched your search
@@ -12,7 +12,8 @@ STARTUP в DRAIN после целого раунда RTT выше min_rtt+бю
|
||||
Логический seq/payload отделён от физических ETCP_TX_ATTEMPT. Новый DATA содержит
|
||||
seq+attempt_id; ACK своего пути содержит seq+attempt_id+receiver_delay_us.
|
||||
Till подтверждает только логическую доставку. Собственные очереди попыток,
|
||||
ACK, RTT/jitter и RTO принадлежат линку. RTO=clamp(2*(RTT+jitter),10мс,1с);
|
||||
ACK, RTT/jitter и RTO принадлежат линку. RTO=clamp(1.2*RTT+1.5*jitter+3мс,10мс,1с),
|
||||
с округлением вверх до целой микросекунды;
|
||||
до DATA ACK используется KA RTT того же пути, без него начальное значение 1с.
|
||||
Retry обходит каналы относительно last_link фрагмента; курсор фиксируется только
|
||||
после принятия send транспортом. Поздние/чужие ACK не меняют чужой flight/BBR.
|
||||
@@ -30,7 +31,7 @@ check.sh завершён успешно за166с: дополнительные
|
||||
load — 8/8 соединений,134217728 байт с проверкой содержимого за13.66с.
|
||||
Лог: /tmp/etcp-attempts-final-check.log. Он не включает долгую multipath-матрицу.
|
||||
|
||||
Вся штатная multipath-матрица пока FAIL: 20 нарушений порогов.
|
||||
До изменения формулы RTO штатная multipath-матрица FAIL: 20 нарушений порогов.
|
||||
RTT20/200мс: 13.552/16Мбит/с, длинный канал wire7.173/8Мбит/с;
|
||||
после исправления STARTUP пики очереди около 23мс вместо 220мс.
|
||||
Есть недобор bidirectional (обратное направление 7.116/10Мбит/с).
|
||||
@@ -291,6 +292,8 @@ uint8: хранить факт состоявшейся отправки отд
|
||||
До первого DATA ACK использовать RTT того же KA-пути как начальную оценку
|
||||
либо консервативный начальный RTO. Расчёт по собственным RTT/jitter с запасом
|
||||
ограничить диапазоном 10мс..1с; 10мс — нижняя граница, не верхняя.
|
||||
Текущая формула по выбору пользователя: 1.2*RTT+1.5*jitter+3мс, округление вверх;
|
||||
начальный jitter после первого DATA ACK равен RTT/2, установившийся — EWMA отклонения.
|
||||
Добавить ротацию retry сразу, пока старый канал ещё UP; не откладывать до DOWN.
|
||||
Не оставлять промежуточный формат,
|
||||
в котором новый ACK продолжает обращаться только к last_link.
|
||||
|
||||
@@ -36,7 +36,8 @@ HELLO/CHALLENGE/CONFIRM и keepalive передаются своим незав
|
||||
после сканирования проверяем появились ли в linked-list собранные данные которые можно переместить в выходную очередь. и перемещаем если есть.
|
||||
|
||||
Таймер попыток каждого линка (etcp_tx.c):
|
||||
- RTO = clamp(2*(data_rtt_us+data_jitter_us), 10000, 1000000) мкс.
|
||||
- RTO = clamp(ceil(1.2*data_rtt_us + 1.5*data_jitter_us + 3000), 10000, 1000000) мкс.
|
||||
Целочисленный расчёт использует uint64 и округляет вверх до целой микросекунды.
|
||||
RTT использует собственный DATA ACK минус receiver_delay; EWMA RTT=1/8, jitter=1/4 |RTT-EWMA|.
|
||||
Первый RTT задаёт jitter=RTT/2. До DATA ACK используется RTT keepalive этого же пути, без него RTO=1с.
|
||||
- FIFO содержит физические попытки в порядке принятия транспортом. Таймер назначается по старейшей;
|
||||
|
||||
+3
-2
@@ -8,11 +8,12 @@
|
||||
Реализованы начальный pacing от 4*MSS/RTT, точные DATA B/s и ограниченный кредит shaper,
|
||||
разделение логического seq/payload и физических attempt_id, ACK/RTT/RTO каждого пути,
|
||||
ротация повторов A→B→C→A при UP-каналах, rollback отказавшего send и запрос потерянного till.
|
||||
RTO=clamp(2*(RTT+jitter),10мс,1с). Пределы памяти: попытки 16384/линк, 32768/соединение, ACK 16384/линк.
|
||||
RTO=clamp(ceil(1.2*RTT+1.5*jitter+3мс),10мс,1с), округление до мкс. Пределы: попытки 16384/линк,
|
||||
32768/соединение, ACK 16384/линк. Без RTT начальный RTO=1с.
|
||||
STARTUP завершается после целого раунда устойчивой очереди выше бюджета, без искусственного изменения BW.
|
||||
BBR20/20, windows26 сценариев PASS; восемь тестов ASAN/UBSan с detect_leaks=1 PASS; основной набор183/183 PASS.
|
||||
check.sh завершён успешно; дополнительные tcp_proxy_full/burst/load PASS (8 соединений,134217728 проверенных байт).
|
||||
Полная штатная multipath-матрица: FAIL, 20 нарушений. Есть недобор RTT20/200мс и bidirectional;
|
||||
Полная штатная multipath-матрица до смены формулы RTO: FAIL, 20 нарушений. Есть недобор RTT20/200мс и bidirectional;
|
||||
slow-drop даёт паузу401мс, два зависших пути676мс, DROP/HOLD под нагрузкой229–243мс.
|
||||
Ранние копии до RTO, здоровье/пробы каналов и STCP backpressure пока не реализованы; пороги тестов сохранены.
|
||||
OOM после принятия данных исправлен аварийной сменой эпохи с сохранением физических линков.
|
||||
|
||||
Reference in new issue
Block a user