Document ETCP receiver-clock bandwidth sampling
This commit is contained in:
1 parent
d2703b2145
commit
8ff4a0bf46
2 files changed
+6
-4
No files matched your search
@@ -116,9 +116,11 @@ ACK с подтверждениями также возвращает точку
|
||||
OOM до сохранения и отвергнутые DATA его не меняют. Считаются байты полезной нагрузки секции, без заголовков.
|
||||
При отправке попытка запоминает известную точку. ACK действующей попытки продвигает точку пути;
|
||||
повторный/чужой ID её не меняет, переставленные ACK не откатывают. Противоречивая пара логируется и игнорируется.
|
||||
При положительных дельтах добавляется нижняя граница интервала ceil(delivered*delta_rx_us/delta_rx_bytes).
|
||||
Итоговый interval — максимум трёх границ; BW может только уменьшиться относительно прежнего sample.
|
||||
Счётчики и времена — uint64, часы двух сторон не сравниваются. Нулевые/неизвестные дельты не создают границы.
|
||||
При положительных дельтах interval=max(send_us,ceil(delivered*delta_rx_us/delta_rx_bytes)).
|
||||
Приёмный интервал заменяет ACK clock: обратная очередь больше не завышает BW сжатием ACK
|
||||
и не занижает его растяжением. Send-интервал сохраняет защиту от сжатия приёмного времени.
|
||||
Без достоверной приёмной базы/положительных дельт используется max(send_us,ack_us).
|
||||
Счётчики и времена — uint64, часы двух сторон не сравниваются; нужны только дельты одних часов.
|
||||
Если интервал не представим в uint32, sample не используется для BW вместо насыщения, завышающего скорость.
|
||||
После пустого физического flight база начинается заново, чтобы простой не занижал скорость следующей передачи.
|
||||
Reset потока обнуляет точки приёма; исчерпание локального 64-битного счётчика закрывает соединение с ERROR.
|
||||
|
||||
@@ -55,7 +55,7 @@ enum bbr_ack_phase { BBR_ACKS_INIT = 0, BBR_ACKS_REFILLING, BBR_ACKS_PROBE_ST
|
||||
|
||||
struct bbr_rate_sample {
|
||||
uint32_t delivered; // байты, подтверждённые за измерительный интервал; не только текущим ACK
|
||||
uint32_t interval_us; // измерительный интервал, мкс; ETCP берёт max(send,ACK,приёмная граница); 0 — нет оценки BW
|
||||
uint32_t interval_us; // мкс; ETCP: max(send,приёмная граница), без RX-базы max(send,ACK); 0 — нет оценки BW
|
||||
uint32_t rtt_us; // RTT линка, мкс; 0 — пока неизвестен
|
||||
uint32_t acked_sacked; // новые подтверждённые байты текущего ACK; только они увеличивают общий delivered
|
||||
uint32_t prior_delivered; // счётчик delivered при отправке подтверждённого пакета, modulo 2^32
|
||||
|
||||
Reference in new issue
Block a user