Describe ACK handling and bounded DATA pacing in the ETCP protocol

This commit is contained in:
evgeny committed 2026-10-23 00:10:01 +02:00
1 parent 4dba742149
commit f8d532b04d
1 file changed
+5 -1
+5 -1
View File
@@ -14,7 +14,8 @@ HELLO/CHALLENGE/CONFIRM и keepalive передаются своим незав
inflight_bytes + длина DATA <= inflight_lim_bytes. Проверка выполняется без переполнения.
Среди допустимых выбирается минимум inflight_bytes, при равенстве — round-robin.
3. Если DATA не помещается, он остаётся в очереди; для накопленных ACK выбирается
рабочий линк без ограничения DATA-cwnd, с учётом shaper.
рабочий линк без ограничения DATA-cwnd/pacing. ACK-only не увеличивает нагрузку DATA-shaper;
физическая очередь канала остаётся общей, её накопление ограничивают DATA-cwnd/pacing BBR.
4. Выделить ETCP_DGRAM до удаления DATA из очереди и изменения счётчиков.
Отправляемый DATA занимает окно выбранного линка и переходит в input_wait_ack.
Пакет содержит ACK, опциональные timestamp/измерительные секции и последнюю секцию PAYLOAD.
@@ -59,6 +60,9 @@ Selective ACK освобождает отдельную inflight-запись,
input_queue даже если подтверждённые записи уже удалены по selective ACK.
ACK ограничивается последним назначенным seq (next_tx_id - 1); сравнения учитывают uint32 wrap.
BBR каждого линка получает ACK/loss samples и возвращает cwnd и pacing rate.
Скорость — доставленные байты за max(интервал отправки, интервал доставки), по снимкам при отправке.
Интервал между соседними ACK не используется: ACK одной пачки могут обрабатываться в один tick.
Внутренняя полоса — байты/мкс Q16; pacing — байты/с, BDP — байты, без повторного множителя MSS.
Лимит DATA — не менее 8192 байт и не более bbr_max_cwnd (по умолчанию 1048576).
Отказ из-за нехватки окна сохраняет cwnd_limited до следующего ACK: вычитание ACK
не должно скрывать этот факт от BBR. app_limited учитывает ожидающие очереди и