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

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

2. Обзор

Работа ECN-nonce строится на базе существующих сигнальных механизмов ECN-Echo и CWR (Congestion Window Reduced — уменьшение размера окна насыщения). Предполагается знакомство читателя ECN [ECN]. Для простоты ECN-nonce описывается только для одного направления, хотя этот механизм работает параллельно в обоих направлениях.

Протокол ECN для TCP сохраняется неизменным за исключением добавления нового поля в заголовок TCP. В соответствии с [RFC3168] в поле ECN заголовка IP исходящих пакетов устанавливается код ECT(0) или ECT(1). Перегруженные маршрутизаторы изменяют значение этого поля на CE. Когда получатель TCP видит код CE, он устанавливает флаг ECE (ECN-Echo) в последующих подтверждениях, пока не получит флаг CWR. Этот флаг (CWR) устанавливается отправителем в новых данных в результате реакции отправителя на перегрузку.

ECN-nonce позволяет получателю уведомить отправителя, что подтверждаемый сегмент отправителя был принят без маркеров перегрузки. Случайное однобитовые значения (nonce) помещаются в 2-битовый код ECT. Однобитовая сумма этих значений возвращается в виде флага в заголовке TCP, называемого битом NS (Nonce sum — сумма значений nonce). Маркировка пакетов удаляет значения nonce в кода ECT, поскольку CE переписывает оба бита ECN в заголовках IP. Поскольку для расчета суммы требуется каждое значение nonce, корректная сумма предполагает получение непомеченного пакета. В результате не только предотвращается сокрытие маркировки не получателями, но и возможность снятия маркеров на промежуточных маршрутизаторах без предсказания исходных значений nonce.

Отправитель может проверить возвращенную получателем сумму значений nonce, чтобы убедиться в том, что индикация перегрузки путем маркировки (или отбрасывания) пакетов не была скрыта. Поскольку сумма nonce выражается в виде одного бита, отправитель имеет 50% вероятность обнаружения получателей, скрывающих наличие индикатора перегрузки. Поскольку каждое подтверждение представляет собой независимую попытку такого определения, обман разоблачается очень быстро, если сигналы о насыщении повторялись.

В следующих параграфах приводится более детальное описание протокола ECN-nonce.

В каждом подтверждении содержится сумма значений nonce, которая представляет собой 1-битовый результат сложения (четность или исключающее ИЛИ) значений nonce для подтверждаемого диапазона байтов. Сумма используется по той причине, что не каждый пакет подтверждается индивидуально и гарантия доставки подтверждений не обеспечивается. Если не пользоваться суммой, можно будут просто возвращать значение nonce из пакета без маркировки для уведомления отправителя о том, что пакет был доставлен без маркировки. Однако в силу того, что для таких подтверждений доставка не гарантируется, отправитель не сможет отличить потерю подтверждения ACK от сокрытия маркированных пакетов. Использование суммы nonce не позволяет получателю скрывать получение пакетов с марками путем простого отказа от их подтверждения. Поскольку значения nonce и сумма этих значений являются однобитовыми, предсказание суммы не проще, чем предсказание отдельных значений. Расчет суммы значений nonce показан на рисунке 1.

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

                   исходная сумаа = 1
-- 1:4 ECT(0)  --> NS = 1 + 0(1:4) = 1(:4)
<- ACK 4, NS=1 ---
-- 4:8 ECT(1)  --> NS = 1(:4) + 1(4:8) = 0(:8)
<- ACK 8, NS=0 ---
-- 8:12 ECT(1)  -> NS = 0(:8) + 1(8:12) = 1(:12)
<- ACK 12, NS=1 --
-- 12:16 ECT(1) -> NS = 1(:12) + 1(12:16) = 0(:16)
<- ACK 16, NS=0 --


Рисунок 1: Расчет суммы значений nonce (NS) на приемной стороне.
2007 - 2017 © Русские переводы RFC, IETF, ISOC.