Document BBR queue budget conflict with the fixed latency target
This commit is contained in:
1 parent
94d6dd05c8
commit
5f406c2a41
3 files changed
+16
-1
No files matched your search
@@ -41,6 +41,12 @@
|
||||
но очередь 47.9мс >40мс. RTT 20/200мс: 10.08 из 16 Мбит/с, быстрый путь недогружен; rtt FAIL.
|
||||
Пороги очереди и утилизации не ослаблены. Логи: /tmp/etcp-probe-{equal,bandwidth,rtt}.log/.csv.
|
||||
Диагностика bandwidth с состояниями модели: /tmp/etcp-probe-bandwidth-diagnostic.log.
|
||||
Дополнительная проверка 23.10: /tmp/etcp-queue-budget.log/.csv; лог включает bw Q16, DATA MSS, ACK-резерв и пик очереди.
|
||||
Пик штатного PROBE_UP: bw=16465/65536 байт/мкс, min_rtt=24000мкс, MSS=1097;
|
||||
2*BDP=12060, ACK-резерв=1893, 2*MSS=2194, cwnd=16147 байт. Сложение и единицы на этом пике корректны.
|
||||
Профиль bandwidth даёт полезные 9.045 из 10Мбит/с, очередь 47.1мс >40мс; порог теста не изменён.
|
||||
Для следующей правки требуется выбрать политику: добавить бюджет задержки к BBR либо сохранить штатные резервы
|
||||
и обосновать допустимый предел очереди с учётом сериализации. Вопрос передан пользователю; алгоритм пока не изменён.
|
||||
|
||||
[+] **ETCP/BBR: единое окно DATA и корректное осушение PROBE_RTT** — исправлено 23.10.2026:
|
||||
BBR использует MSS=normalizer->frag_size, а не wire-MTU/размер STCP-кадра. Начальное окно UDP/STCP равно 4*MSS;
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
* cwnd/inflight/delivered — байты DATA, interval/rtt — микросекунды, pacing_rate — байты в секунду.
|
||||
* MSS — максимальный DATA-фрагмент normalizer, без заголовков; не wire-MTU и не размер кадра STCP.
|
||||
* Минимальное окно — 4*MSS; PROBE_RTT осушает до max(4*MSS, 0.5*BDP), затем ждёт >=200мс и раунд ACK.
|
||||
* Транспорт применяет окно с верхним ограничением конфига и не повышает его до собственного минимума. */
|
||||
* Транспорт применяет окно с верхним ограничением конфига и не повышает его до собственного минимума.
|
||||
* Целевое окно PROBE_BW включает 2*BDP и ACK-резерв, в PROBE_UP дополнительно 2*MSS;
|
||||
* фиксированный предел времени физической очереди модель не задаёт. */
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
@@ -50,6 +50,13 @@ PROBE_RTT осушает flight до `max(4*MSS, 0.5*BDP)`, выдерживае
|
||||
DATA, отправленные в PROBE_RTT, помечаются app_limited, чтобы низкая скорость осушения не понижала оценку полосы.
|
||||
ACK-only не ограничивается этим pacing, но проходит общую физическую очередь канала.
|
||||
|
||||
Целевое окно PROBE_BW равно `2*BDP + ACK-резерв`, в PROBE_UP добавляются ещё `2*MSS`;
|
||||
применяются также минимум окна и изученные ограничения inflight. Это резерв для утилизации канала,
|
||||
а не фиксированный лимит времени очереди. Например, в диагностике канала 2Мбит/с с базовым RTT=20мс
|
||||
модель получила min_rtt=24мс и окно `12060 + 1893 + 2194 = 16147` байт DATA.
|
||||
Наблюдаемая очередь 44–48мс укладывается в такое окно, но нарушает отдельное требование теста <=40мс.
|
||||
Для фиксированного бюджета задержки нужна отдельная политика ограничения; это изменение поведения контроллера.
|
||||
|
||||
### Тестирование
|
||||
Поле `now_tb` позволяет подменять реальное время (`get_time_tb()`) на заданное — при `now_tb == 0` используется `get_time_tb()`, иначе управляемое значение. `on_cwnd_update` — callback для отслеживания изменений cwnd в тестах.
|
||||
|
||||
|
||||
Reference in new issue
Block a user