Explicit Congestion Notification

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Explicit Congestion Notification (ECN) — (Явное Уведомление о Перегруженности) — расширение протокола IP, описанное в RFC 3168. ECN позволяет обеим сторонам в сети узнавать о возникновении затора на маршруте к заданному хосту или сети без отбрасывания пакетов. Это дополнительная функция, которая используется только в том случае, когда обе конечные точки обмена информацией сообщают, что они хотят её использовать.

Основные понятия[править | править вики-текст]

Обычно, узлы TCP/IP сетей сообщают о возникновении затора путем отбрасывания пакетов. Если ECN сессия успешно установлена, поддерживающие расширение ECN маршрутизаторы могут сигнализировать о начале заторов устанавливая биты в заголовке IP, а не удаляя пакеты. Получатель пакетов информирует отправителя о заторе, который должен реагировать так, как будто был обнаружен сброс пакетов.

ECN использует два бита в DiffServ области в заголовке IP, для IPv4 в байте TOS, а в IPv6 в октете класса передачи пакета. Эти два бита могут использоваться для установки в одно из следующих значений:

  • поток поддерживающий ECN: англ. ECN-Capable Transport (ECT)
  • поток не поддерживающий ECN: англ. Not-ECN-Capable Transport (Not-ECT)
  • подтвержденная перегрузка: англ. Congestion Experienced (CE)

Некоторое устаревшее или тестовое сетевое оборудование отбрасывает пакеты с установленными битами ECN, а не игнорирует их [1].

Использование[править | править вики-текст]

Для использования ECN требуется его поддержка на транспортном уровне.

Использование в TCP/IP[править | править вики-текст]

В дополнение к двум ECN-битам в заголовке IP, TCP использует два флага заголовка TCP для сигнализации отправителю о заторе и сокращения объема информации, которую он посылает.

Использование ECN в соединениях TCP не является обязательным.

Использование в других транспортных протоколах[править | править вики-текст]

Расширение ECN также определено для других протоколов транспортного уровня, которые выполняют контроль заторов в сети, в частности DCCP и SCTP. Общий принцип использования похож на TCP, хотя детали кодирования отличаются.

В принципе можно использовать расширение ECN и с протоколами, лежащими на уровнях над UDP. Однако, UDP требует, чтобы контроль перегрузок осуществлялся на уровне приложений, а текущей возможности приложений для сетей не дают им доступа к ECN битам

Производительность[править | править вики-текст]

Использование ECN эффективно только в сочетании с политикой активного управления очередью (AQM), и польза от ECN зависит от правильности использования AQM.


Опытным путем было установлено, что ECN плохо влияет на производительность сильно перегруженной сети, если используются AQM алгоритмы, никогда не отбрасывающие пакеты [2]. Современные реализации AQM позволяют избежать подобной проблемы, заменяя маркировку пакетов на их отбрасывание, в случае критических перегрузок.

Реализация[править | править вики-текст]

Многие современные реализации протокола TCP/IP имеют поддержку ECN, однако они обычно поставляются с выключенным ECN.

Поддержка на серверах[править | править вики-текст]

Windows Server 2008 и Windows Vista поддерживают расширение ECN, но оно отключена по умолчанию [3]. Поддержка ECN может быть включена с помощью следующей команды:

netsh interface tcp set global ecncapability=enabled 

Mac OS X 10.5 по умолчанию поддерживает ECN. Управление производится с помощью интерфейса sysctl [4] :

net.inet.tcp.ecn_negotiate_in net.inet.tcp.ecn_initiate_out 

Ядро Linux поддерживает расширение ECN уже в течение некоторого времени, однако оно по умолчанию отключено. В большинстве версий ядра, оно может быть активировано через интерфейс Sysctl :

sysctl net.ipv4.tcp_ecn=1

FreeBSD 8.0 поддерживает расширение ECN. Оно может быть активировано через интерфейс Sysctl:

sysctl net.inet.tcp.ecn.enable=1 

Поддержка на маршрутизаторах[править | править вики-текст]

Маркировка ECN полей маршрутизаторами зависит в той или иной форме от управления активными очередями. Маршрутизаторы должны быть соответствующим образом настроены для маркировки полей ECN.

Маршрутизаторы Cisco IOS выполняют маркировку ECN , если настроен WRED, начиная с версии 12.2 (8) T.

Примечания[править | править вики-текст]

  1. Measuring Interactions Between Transport Protocols and Middleboxes. Alberto Medina, Mark Allman, and Sally Floyd. Internet Measurement Conference 2004, August 2004.
  2. Aleksandar Kuzmanovic. The power of explicit congestion notification. In Proceedings of the 2005 conference on Applications, technologies, architectures, and protocols for computer communications. 2005
  3. "New Networking Features in Windows Server 2008 and Windows Vista". Архивировано из первоисточника 15 апреля 2012.
  4. "ECN (Explicit Congestion Notification) in TCP/IP". Архивировано из первоисточника 15 апреля 2012.

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]