Механизм разгрузки TCP


Из Википедии, бесплатной энциклопедии
  (Перенаправлено с ускорителя TCP )
Перейти к навигации Перейти к поиску

Механизм разгрузки TCP ( TOE ) — это технология, используемая в некоторых сетевых интерфейсных платах (NIC) для переноса обработки всего стека TCP/IP на сетевой контроллер. В основном он используется с высокоскоростными сетевыми интерфейсами, такими как Gigabit Ethernet и 10 Gigabit Ethernet , где накладные расходы на обработку сетевого стека становятся значительными. TOE часто используются [1] как способ уменьшить накладные расходы, связанные с протоколами хранения Интернет-протокола (IP), такими как iSCSI и Network File System (NFS).

Цель

Первоначально TCP был разработан для ненадежных низкоскоростных сетей (таких как ранние модемы с коммутируемым доступом ), но с ростом Интернета с точки зрения скоростей передачи по магистрали (с использованием каналов Optical Carrier , Gigabit Ethernet и 10 Gigabit Ethernet ) и более быстрого и надежного доступа . механизмы (такие как DSL и кабельные модемы ) часто используются в центрах обработки данных и настольных ПКсредах со скоростью более 1 гигабита в секунду. При таких скоростях реализация программного обеспечения TCP на хост-системах требует значительных вычислительных мощностей. В начале 2000-х полнодуплексная гигабитная TCP-связь могла потреблять более 80% процессора Pentium 4 с тактовой частотой 2,4 ГГц [2] , что приводило к тому, что для запуска приложений в системе оставалось мало или совсем не оставалось вычислительных ресурсов.

TCP — это протокол, ориентированный на соединение, который усложняет и увеличивает нагрузку на обработку. Эти аспекты включают в себя:

  • Установление соединения с использованием «3-стороннего рукопожатия» (SYNchronize; SYNchronize-ACKnowledge; ACKnowledge).
  • Подтверждение пакетов по мере их получения дальним концом, что увеличивает поток сообщений между конечными точками и, таким образом, увеличивает нагрузку на протокол.
  • Вычисления контрольной суммы и порядкового номера - опять же нагрузка на ЦП общего назначения.
  • Расчеты скользящего окна для подтверждения пакетов и управления перегрузкой .
  • Прекращение соединения .

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

Освобожденные циклы ЦП

Общепринятое эмпирическое правило заключается в том, что для отправки или получения данных требуется процессор с частотой 1 Гц.1  бит/с TCP/IP. [2] Например, для сетевого трафика со скоростью 5 Гбит/с (625 МБ/с) требуется процессор с частотой 5 ГГц. Это означает, что 2 полных ядра многоядерного процессора с частотой 2,5 ГГц потребуются для обработки TCP/IP, связанной с трафиком TCP/IP со скоростью 5 Гбит/с. Поскольку Ethernet (в данном примере 10GE) является двунаправленным, можно отправлять и получать 10 Гбит/с (для совокупной пропускной способности 20 Гбит/с). Используя правило 1 Гц/(бит/с), это соответствует восьми ядрам с частотой 2,5 ГГц.

Многие циклы ЦП, используемые для обработки TCP/IP, высвобождаются за счет разгрузки TCP/IP и могут использоваться ЦП (обычно ЦП сервера ) для выполнения других задач, таких как обработка файловой системы (на файловом сервере) или индексирование. (на резервном медиа-сервере). Другими словами, сервер с разгрузкой TCP/IP может выполнять больше серверной работы, чем сервер без сетевых адаптеров разгрузки TCP/IP.

Уменьшение трафика PCI

В дополнение к накладным расходам протокола, которые может решить TOE, он также может решить некоторые архитектурные проблемы, которые затрагивают большой процент конечных точек на основе хоста (сервера и ПК). Многие старые хосты конечных точек основаны на шине PCI , которая обеспечивает стандартный интерфейс для добавления определенных периферийных устройств , таких как сетевые интерфейсы к серверам .и ПК. PCI неэффективен для передачи небольших пакетов данных из основной памяти по шине PCI на микросхемы сетевого интерфейса, но его эффективность повышается по мере увеличения размера пакета данных. В протоколе TCP создается большое количество небольших пакетов (например, подтверждений), и, поскольку они обычно генерируются на центральном процессоре хоста и передаются по шине PCI и через сетевой физический интерфейс, это влияет на пропускную способность ввода-вывода хост-компьютера.

Решение TOE, расположенное на сетевом интерфейсе, расположено по другую сторону шины PCI от хоста ЦП, поэтому оно может решить эту проблему эффективности ввода-вывода, поскольку данные, которые должны быть отправлены через TCP-соединение, могут быть отправлены на сервер. TOE от ЦП по шине PCI с использованием больших размеров пакетов данных, при этом ни один из меньших пакетов TCP не должен проходить по шине PCI.

История

Один из первых патентов на эту технологию, на разгрузку UDP, был выдан компании Auspex Systems в начале 1990 г. [3] Основатель Auspex Ларри Бушер и несколько инженеров Auspex в 1997 г. разгрузка сетевого стека в TCP и реализация его в собственном кремнии. В начале 1999 года они представили первую сетевую карту с полной разгрузкой параллельного стека; SLIC (интерфейсная карта сеансового уровня) компании была предшественницей ее текущих предложений TOE. Alacritech владеет рядом патентов в области разгрузки TCP/IP. [4]

К 2002 году, когда появление хранилищ на основе TCP, таких как iSCSI , подстегнуло интерес, было сказано, что «по крайней мере дюжина новичков, большинство из которых были основаны ближе к концу пузыря доткомов, гоняются за возможностью использовать коммерческие полупроводниковые ускорители для хранения данных». протоколы и приложения, соперничающие с полдюжиной укоренившихся поставщиков и собственными разработками ASIC». [5]

В 2005 году Microsoft лицензировала патентную базу Alacritech и вместе с Alacritech создала архитектуру частичной разгрузки TCP, которая стала известна как разгрузка TCP chimney. Центры разгрузки дымохода TCP основаны на «Патенте на передачу блока связи» Alacritech. В то же время Broadcom также получила лицензию на создание чипов разгрузки TCP Chimney.

Типы разгрузки TCP/IP

Вместо полной замены стека TCP ОО существуют альтернативные методы разгрузки некоторых операций в сотрудничестве со стеком TCP операционной системы. Разгрузка контрольной суммы TCP и разгрузка больших сегментов поддерживаются большинством современных сетевых адаптеров Ethernet. Новые методы, такие как разгрузка больших объемов приема и разгрузка подтверждений TCP, уже реализованы в некоторых высокопроизводительных аппаратных средствах Ethernet, но они эффективны даже тогда, когда реализованы чисто программно. [6] [7]

Полная разгрузка параллельного стека

Полная разгрузка параллельного стека получила свое название от концепции двух параллельных стеков TCP/IP. Первый — это основной стек хоста, который включен в ОС хоста. Второй или «параллельный стек» подключается между прикладным уровнем и транспортным уровнем (TCP) с помощью «вампирского крана». Отвод-вампир перехватывает запросы TCP-подключения от приложений и отвечает за управление TCP-подключением, а также за передачу данных TCP. Многие из критических замечаний в следующем разделе относятся к этому типу разгрузки TCP.

Полная разгрузка HBA

Полная разгрузка HBA (Host Bus Adapter) достигается в хост-адаптерах iSCSI , которые представляют себя в качестве дисковых контроллеров для хост-системы при подключении (через TCP/IP) к устройству хранения iSCSI . Этот тип разгрузки TCP не только разгружает обработку TCP/IP, но также разгружает функцию инициатора iSCSI. Поскольку HBA представляется хосту как контроллер диска, его можно использовать только с устройствами iSCSI, и он не подходит для общей разгрузки TCP/IP.

Частичная разгрузка TCP Chimney

Разгрузка TCP Chimney устраняет серьезную критику безопасности, связанную с полной разгрузкой параллельного стека. При частичной разгрузке основной системный стек контролирует все соединения с хостом. После установления соединения между локальным хостом (обычно сервером) и внешним хостом (обычно клиентом) соединение и его состояние передаются механизму разгрузки TCP. Тяжелая работа по передаче и приему данных выполняется разгрузочным устройством. Почти все механизмы разгрузки TCP используют тот или иной тип аппаратной реализации TCP/IP для выполнения передачи данных без вмешательства центрального процессора. Когда соединение закрывается, состояние соединения возвращается из механизма разгрузки в основной системный стек. Сохранение контроля над TCP-соединениями позволяет основному системному стеку реализовывать и контролировать безопасность соединений.

Большой прием разгрузки

Большая разгрузка при приеме ( LRO ) — это метод увеличения входящей пропускной способности сетевых подключений с высокой пропускной способностью за счет снижения нагрузки на центральный процессор (ЦП). Он работает путем агрегирования нескольких входящих пакетов из одного потока в буфер большего размера, прежде чем они будут переданы выше по сетевому стеку, тем самым уменьшая количество пакетов, которые необходимо обработать. Реализации Linux обычно используют LRO в сочетании с новым API (NAPI), чтобы также уменьшить количество прерываний .

Согласно эталонным тестам, даже реализация этой техники полностью в программном обеспечении может значительно повысить производительность сети. [6] [7] [8] По состоянию на апрель 2007 года ядро ​​Linux поддерживает LRO для TCP только программно. FreeBSD 8 поддерживает LRO аппаратно на адаптерах, которые его поддерживают. [9] [10] [11] [12]

LRO не должен работать на машинах, выступающих в роли маршрутизаторов, так как это нарушает сквозной принцип и может существенно повлиять на производительность. [13] [14]

Общая разгрузка приема

Универсальная разгрузка при приеме ( GRO ) реализует обобщенный LRO в программном обеспечении, которое не ограничивается TCP/ IPv4 и не имеет проблем, созданных LRO. [15] [16]

Разгрузка больших посылок

В компьютерных сетях большая разгрузка отправки ( LSO ) — это метод увеличения исходящей пропускной способности сетевых подключений с высокой пропускной способностью за счет снижения нагрузки на ЦП . Он работает, передавая мультипакетный буфер на карту сетевого интерфейса (NIC). Затем NIC разбивает этот буфер на отдельные пакеты. Этот метод также называется разгрузкой сегментации TCP ( TSO ) или общей разгрузкой сегментации ( GSO ) применительно к TCP . LSO и LRO независимы, и использование одного не требует использования другого.

Когда системе необходимо отправить большие порции данных по компьютерной сети, эти порции сначала нужно разбить на более мелкие сегменты, которые могут пройти через все сетевые элементы, такие как маршрутизаторы и коммутаторы между исходным и конечным компьютерами. Этот процесс называется сегментацией . Часто эту сегментацию выполняет протокол TCP на хост-компьютере. Перенос этой работы на сетевую карту называется разгрузкой сегментации TCP (TSO).

Например, блок данных размером 64 КиБ (65 536 байт) обычно сегментируется на 45 сегментов по 1460 байт каждый перед отправкой через сетевую карту и по сети. Обладая некоторым интеллектом в сетевой карте, центральный процессор может передать 64 КБ данных в сетевую карту в одном запросе на передачу, сетевая карта может разбить эти данные на более мелкие сегменты по 1460 байт, добавить TCP, IP и данные . заголовки протоколов канального уровня — в соответствии с шаблоном, предоставленным стеком TCP/IP хоста — для каждого сегмента и отправки полученных кадров по сети. Это значительно снижает работу, выполняемую процессором. По состоянию на 2014 год многие новые сетевые карты на рынке поддерживают TSO.

Некоторые сетевые карты реализуют TSO достаточно широко, чтобы его можно было использовать для разгрузки фрагментации других протоколов транспортного уровня или для выполнения фрагментации IP для протоколов, которые сами по себе не поддерживают фрагментацию, таких как UDP .

Поддержка в Linux

В отличие от других операционных систем, таких как FreeBSD, ядро ​​Linux не поддерживает TOE (не путать с другими типами сетевой разгрузки). [17] Несмотря на наличие патчей от производителей оборудования, таких как Chelsio или Qlogic , которые добавляют поддержку TOE, разработчики ядра Linux выступают против этой технологии по нескольким причинам: [18]

  • Безопасность — поскольку TOE реализуется аппаратно, исправления должны применяться к микропрограммному обеспечению TOE , а не только к программному обеспечению, для устранения любых уязвимостей безопасности, обнаруженных в конкретной реализации TOE. Это еще больше усугубляется новизной и специфичностью этого оборудования по сравнению с хорошо протестированным стеком TCP/IP, который используется в операционной системе, не использующей TOE.
  • Ограничения аппаратного обеспечения — поскольку соединения буферизуются и обрабатываются на микросхеме TOE, нехватка ресурсов может возникнуть быстрее по сравнению с щедрым процессором и памятью, доступными для операционной системы.
  • Сложность — TOE разрушает предположение ядра о постоянном доступе ко всем ресурсам — такие детали, как память, используемая открытыми соединениями, недоступны в TOE. TOE также требует очень больших изменений в сетевом стеке для правильной поддержки, и даже когда это будет сделано, такие функции, как качество обслуживания и фильтрация пакетов, могут не работать.
  • Собственный — TOE по-разному реализуется каждым поставщиком оборудования. Это означает, что для работы с различными реализациями ОО необходимо переписать больше кода за счет вышеупомянутой сложности и, возможно, безопасности. Кроме того, прошивку TOE нельзя легко модифицировать, поскольку она имеет закрытый исходный код.
  • Устаревание . Каждая сетевая карта TOE имеет ограниченный срок полезного использования, поскольку аппаратное обеспечение системы быстро догоняет уровни производительности TOE и в конечном итоге превосходит уровни производительности TOE.

Поставщики

Большая часть текущей работы над технологией TOE ведется производителями интерфейсных карт 10 Gigabit Ethernet, такими как Broadcom , Chelsio Communications , Emulex , Mellanox Technologies , QLogic .

Смотрите также

  • Масштабируемый сетевой пакет
  • Технология ускорения ввода/вывода

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

  1. Джеффри С. Могул (18 мая 2003 г.). Разгрузка TCP — глупая идея, время которой пришло . Горячая ОС. Усеникс .
  2. ^ б Энни П. Фунг; Томас Р. Хафф; Герберт Х. Хам; Джайдев П. Патвардхан; Грег Дж. Ренье (2 апреля 2003 г.). Повторный обзор производительности TCP (PDF) . Материалы Международного симпозиума по анализу производительности систем и программного обеспечения (ISPASS). Остин, Техас.
  3. ^ Патент США: 5355453 «Категория архитектуры сетевого файлового сервера с параллельным вводом-выводом»
  4. ↑ Патент США: 6247060 « Передача блока связи с хоста на локальное устройство таким образом, что сообщение обрабатывается на устройстве»
  5. ^ «Новички раскручивают кремний для сетей хранения данных» , Рик Мерритт, 21.10.2002, EE Times.
  6. ^ a b Джонатан Корбет (2007-08-01). "Большой прием разгрузки" . LWN.net . Проверено 22 августа 2007 г. .
  7. ^ а б Аравинд Менон; Вилли Звенепол (28 апреля 2008 г.). Оптимизация производительности приема TCP . Ежегодная техническая конференция USENIX. УСЕНИКС.
  8. Эндрю Галлатин (25 июля 2007 г.). "lro: Универсальная разгрузка большого приема для TCP-трафика" . linux-kernel (список рассылки) . Проверено 22 августа 2007 г. .
  9. Викискладе есть медиафайлы по теме Cxgb . Freebsd.org . Проверено 12 июля 2018 г.
  10. Викискладе есть медиафайлы по теме Mxge . Freebsd.org . Проверено 12 июля 2018 г.
  11. Викискладе есть медиафайлы по теме Nxge . Freebsd.org . Проверено 12 июля 2018 г.
  12. ^ «Плохая производительность TCP может возникать на виртуальных машинах Linux с включенным LRO» . VMware . 2011-07-04 . Проверено 17 августа 2011 г. .
  13. ^ «Базовый драйвер Linux * для семейства адаптеров Intel (R) Ethernet 10 Gigabit PCI Express» . Корпорация Интел . 2013-02-12 . Проверено 24 апреля 2013 г. .
  14. ^ «Отключить LRO для всех сетевых карт с включенным LRO» . Red Hat, Inc. 10 января 2013 г. . Проверено 24 апреля 2013 г. .
  15. ^ «JLS2009: Общая разгрузка при приеме» . lwn.net .
  16. ^ Хуан, Шу; Балдин, Илья (март 2012 г.). Шмитт, Йенс Б. (ред.). Оценка производительности сетевых адаптеров 10GE с поддержкой SR-IOV: виртуализация ввода-вывода и оптимизация сетевого стека . Измерение, моделирование и оценка вычислительных систем, а также надежность и отказоустойчивость: 16-я международная конференция GI / ITG, MMB & DFT 2012. Конспект лекций по информатике. Том. 7201. Кайзерслаутерн, Германия: Springer (опубликовано в 2012 г.). п. 198. ИСБН 9783642285400. Проверено 11 октября 2016 г. . Large-Receive-Offload (LRO) уменьшает накладные расходы на обработку каждого пакета за счет объединения меньших пакетов в более крупные и передачи их в сетевой стек. Generic-Receive-Offload (GRO) предоставляет обобщенную программную версию LRO [...].
  17. ^ «Двигатели разгрузки Linux и TCP» , 22 августа 2005 г., LWN.net
  18. ^ Сеть: TOE , Linux Foundation.

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

  • Статья: TCP Offload to the Rescue Энди Каррида из ACM Queue
  • Заявка на патент 20040042487
  • Могул, Джеффри С. (2003). «Разгрузка TCP — глупая идея, время которой пришло» (PDF) . Материалы HotOS IX: 9-й семинар по актуальным темам операционных систем . Ассоциация ЮСЕНИКС . Проверено 23 июля 2006 г.
  • "Механизм разгрузки TCP/IP (TOE)" . Альянс 10-гигабитного Ethernet . апрель 2002 г.
  • Разгрузка сетевой задачи Windows
  • ГСО в Linux
  • Краткое описание LSO в Linux
  • Практические примеры проблем производительности с LSO и формированием трафика (Linux)
  • Новые функции FreeBSD 7.0, краткое обсуждение поддержки TSO
Получено с " https://en.wikipedia.org/w/index.php?title=TCP_offload_engine&oldid=1072222180 "