Record pacer validation and remaining multipath failures
This commit is contained in:
1 parent
c7a530092d
commit
ff2860ffbc
2 files changed
+59
-20
No files matched your search
@@ -1,8 +1,42 @@
|
||||
ETCP: независимая обратная связь каналов и доставка при отказах
|
||||
Проверка архитектуры и план следующего изменения, 23.10.2026
|
||||
Проверка архитектуры и последовательные исправления, 24.10.2026
|
||||
|
||||
Статус
|
||||
|
||||
Исправление pacer реализовано: таймер назначается на первый TB, разрешающий отправку,
|
||||
а не на полное погашение долга. Кредит и допустимый положительный долг по-прежнему
|
||||
ограничены 1мс; BBR/cwnd/min_rtt, RTO, wire-формат и порядок callbacks не менялись.
|
||||
Новых полей, очередей и таймеров нет. Успешная постановка таймера видна в ETCP TRACE:
|
||||
link/rate_Bps/now_tb/debt_until_tb/fraction/delay_tb. Контракт отражён в .h и протоколе.
|
||||
|
||||
Регрессия до исправления падает: при долге10TB таймер получает10TB вместо первого
|
||||
допустимого1TB. После исправления проверены18 сочетаний долга/дроби, строгая граница,
|
||||
INT_MAX и повторная постановка при раннем вызове. Callback с опозданием100мс сохраняет
|
||||
ограниченный burst; OOM повторного таймера закрывает соединение без ложного ready.
|
||||
Настоящий uasync callback проверен с reset и close, освобождающим физический линк.
|
||||
Windows42 сценария PASS и с управляемыми часами, и с UTUN_TEST_REAL_TIME=1.
|
||||
Восемь тестов windows/BBR/session/transport/init_liveness/STCP traffic/NCD/control_server
|
||||
проходят ASAN/UBSan с detect_leaks=1, без ошибок и утечек. check.sh:184/184,
|
||||
proxy9/9, burst1/1, load8/8 PASS,134217728 проверенных байт,162с.
|
||||
|
||||
Штатная последовательная multipath-матрица c7a53009 после калибровки эмулятора:
|
||||
FAIL,14 нарушений прежних порогов. Восемь относятся к скорости дуплекса, включая
|
||||
одиночные каналы; шесть — к паузам/задержкам slow-drop,two-stuck,load-drop/load-hold.
|
||||
Агрегированный goodput (min(application,fresh DATA),Мбит/с): equal14.438/16,
|
||||
bandwidth9.052/10, rtt14.299/16, fast-distant8.836/10, slow-distant9.343/10,
|
||||
three11.125/12, bidirectional8.394/8.458 из10 на каждое направление.
|
||||
Первые шесть скоростных профилей проходят. Drop-forward проходит с паузой58.001мс
|
||||
и задержкой83.656мс. Оставшиеся паузы: slow-drop239.421мс, two-stuck201.381мс,
|
||||
load-drop213.644мс, load-hold208.899мс; задержки slow-drop264.044мс и two-stuck482.693мс.
|
||||
Все профили завершают доставку и контроль порядка/ресурсов. Это один прогон;
|
||||
изменение отдельных скоростей/пауз относительно контроля не доказывает устойчивый эффект.
|
||||
Полная матрица ещё не проходит. Далее отдельно разбирать ограничения BBR/cwnd и PROBE_RTT,
|
||||
затем ранние копии/здоровье каналов и STCP backpressure; этот фикс их не реализует.
|
||||
Логи: /tmp/etcp-pacer-ready-{windows-final,real-time,full-check}.log,
|
||||
/tmp/etcp-pacer-ready-asan-test_*.log, /tmp/etcp-pacer-ready-matrix.log/.csv.
|
||||
|
||||
Диагностика и проверка плана до исправления,24.10.2026:
|
||||
|
||||
Контроль текущей master a22a27b7,24.10.2026. Эмулятор прошёл калибровку2/8Мбит/с,
|
||||
затем штатная матрица выполнена последовательно с прежними порогами:15 нарушений.
|
||||
Агрегированный goodput (min(application,fresh DATA),Мбит/с): equal14.238/16,
|
||||
@@ -41,15 +75,16 @@ three10.669/12, bidirectional8.335/8.212 из10 на каждое направл
|
||||
Отдельный контроль без PROBE_RTT показывает вклад этой фазы в просадку агрегата,
|
||||
однако также не проходит всю матрицу; отключение PROBE_RTT не предлагается как исправление.
|
||||
|
||||
Перед переносом: регрессия позднего timer callback при незаполненном cwnd, проверка
|
||||
При переносе выполнены: регрессия позднего timer callback при незаполненном cwnd, проверка
|
||||
границы допуска с нулевой/ненулевой дробью и сохранения ограниченного burst после
|
||||
долгого простоя; смена ставки/0/unlimited, INT_MAX, OOM таймера, reset/close из callback.
|
||||
Проверить вначале windows/BBR/transport и ASAN/UBSan, затем повторить всю матрицу
|
||||
последовательно. Следующими отдельно разбирать оставшиеся ограничения BBR/cwnd,
|
||||
Профильные тесты и ASAN/UBSan проходят; полная матрица повторена последовательно,
|
||||
результаты приведены выше. Следующими отдельно разбирать оставшиеся ограничения BBR/cwnd,
|
||||
периодические PROBE_RTT и ранние копии; первый фикс не закрывает эти пункты.
|
||||
Артефакты: /tmp/etcp-probe-review.c/.mk, /tmp/etcp-duplex-waits.log,
|
||||
/tmp/etcp-ready-timer-{1,2}.log/.csv, /tmp/etcp-pacer-review-analysis.py,
|
||||
/tmp/etcp-pacer-review-results.json. Код протокола в репозитории в этом контроле не менялся.
|
||||
/tmp/etcp-pacer-review-results.json. Во время исходных контрольных опытов код протокола
|
||||
в репозитории не менялся; производственное исправление и его проверки описаны выше.
|
||||
|
||||
История реализации и предыдущих проверок,23.10.2026:
|
||||
|
||||
@@ -86,7 +121,7 @@ check.sh184/184, proxy9/9, burst1/1, load8/8 PASS,165с; load проверил13
|
||||
Логи: /tmp/etcp-attempt16-full-check.log, /tmp/etcp-attempt16-{windows,session}.log,
|
||||
/tmp/etcp-attempt16-asan-*.log, /tmp/etcp-attempt16-bandwidth.log/.csv.
|
||||
Приведённые ниже прежние скоростные замеры относятся к исходному8-байтовому ID;
|
||||
вся матрица разных RTT/дуплекса после сокращения поля повторно не запускалась.
|
||||
на момент той проверки матрица разных RTT/дуплекса после сокращения поля не повторялась.
|
||||
|
||||
Точечные проверки: BBR 20/20, windows 26 сценариев PASS. Восемь тестов
|
||||
BBR/windows/session/transport/STCP traffic/NCD/stream_tx_stats/control_server проходят ASAN/UBSan
|
||||
|
||||
+18
-14
@@ -4,20 +4,24 @@
|
||||
|
||||
## Текущие задачи
|
||||
|
||||
[ ] **ETCP: полезная утилизация нескольких каналов и доставка при зависании части линков** — контроль рабочей master a22a27b7.
|
||||
24.10.2026: штатная последовательная матрица с прежними порогами даёт15 нарушений:
|
||||
один пограничный одиночный канал профиля three,6 скоростных проверок дуплекса и8 проверок пауз/задержек.
|
||||
Equal14.238/16, bandwidth9.000/10, RTT20/200:13.855/16Мбит/с проходят; дуплекс8.335/8.212 из10 FAIL.
|
||||
Пограничный three не повторился в3 отдельных прогонах; доставка/порядок/баланс ресурсов проходят.
|
||||
Следующий изолированный фикс — первый допустимый момент пробуждения pacer, сохраняя кредит1мс:
|
||||
shaper_arm сейчас ждёт полного погашения долга, хотя отправка допустима при долге<1мс.
|
||||
Округление/запоздание таймера приводит к сбросу кредита и потере6.5/9.4% заданного темпа в подробном опыте.
|
||||
Прототип /tmp будит к границе допуска и уменьшает потери после ожидания pacer на95..99%; потери cwnd остаются.
|
||||
Оба опыта прототипа сохраняют штатный BBR/PROBE_RTT, но весь дуплексный профиль пока не проходит.
|
||||
До переноса нужны проверки поздних callback, границы дробного долга, ограниченного burst, rate change и lifecycle;
|
||||
затем профильные sanitizer-тесты и полная матрица. Исполняемый код репозитория в этой диагностике не менялся.
|
||||
Результаты/план: doc/etcp_multipath_plan.txt, /tmp/etcp-pacer-review-results.json;
|
||||
логи /tmp/etcp-multipath-current-matrix.log/.csv и /tmp/etcp-ready-timer-{1,2}.log/.csv.
|
||||
[ ] **ETCP: полезная утилизация нескольких каналов и доставка при зависании части линков** — pacing исправлен, общая задача открыта.
|
||||
24.10.2026: таймер pacer ждёт первого разрешённого TB, а не погашения всего долга;
|
||||
кредит1мс, BBR/cwnd/min_rtt, RTO и wire-формат сохранены. Нового состояния и ресурсов нет.
|
||||
До исправления регрессия получает10TB вместо1TB; после него18 сочетаний долга/дроби проходят.
|
||||
Проверены INT_MAX, ранний/поздний callback, ограниченный burst, OOM повторного таймера,
|
||||
rate change и reset/close из настоящего uasync callback. Windows42 сценария PASS с обоими режимами часов;
|
||||
восемь профильных тестов ASAN/UBSan с detect_leaks=1 без ошибок/утечек.
|
||||
check.sh184/184, proxy9/9, burst1/1, load8/8 PASS (134217728 байт),162с.
|
||||
Полная последовательная матрица c7a53009 с прежними порогами: FAIL,14 нарушений —
|
||||
8 скоростных проверок дуплекса и6 проверок пауз/задержек slow-drop,two-stuck,load-drop/load-hold.
|
||||
Equal14.438/16, bandwidth9.052/10, RTT20/200:14.299/16Мбит/с; первые6 скоростных профилей PASS.
|
||||
Дуплекс8.394/8.458 из10Мбит/с остаётся FAIL. Drop-forward PASS: пауза58.001мс, задержка83.656мс.
|
||||
Паузы slow-drop/two-stuck/load-drop/load-hold:239.421/201.381/213.644/208.899мс;
|
||||
задержки slow-drop/two-stuck:264.044/482.693мс. Доставка, порядок и контроль ресурсов проходят.
|
||||
Это один прогон; сравнение с исходными15 нарушениями не доказывает устойчивое улучшение всей матрицы.
|
||||
Далее отдельно разбирать ограничения BBR/cwnd и PROBE_RTT, затем ранние копии/здоровье линков и STCP backpressure.
|
||||
Результаты/план: doc/etcp_multipath_plan.txt; /tmp/etcp-pacer-ready-matrix.log/.csv,
|
||||
/tmp/etcp-pacer-ready-{windows-final,real-time,full-check}.log и /tmp/etcp-pacer-ready-asan-test_*.log.
|
||||
Реализованы начальный pacing от 4*MSS/RTT, точные DATA B/s и ограниченный кредит shaper,
|
||||
разделение логического seq/payload и физических attempt_id, ACK/RTT/RTO каждого пути,
|
||||
ротация повторов A→B→C→A при UP-каналах, rollback отказавшего send и запрос потерянного till.
|
||||
|
||||
Reference in new issue
Block a user