Явное уведомление о перегрузке

редактировать
Расширение Интернет-протокола для сигнализации о перегрузке сети

Явное уведомление о перегрузке (ECN ) является расширением Интернет-протокола и протокола управления передачей и определено в RFC 3168 (2001). ECN разрешает сквозное уведомление о перегрузке сети без потери пакетов. ECN - это дополнительная функция, которая может использоваться между двумя конечными точками с поддержкой ECN, если базовая сетевая инфраструктура также поддерживает ее.

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

Вместо того, чтобы правильно реагировать или игнорировать биты, некоторое устаревшее или неисправное сетевое оборудование исторически отбрасывало или искажало пакеты с установленными битами ECN. По состоянию на 2015 год измерения показали, что доля веб-серверов в общедоступном Интернете, для которых настройка ECN предотвращает сетевые подключения, была уменьшена до менее 1%.

Пассивная поддержка существовала в Ubuntu Linux с 12.04 и Windows Server с 2012 года. Пассивная поддержка на самых популярных веб-сайтах увеличилась с 8,5% в 2012 году до более 70% в мае 2017 года. Внедрение через Интернет теперь требует, чтобы клиенты активно запрашивали ECN. В июне 2015 года Apple объявила, что ECN будет включена по умолчанию для ее поддерживаемых и будущих продуктов, чтобы способствовать внедрению ECN-сигнализации во всей отрасли.

Содержание

  • 1 Операция
    • 1.1 Работа ECN с IP
    • 1.2 Работа ECN с TCP
      • 1.2.1 ECN и управляющие пакеты TCP
    • 1.3 Работа ECN с другими транспортными протоколами
  • 2 Влияние на производительность
  • 3 Реализации
    • 3.1 Поддержка ECN в TCP хостами
      • 3.1.1 Microsoft Windows
      • 3.1.2 BSD
      • 3.1.3 Linux
      • 3.1.4 Mac OS X
      • 3.1.5 iOS
      • 3.1.6 Solaris
    • 3.2 Поддержка ECN в IP маршрутизаторами
    • 3.3 ЦОД TCP
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки

Работа

Требуется ECN специальная поддержка как на уровне Интернета, так и на уровне транспортного уровня по следующим причинам:

  • В TCP / IP маршрутизаторы работают на уровне Интернета, а скорость передачи данных обрабатывается конечными точками на транспортном уровне..
  • Перегрузка может обрабатываться только переданным э-э, но поскольку известно, что это произошло только после того, как пакет был отправлен, должен быть эхо-сигнал индикации перегрузки от получателя к передатчику.

Без ECN эхо-сигнал индикации перегрузки достигается косвенно путем обнаружения потери пакеты. В случае ECN перегрузка указывается установкой поля ECN в IP-пакете на CE и передается от приемника передатчику путем установки правильных битов в заголовке транспортного протокола. Например, при использовании TCP индикация перегрузки отражается путем установки бита ECE.

Работа ECN с IP

ECN использует два наименее значимых (крайних правых) бита поля Traffic Class в IPv4 или заголовок IPv6 для кодирования четырех разных кодовых точек:

  • 00- транспорт без поддержки ECN, без ECT
  • 10- транспорт с поддержкой ECN, ECT (0)
  • 01- ECN Capable Transport, ECT (1)
  • 11- Встречная перегрузка, CE.

Когда обе конечные точки поддерживают ECN, они маркируют свои пакеты с помощью ECT (0) или ECT (1). Маршрутизаторы рассматривают кодовые точки ECT (0) и ECT (1) как эквивалентные. Если пакет проходит через очередь активного управления очередью (AQM) (например, очередь, которая использует случайное раннее обнаружение (RED)), которая испытывает перегрузку, и соответствующий маршрутизатор поддерживает ECN, он может изменить кодовую точку на CEвместо отбрасывания пакета. Это действие называется «маркировкой», и его цель - информировать принимающую конечную точку о надвигающейся перегрузке. В принимающей конечной точке эта индикация перегрузки обрабатывается протоколом верхнего уровня (протокол транспортного уровня ) и должна быть возвращена передающему узлу, чтобы сообщить ему о снижении скорости передачи.

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

Работа ECN с TCP

TCP поддерживает ECN, используя два флага в заголовке TCP. Первый, ECN-Echo (ECE), используется для отражения индикации перегрузки (т. Е. Сигнализирует отправителю об уменьшении объема информации, которую он отправляет). Второй, уменьшение окна перегрузки (CWR), подтверждает получение эхо-сигнала индикации перегрузки. Использование ECN в TCP-соединении необязательно; для использования ECN его необходимо согласовать при установлении соединения путем включения подходящих опций в сегменты SYN и SYN-ACK.

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

После получения IP-пакета с кодовой точкой «перегрузка» приемник TCP передает это сообщение о перегрузке, используя флаг ECE в заголовке TCP. Когда конечная точка получает сегмент TCP с битом ECE, она уменьшает свое окно перегрузки, как при отбрасывании пакета. Затем он подтверждает индикацию перегрузки, отправляя сегмент с установленным битом CWR.

Узел продолжает передавать сегменты TCP с установленным битом ECE до тех пор, пока он не получит сегмент с установленным битом CWR.

Чтобы увидеть затронутые пакеты с tcpdump, используйте предикат фильтра (tcp [13] 0xc0! = 0).

ECN и управляющие пакеты TCP

Поскольку Протокол управления передачей (TCP) не выполняет контроль перегрузки для управляющих пакетов (чистые ACK, SYN, сегменты FIN), управляющие пакеты обычно не помечаются как поддерживающие ECN.

Предложение от 2009 г. предлагает помечать пакеты SYN-ACK как поддерживающие ECN. Было показано, что это усовершенствование, известное как ECN +, значительно улучшает производительность короткоживущих TCP-соединений.

Работа ECN с другими транспортными протоколами

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

Можно использовать ECN с протоколами, расположенными выше UDP. Однако UDP требует, чтобы управление перегрузкой выполнялось приложением, а ранние протоколы на основе UDP, такие как DNS, не использовали ECN. Более поздние протоколы на основе UDP, такие как QUIC, используют ECN для контроля перегрузки.

Влияние на производительность

Поскольку ECN эффективен только в сочетании с политикой Active Queue Management (AQM), преимущества ECN зависят от того, какой именно AQM используется. Однако некоторые наблюдения, похоже, справедливы для разных AQM.

Как и ожидалось, ECN уменьшает количество пакетов, отброшенных TCP-соединением, что, избегая повторной передачи, уменьшает задержку и особенно дрожание. Этот эффект наиболее заметен, когда TCP-соединение имеет единственный ожидающий сегмент, когда удается избежать тайм-аута RTO ; это часто имеет место для интерактивных подключений, таких как удаленный вход в систему, и транзакционных протоколов, таких как HTTP-запросы, диалоговая фаза SMTP или SQL-запросы.

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

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

Реализации

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

Поддержка ECN в TCP хостами

Microsoft Windows

Версии Windows, начиная с Windows Server 2008 и Windows Vista, поддерживают ECN для TCP. Начиная с Windows Server 2012, он включен по умолчанию в версиях Windows Server, поскольку используется протокол управления передачей данных центра данных (DCTCP). В предыдущих версиях Windows и несерверных версиях он отключен по умолчанию.

Поддержка ECN может быть включена с помощью команды оболочки, такой как netsh interface tcp set global ecncapability = enabled.

BSD

В FreeBSD ECN для TCP можно настроить с помощью net.inet.tcp.ecn.enable sysctl. По умолчанию он включен только для входящих соединений, которые его запрашивают. Его также можно включить для всех подключений или полностью отключить.

NetBSD 4.0 реализует поддержку ECN для TCP; его можно активировать через интерфейс sysctl, установив 1 в качестве значения для параметра sysctl net.inet.tcp.ecn.enable.

Аналогично, sysctl net.inet.tcp.ecn можно использовать в OpenBSD.

Linux

Начиная с версии 2.4.20 ядра Linux., выпущенный в ноябре 2002 г., Linux поддерживает три режима работы ECN для TCP, настроенных через интерфейс sysctl путем установки параметра / proc / sys / net / ipv4 / tcp_ecn на единицу. из следующих значений:

  • 0 - отключить ECN и не инициировать и не принимать его
  • 1 - включить ECN при запросе входящих соединений, а также запрашивать ECN при попытках исходящего соединения
  • 2 - (по умолчанию) включить ECN, когда запрашивается входящими соединениями, но не запрашивает ECN для исходящих соединений

Начиная с версии 4.1 ядра Linux, выпущенной в июне 2015 года, механизм tcp_ecn_fallback, как указано в RFC 3168, раздел 6.1.1.1, включен по умолчанию, когда включен ECN (значение 1). Механизм отката пытается установить соединение ECN при первоначальной настройке исходящих соединений с постепенным откатом для передач без возможности ECN, смягчая проблемы с хостами, не допускающими ECN, или межсетевыми экранами.

Mac OS X

Mac OS X 10.5 и 10.6 реализуют поддержку ECN для TCP. Он управляется с помощью логических sysctl переменных net.inet.tcp.ecn_negotiate_in и net.inet.tcp.ecn_initiate_out. Первая переменная включает ECN для входящих соединений, для которых уже установлены флаги ECN; второй пытается инициировать исходящие соединения с включенным ECN. Обе переменные по умолчанию равны 0, но могут быть установлены в 1 для включения соответствующего поведения.

В июне 2015 года Apple Inc. объявила, что в OS X 10.11 по умолчанию будет включена функция ECN. Этого никогда не происходило, в macOS Sierra ECN включен для 50 процентов TCP-сессий

iOS

В июне 2015 года Apple Inc. объявила, что iOS 9, его следующая версия iOS, будет поддерживать ECN и включать ее по умолчанию. Согласование TCP ECN включено для 5% случайно выбранных подключений через Wi-Fi / Ethernet в iOS 9 и 50% случайно выбранных подключений через Wi-Fi / Ethernet и нескольких операторов сотовой связи в iOS 10 и 100. % для iOS 11

Solaris

Ядро Solaris поддерживает три состояния ECN для TCP:

  • никогда - нет ECN
  • активен - используйте ECN
  • пассивный - объявлять о поддержке ECN только по запросу.

Поведение по умолчанию - пассивное. Начиная с Solaris 11, полное использование ECN можно активировать с помощью ipadm set-prop -p ecn = active tcp.

Поддержка ECN в IP маршрутизаторами

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

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

Маршрутизаторы Linux выполняют маркировку ECN, если они настроены с одной из дисциплин очереди RED или GRED с явным параметром ecn, с использованием дисциплины sfb, с помощью CoDel Дисциплина Fair Queuing (fq_codel) или дисциплина CAKE.

Современные реализации BSD, такие как FreeBSD, NetBSD и OpenBSD, поддерживают маркировку ECN в ALTQ реализация очередей для ряда дисциплин организации очередей, в частности КРАСНЫЙ и Синий. FreeBSD 11 включает CoDel, PIE, FQ-CoDel и FQ-PIE реализацию дисциплин очередей в ipfw / dummynet framework с возможностью маркировки ECN.

TCP центра обработки данных

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

DCTCP изменяет приемник TCP, чтобы всегда ретранслировать точную маркировку ECN входящих пакетов за счет игнорирования функции, предназначенной для сохранения надежности сигнализации. Это делает отправителя DCTCP уязвимым к потере ACK от получателя, и у него нет механизма для обнаружения или устранения этой проблемы. По состоянию на июль 2014 года алгоритмы, обеспечивающие эквивалентную или лучшую обратную связь с приемником при более надежном подходе, являются активной темой исследования.

См. Также

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-19 09:57:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте