RFC: 3168
Оригинал: The Addition of Explicit Congestion Notification (ECN) to IP
Предыдущие версии: RFC 2481
Категория: Предложенный стандарт
Дата публикации:
Авторы: , ,
Перевод: Николай Малых

6.1.1 Инициализация TCP

На этапе организации соединения TCP модули TCP на стороне отправителя и получателя обмениваются информацией о своем намерении использовать ECN. После завершения этого согласования отправитель TCP устанавливает код ECT в заголовке IP пакета данных для индикации сетевым устройствам возможности и желания использовать ECN для этого пакета. Этот код показывает маршрутизаторам, что они могут маркировать данный пакет кодом CE, если они хотят использовать такой метод индикации насыщения. Если соединение TCP не хочет использовать ECN-уведомление для отдельного пакета, передающая сторона TCP устанавливает в качестве кода ECN значение not-ECT, а получатель TCP игнорирует код CE в полученном пакете.

В дальнейшем обсуждении будем обозначать инициирующий соединение хост, как A, а отвечающий — B. Будем называть пакет SYN с флагами ECE и CWR «SYN-пакетом организации ECN», а пакет SYN, в котором один из флагов ECE или CWR сброшен — «пакетом SYN без организации ECN». Аналогично будем называть пакет SYN-ACK с флагом ECE, но без флага CWR «SYN-ACK-пакетом организации ECN», а пакет SYN-ACK с любой другой комбинацией флагов ECE и CWR — пакетом «SYN-ACK без организации ECN».

Прежде, чем соединение TCP сможет использовать ECN, хост A передает SYN-пакет организации ECN, а хост B передает пакет SYN-ACK с организацией ECN. Для пакета SYN установка обоих флагов ECE и CWR в SYN-пакете с организацией ECN определяется, как индикация поддержки ECN на передающей стороне TCP, а не индикация насыщения или отклика на насыщение. Говоря точнее, пакет SYN с организацией ECN показывает, что реализация TCP, передающая пакет SYN будет принимать участие в ECN как отправитель и получатель. В качестве получателя она будет отвечать на пакеты данных с кодом CE в заголовке IP установкой флага ECE в исходящих подтверждениях TCP ACK. В качестве отправителя она будет отвечать на входящие пакеты с флагом ECE снижением размера окна насыщения и установкой флага CWR, когда это следует делать. Пакет SYN с организацией ECN не обязывает отправителя TCP устанавливать код ECT в каком-либо или всех пакетах, которые он может передать. Однако обязанность подобающим образом отвечать на входящие пакеты с кодом CE сохраняется даже в том случае, когда отправитель TCP позднее в сеансе TCP передает пакет SYN без установленных флагов ECE и CWR.

Когда хост B передает пакет SYN-ACK с организацией ECN, он устанавливает флаг ECE, но не устанавливает флаг CWR. Пакет SYN-ACK с организацией ECN рпределяется, как индикация того, что узел TCP, передавший пакет SYN-ACK, поддерживает ECN. Как и пакет SYN, пакет SYN-ACK с организацией ECN не обязывает хост TCP устанавливать код ECT в передаваемых пакетах.

Приведенные ниже правила применяются для пакетов организации ECN в соединении TCP, определяемом стандартными правилами организации и разрыва соединений TCP.

  • Если хост получил SYN-пакет с организацией ECN, он может передать пакет SYN-ACK в организацией ECN. В остальных случаях передача пакетов SYN-ACK в организацией ECN недопустима.

  • Для хоста недопустима установка ECT в пакетах данных, пока этот хост не передал хотя бы один пакет SYN или SYN-ACK с установкой ECN и не получил хотя бы один пакет SYN или SYN-ACK с организацией ECN, не передаваея пакетов SYN или SYN-ACK без организации ECN. Если хост получил хотя бы один пакет SYN или SYN-ACK ьез организации ECN, ему не следует устанавливать ECT в пакетах данных.

  • Если хост установил код ECT в пакете данных, он должен корректно устанавливать/сбрасывать флаг CWR в заголовках TCP всех последующих пакетов данного соединения.

  • Если хост передал хотя бы один пакет SYN или SYN-ACK с организацией ECN и не получал пакетов SYN или SYN-ACK без организации ECN, тогда этот хост при получении пакетов данных TCP с кодами ECT и CE в заголовке IP должен обрабатывать такие пакеты, как задано для соединений, поддерживающих ECN.

  • Хосту, не желающему использовать ECN в соединении TCP, следует сбрасывать оба флага ECE и CWR во всех пакетах SYN и SYN-ACK без организации ECN, которые он передает для индикации своего нежелания. Получатели должны корректно обрабатывать все формы пакетов SYN и SYN-ACK без организации ECN.

  • Для хоста недопустимо устанавливать ECT в пакетах SYN или SYN-ACK.

Клиент TCP переходит в состояние TIME-WAIT после получения пакета FIN-ACK и потом в состояние CLOSED по истечении тайм-аута. Многие реализации TCP создают в состоянии TIME-WAIT новое соединение, если получают в окне пакет SYN. Когда хост TCP переходит в состояние TIME-WAIT или CLOSED, ему следует игнорировать все прежние данные о согласовании ECN для данного соединения.

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