Add isolated slow-duplex measurements and record BBR diagnosis
This commit is contained in:
1 parent
a198cfb9e3
commit
f8a2ecaabd
2 files changed
+83
-12
No files matched your search
@@ -3,6 +3,62 @@ ETCP: независимая обратная связь каналов и до
|
||||
|
||||
Статус
|
||||
|
||||
24.10.2026, продолжение после push: отдельно исследован одиночный дуплекс2Мбит/с.
|
||||
Все прежние15 локальных коммитов вошли в origin/master после rebase; патчи сохранены.
|
||||
Из-за параллельных изменений основного каталога продолжение изолировано в ветке
|
||||
etcp/solo-duplex-20261024, база a198cfb9. Протокол ETCP/BBR на этом этапе не изменён.
|
||||
|
||||
Добавлен нативный сценарий duplex-slow: один20мс/2Мбит/с путь, два насыщенных отправителя.
|
||||
Он использует прежние проверки полезных/свежих байтов, очереди, retries и полного drain.
|
||||
UTUN_MULTIPATH_SAMPLE_MS=1000..60000 задаёт только длительность steady скоростных замеров;
|
||||
по умолчанию прежние4с, warmup3с и отказные интервалы сохранены. Пороги не снижены.
|
||||
Таблица скоростных профилей теперь содержит count/duplex вместе с настройками;
|
||||
выбор режима/числа путей больше не зависит от порядкового номера строки.
|
||||
Для единственного пути замер не повторяется как фиктивный агрегат.
|
||||
Длинный замер дополняет короткие повторы: разовый PASS одного из них задачу не закрывает.
|
||||
|
||||
Точные ACK/TX-события буферизованы отдельным диагностическим observer в /tmp,
|
||||
без синхронного I/O внутри замера и без изменения BBR. Контрольный20-секундный steady:
|
||||
полезная скорость1.726/1.658Мбит/с, retries=0; пик очереди23.7/23.0мс.
|
||||
Сторона0 провела около4.49с в PROBE_DOWN, сторона1 —6.43с из20с.
|
||||
В этой фазе pacing около1.39Мбит/с при доступной полосе2Мбит/с.
|
||||
|
||||
Разложены7763 действующих DATA ACK без повторов: прямой путь DATA,
|
||||
ожидание ACK у получателя, обратный путь ACK. Пример side=1, seq1084, t=5.830182с:
|
||||
DATA15.909мс + ожидание ACK0.029мс + обратный путь32.219мс = raw RTT48.157мс.
|
||||
В BBR переданы48.128мс после вычитания ожидания, minRTT25.451мс.
|
||||
PROBE_DOWN длится142.4мс; DATA-flight после ACK7644байта, цель осушения5915байт.
|
||||
При почти свободном прямом пути выход из DOWN продолжает ждать уменьшения
|
||||
неподтверждённого flight, который также зависит от встречной очереди ACK.
|
||||
По7763 точкам проверена сумма трёх частей и соответствие RTT после вычитания hold.
|
||||
Это подтверждает вклад обратной очереди; не доказывает, что он единственный.
|
||||
|
||||
Проверенные прототипы остаются только в /tmp, в рабочий BBR не переносились:
|
||||
- округление цели DOWN до MSS, округление Reno-раундов, их комбинация:
|
||||
есть FAIL повторных коротких прогонов; один успешный прогон не воспроизводится устойчиво;
|
||||
- добавление2мс ACK-резерва: короткий прогон1.754/1.674 FAIL, длинный1.732/1.757 PASS;
|
||||
- уменьшение очереди до min(20мс,minRTT/4): длинный1.257/1.036 FAIL;
|
||||
задержка ниже, но утилизация ухудшилась, также пострадал дуплексный агрегат;
|
||||
- временный предел окна DOWN существующей целью осушения: DOWN сократился до6..22мс,
|
||||
длинный1.754/1.764 PASS, короткий1.752/1.656 FAIL;
|
||||
- округление верхнего предела очереди до MSS, в том числе вместе с пределом DOWN:
|
||||
короткие1.734/1.681 и1.721/1.664 FAIL; длинный1.752/1.752 PASS.
|
||||
Следовательно, ни фиксированный ACK-резерв, ни округление, ни одно сокращение DOWN
|
||||
не подтверждены как самостоятельное полное исправление. Повышать minRTT/порог задержки,
|
||||
отключать PROBE_RTT или понижать порог скорости для получения PASS оснований нет.
|
||||
Далее нужны сопоставленные причины остановки DATA в CRUISE/REFILL после короткого DOWN:
|
||||
окно физического flight, общий admission budget и pacer; затем один причинный фикс
|
||||
с отдельными модельными регрессиями, короткими повторами и длинным сетевым замером.
|
||||
|
||||
Повтор текущего кода из корня:
|
||||
UTUN_MULTIPATH_DIAG=/tmp/solo.csv ./tests/test_etcp_multipath duplex-slow
|
||||
UTUN_MULTIPATH_SAMPLE_MS=20000 UTUN_MULTIPATH_DIAG=/tmp/solo-long.csv ./tests/test_etcp_multipath duplex-slow
|
||||
python3 tools/etcp_diag_report.py /tmp/solo-long.csv /tmp/solo-long.html
|
||||
Для длинного замера использовать обычные100мс срезы:10мс/60с может исчерпать буфер.
|
||||
Артефакты контрольного RTT-разложения: /tmp/etcp-solo-feedback-{model,tx,diag}.csv
|
||||
и /tmp/etcp-solo-feedback.log; observer/build: /tmp/etcp-solo-bbr-probe.c/.mk.
|
||||
Прототипы: /tmp/etcp-solo-bbr-control.c, /tmp/etcp-solo-*-model.csv и соответствующие .log.
|
||||
|
||||
24.10.2026: исправлены возраст RTT-фильтра, сроки PROBE_RTT и замораживание DATA-измерений при росте RTT.
|
||||
min_rtt_us теперь копируется вместе с probe_rtt_min_stamp_tb. Повторное использование
|
||||
сохранённого короткого минимума не ставит текущее время на старое измерение.
|
||||
|
||||
Reference in new issue
Block a user