Clarify timestamp RTT role in transport contracts

This commit is contained in:
evgeny committed 2026-10-24 17:26:59 +02:00
1 parent 68a225baec
commit d5114f36b4
2 files changed
+4 -3

No files matched your search

+3 -2
View File
@@ -45,7 +45,7 @@ HELLO/CHALLENGE/CONFIRM и keepalive передаются своим незав
seq отдельно подтверждает логическую доставку. till освобождает логические записи, без BBR/снятия чужого flight.
- timestamp (0x06): обновляем RTT и EWMA |ΔRTT| пути; recv_dt_avg хранит поправки времени TX/RX в Q16.
У conn rtt_last — среднее RTT линков, rtt_avg_10 — их максимум (имя историческое).
Для BBR/RTO используются отдельные DATA RTT/jitter, измеренные по ACK физических попыток.
BBR использует отдельные DATA RTT/jitter по ACK физических попыток; RTO также учитывает rtt_last своего линка.
- [0x00] payload: сохраняем фрагмент в recv_q либо распознаём уже сохранённый/доставленный seq.
Только после этого ставим ACK с seq+attempt_no в ack_q принявшего линка; OOM до сохранения не подтверждается.
после сканирования проверяем появились ли в linked-list собранные данные которые можно переместить в выходную очередь. и перемещаем если есть.
@@ -194,7 +194,8 @@ Reset линка снимает флаг и серию RTO. Новых очер
- RECV_Rel_Timestamp: uint16_t = last_recv_local_time - last_recv_timestamp
(относительное смещение между локальным и удалённым временем)
Всего 5 байт. Добавляется только если last_recv_updated=1 (был принят пакет с момента последней отправки)
и если прошло менее 100с (dt < 1000000 таймбаз). Секция не является источником DATA RTT для BBR/RTO.
и если прошло менее 100с (dt < 1000000 таймбаз). Результат rtt_last задаёт нижнюю границу RTT для RTO;
DATA RTT и min_rtt BBR обновляются только ACK действующих физических попыток.
3. Полезная нагрузка - заголовок 0x00 (одна секция и всегда последняя):
[0x00] [ID 4 байта LE] [attempt_no 2 байта LE] [данные...]
- ID: uint32_t, номер фрагмента 1..UINT32_MAX в пределах одной эпохи потока.
+1 -1
View File
@@ -289,7 +289,7 @@ struct ETCP_LINK {
uint64_t acked_bytes; // подтверждённых байт на этом линке
uint64_t acked_packets; // подтверждённых пакетов на этом линке
uint16_t rtt_last; // round trip (время отправки + приёма)
uint16_t rtt_last; // Последний timestamp-RTT, 0.1мс (0 до измерения); нижняя граница RTT для RTO
uint32_t jitter; // Current jitter [>>16] x0.1 ms
// rtt_avg10 удалён — заменён BBR (bbr->min_rtt_us/100)
uint32_t recv_dt_avg_tx; // EWMA поправки TX timestamp, Q16 в единицах 0.1 мс, арифметика по модулю 2^32