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 года.

См. также

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.