RFC: 3540
Оригинал: Robust Explicit Congestion Notification (ECN) Signaling with Nonces
Категория: Экспериментальный
Дата публикации:
Авторы: , ,
Перевод: Николай Малых

RFC 3540, Страница 7 из 13

6.1. Ресинхронизация после потери или маркировки

После восстановления требуется заново синхронизировать суммы nonce для отправителя и получателя, чтобы была возможность дальнейшей проверки подтверждений. Когда сумма на стороне получателя некорректна, эта некорректность будет сохраняться пока будут продолжаться потери.

Это позволяет воспользоваться простым механизмом ресинхронизации, когда отправитель сбрасывает свою сумму nonce в то значение, которое получатель указал в подтверждении данных, полученных после снижения размера окна насыщения. При обработке явных сигналов о насыщении это будет первое подтверждение без флага ECN-Echo (подтверждение пакета, содержащего флаг CWR).

Отправитель            Получатель

                       исходная сумаа = 1
-- 1:4 ECT(0)       -> NS = 1 + 0(1:4) = 1(:4)
<- ACK 4, NS=1      --
-- 4:8 ECT(1) -> LOST
-- 8:12 ECT(1)      -> расчет суммы nonce откладывается
                       до восстановления порядка доставки
<- ACK 4, NS=0      --
-- 12:16 ECT(1)     -> расчет суммы nonce отложен
<- ACK 4, NS=0      --
-- 4:8 retransmit   -> NS = 1(:4) + ?(4:8) +
                            1(8:12) + 1(12:16) = 1(:16)
<- ACK 16, NS=1     --
-- 16:20 ECT(1) CWR ->
<- ACK 20, NS=0     -- NS = 1(:16) + 1(16:20) = 0(:20)

Рисунок 4: Расчет сумм nonce на стороне получателя в случае потери
пакетов и ресинхронизация после потери. Сумма nonce не изменяется,
пока не будет кумулятивного подтверждения.

На практике ресинхронизация может быть обеспечена за счет сохранения бита, которые имеет значение 1, если хранящееся у отправителя ожидаемое значение суммы отличается от суммы, полученной в подтверждении CWR и 0 в остальных случаях. Этот бит смещения синхронизации может использоваться при сравнении ожидаемой суммы с принятым значением суммы nonce.

Отправителю следует игнорировать значения суммы nonce, возвращаемые в подтверждениях с флагом ECN-echo.

Когда подтверждение относится лишь к части сегмента (например, в результате ресегментации TCP на промежуточном узле вместо использования фрагментации пакетов IP), отправителю следует принять сумму nonce, ожидаемую для следующей границы сегмента. Иными словами, подтверждения, относящиеся лишь к части исходного сегмента, будут включать ожидаемую сумму nonce только тогда, когда сегмент подтвержден полностью.

Следует отметимть, что при использовании ECN отправитель может по той или иной причине не указывать для некоторых пакетов поддержку ECN. Отправитель ECN-nonce должен после передачи таких пакетов выполнять ресинхронизацию путем передачи CWR с первым пакетом данных после не поддерживающих ECN пакетов. Отправитель теряет защиту для всех неподтвержденных пакетов, пока не произойдет ресинхронизация.

2007 - 2018 © Русские переводы RFC, IETF, ISOC.