механизм разгрузки TCP
Механизм разгрузки TCP ( TOE ) — это технология, используемая в некоторых сетевых картах (NIC) для разгрузки обработки всего стека TCP/IP на сетевой контроллер. В основном он используется с высокоскоростными сетевыми интерфейсами, такими как Gigabit Ethernet и 10 Gigabit Ethernet , где затраты на обработку сетевого стека становятся значительными. ОО часто используются [1] как способ снизить накладные расходы, связанные с протоколами хранения Интернет-протокола (IP), такими как iSCSI и сетевая файловая система (NFS).
Цель
[ редактировать ]Первоначально TCP был разработан для ненадежных низкоскоростных сетей (таких как ранние с коммутируемым доступом модемы ), но с ростом Интернета с точки зрения скорости магистральной передачи (с использованием каналов Optical Carrier , Gigabit Ethernet и 10 Gigabit Ethernet ) и более быстрого и надежного доступа. механизмы (такие как DSL и кабельные модемы ) часто используются в центрах обработки данных и настольных ПК на скоростях более 1 гигабит в секунду. При таких скоростях реализация программного обеспечения TCP на хост-системах требует значительной вычислительной мощности. В начале 2000-х годов полнодуплексная гигабитная TCP-связь могла потреблять более 80% процессора Pentium 4 с частотой 2,4 ГГц . [2] в результате чего для запуска приложений в системе остается мало или вообще не остается ресурсов обработки.
TCP — это протокол, ориентированный на соединение , который увеличивает сложность и накладные расходы на обработку. Эти аспекты включают в себя:
- Установление соединения с помощью «трехстороннего установления связи» (SYNchronize; SYNchronize-ACKnowledge; ACKnowledge).
- Подтверждение получения пакетов на дальнем конце, что увеличивает поток сообщений между конечными точками и, следовательно, увеличивает нагрузку на протокол.
- Вычисление контрольной суммы и порядкового номера — снова нагрузка на процессор общего назначения.
- Расчеты скользящего окна для подтверждения пакетов и контроля перегрузки .
- Прекращение соединения .
системы Перенос некоторых или всех этих функций на выделенное оборудование (механизм разгрузки TCP) освобождает основной процессор для других задач.
Освобожденные циклы ЦП
[ редактировать ]Общепринятое эмпирическое правило заключается в том, что для отправки или получения 1 бит/с TCP/IP требуется 1 Герц обработки ЦП. [2] Например, для сетевого трафика со скоростью 5 Гбит/с (625 МБ/с) требуется процессорная частота 5 ГГц. целых 2 ядра многоядерного процессора Это означает, что для обработки TCP/IP, связанной с трафиком TCP/IP со скоростью 5 Гбит/с, потребуются с частотой 2,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 году основали Alacritech с идеей распространить концепцию разгрузки сетевого стека на TCP и реализовать ее в специализированных микросхемах. В начале 1999 года они представили первую сетевую карту с параллельным стеком и полной разгрузкой; SLIC (интерфейсная карта сеансового уровня) компании была предшественником ее текущих предложений TOE. Alacritech владеет рядом патентов в области разгрузки TCP/IP. [4]
К 2002 году, когда появление систем хранения данных на основе TCP, таких как iSCSI, стимулировало интерес, было сказано, что «по крайней мере дюжина новичков, большинство из которых были основаны ближе к концу пузыря доткомов, гонятся за возможностью коммерческих полупроводниковых ускорителей для хранения данных». протоколов и приложений, конкурируя с полдюжиной устоявшихся поставщиков и собственными разработками ASIC». [5]
В 2005 году Microsoft лицензировала патентную базу Alacritech и вместе с Alacritech создала архитектуру частичной разгрузки TCP, которая стала известна как разгрузка TCP Chimney. Разгрузка TCP-дымохода основана на патенте Alacritech «Передача коммуникационного блока». В то же время Broadcom также получила лицензию на создание микросхем разгрузки TCP-чимни.
Типы
[ редактировать ]Вместо полной замены стека TCP на TOE существуют альтернативные методы разгрузки некоторых операций во взаимодействии со стеком TCP операционной системы. Разгрузка контрольной суммы TCP и разгрузка больших сегментов поддерживаются большинством современных сетевых карт Ethernet. Новые методы, такие как большая разгрузка приема и разгрузка TCP-подтверждений, уже реализованы в некоторых высокопроизводительных аппаратных средствах Ethernet, но эффективны даже тогда, когда они реализованы чисто программно. [6] [7]
Полная разгрузка параллельного стека
[ редактировать ]Полная разгрузка параллельного стека получила свое название от концепции двух параллельных стеков TCP/IP. Первый — это основной стек хоста, который включен в состав ОС хоста. Второй, или «параллельный стек», подключается между уровнем приложений и транспортным уровнем (TCP) с помощью «отвода-вампира». Вампирский кран перехватывает запросы TCP-соединения от приложений и отвечает за управление TCP-соединениями, а также за передачу данных TCP. Многие критические замечания в следующем разделе относятся к этому типу разгрузки TCP.
Полная разгрузка HBA
[ редактировать ]Полная разгрузка HBA (адаптера главной шины) встречается в хост-адаптерах iSCSI , которые представляют собой контроллеры дисков для хост-системы при подключении (через TCP/IP) к устройству хранения iSCSI . Этот тип разгрузки TCP не только разгружает обработку TCP/IP, но также разгружает функцию инициатора iSCSI. Поскольку HBA представляется хосту как контроллер диска, его можно использовать только с устройствами iSCSI и он не подходит для общей разгрузки TCP/IP.
Частичная разгрузка TCP-дымохода
[ редактировать ]Разгрузка TCP-трубы устраняет основную критику безопасности, связанную с полной разгрузкой параллельного стека. При частичной разгрузке основной системный стек контролирует все соединения с хостом. После установления соединения между локальным хостом (обычно сервером) и внешним хостом (обычно клиентом) соединение и его состояние передаются механизму разгрузки TCP. Тяжелая работа по передаче и приему данных выполняется устройством разгрузки. Почти все механизмы разгрузки TCP используют тот или иной тип аппаратной реализации TCP/IP для передачи данных без вмешательства процессора хоста. Когда соединение закрывается, состояние соединения возвращается из механизма разгрузки в основной стек системы. Поддержание контроля над TCP-соединениями позволяет основному системному стеку реализовывать и контролировать безопасность соединений.
Большая разгрузка приема
[ редактировать ]Большая разгрузка приема ( LRO ) — это метод увеличения входящей пропускной способности с высокой пропускной способностью сетевых подключений за счет снижения нагрузки на центральный процессор (ЦП). Он работает путем агрегирования нескольких входящих пакетов из одного потока в больший буфер перед их передачей выше по сетевому стеку, тем самым уменьшая количество пакетов, которые необходимо обработать. Реализации Linux обычно используют LRO в сочетании с новым API (NAPI), чтобы также уменьшить количество прерываний .
Согласно тестам, даже полная реализация этой технологии в программном обеспечении может значительно повысить производительность сети. [6] [7] [8] По состоянию на апрель 2007 г. [update], ядро Linux поддерживает LRO для TCP только программно. FreeBSD 8 поддерживает LRO аппаратно на адаптерах, которые его поддерживают. [9] [10] [11] [12]
LRO не должен работать на машинах, выступающих в роли маршрутизаторов, поскольку это нарушает сквозной принцип и может существенно повлиять на производительность. [13] [14]
Общий прием разгрузки
[ редактировать ]Универсальная разгрузка приема ( GRO ) реализует обобщенный LRO в программном обеспечении, которое не ограничено TCP/ IPv4 и не имеет проблем, создаваемых LRO. [15] [16]
Большая разгрузка отправки
[ редактировать ]В компьютерных сетях большая разгрузка отправки ( LSO ) — это метод увеличения выходной пропускной способности сетевых подключений с высокой пропускной способностью за счет снижения нагрузки на процессор . Он работает путем передачи многопакетного буфера на сетевую карту (NIC). Затем сетевой адаптер разделяет этот буфер на отдельные пакеты. этот метод также называется разгрузкой сегментации TCP ( TSO ) или общей разгрузкой сегментации ( GSO Применительно к TCP ) . LSO и LRO независимы, и использование одного не требует использования другого.
Когда системе необходимо отправить большие порции данных по компьютерной сети, эти порции сначала необходимо разбить на более мелкие сегменты, которые могут проходить через все сетевые элементы, такие как маршрутизаторы и коммутаторы между исходным и конечным компьютерами. Этот процесс называется сегментацией . Часто эту сегментацию выполняет протокол TCP на главном компьютере. Передача этой работы на сетевой адаптер называется разгрузкой сегментации TCP (TSO).
Например, единица данных размером 64 КиБ (65 536 байт) обычно сегментируется на 45 сегментов по 1460 байт каждый перед отправкой через сетевой адаптер и по сети. Обладая некоторым интеллектом в сетевой карте, главный процессор может передать 64 КБ данных в сетевую карту за один запрос на передачу, сетевая карта может разбить эти данные на более мелкие сегменты по 1460 байт, добавить TCP, IP и данные. заголовки протокола канального уровня — в соответствии с шаблоном, предоставленным стеком TCP/IP хоста — в каждый сегмент и отправлять полученные кадры по сети. Это значительно уменьшает работу, выполняемую процессором. По состоянию на 2014 год [update] многие новые сетевые адаптеры на рынке поддерживают TSO.
Некоторые сетевые карты реализуют TSO в достаточно общем виде, чтобы его можно было использовать для разгрузки фрагментации других протоколов транспортного уровня или для фрагментации IP для протоколов, которые сами по себе не поддерживают фрагментацию, таких как UDP .
Поддержка в Linux
[ редактировать ]В отличие от других операционных систем, таких как FreeBSD, ядро Linux не поддерживает TOE (не путать с другими типами сетевой разгрузки). [17] Хотя существуют патчи от производителей оборудования, таких как Chelsio или Qlogic , которые добавляют поддержку TOE, разработчики ядра Linux выступают против этой технологии по нескольким причинам: [18]
- Безопасность – поскольку ОО реализован аппаратно, исправления должны применяться к встроенному программному обеспечению ОО , а не только к программному обеспечению, для устранения любых уязвимостей безопасности, обнаруженных в конкретной реализации ОО. Ситуация усугубляется новизной и специфичностью этого оборудования по сравнению с хорошо протестированным стеком TCP/IP, который имеется в операционной системе, не использующей TOE.
- Ограничения аппаратного обеспечения — поскольку соединения буферизуются и обрабатываются на чипе TOE, нехватка ресурсов может возникнуть легче по сравнению с щедрым процессором и памятью, доступными операционной системе.
- Сложность – TOE нарушает предположение, которое делают ядра о постоянном доступе ко всем ресурсам – такие детали, как память, используемая открытыми соединениями, недоступны в TOE. TOE также требует очень больших изменений в сетевом стеке для правильной поддержки, и даже когда это будет сделано, такие функции, как качество обслуживания и фильтрация пакетов, могут не работать.
- Проприетарный – TOE реализуется каждым поставщиком оборудования по-разному. Это означает, что необходимо переписать больше кода для работы с различными реализациями ОО за счет вышеупомянутой сложности и, возможно, безопасности. Более того, прошивку TOE нелегко модифицировать, поскольку она имеет закрытый исходный код.
- Устаревание . Каждый сетевой адаптер TOE имеет ограниченный срок полезного использования, поскольку системное оборудование быстро достигает уровней производительности TOE и в конечном итоге превышает уровни производительности TOE.
Поставщики
[ редактировать ]Большая часть текущих работ по технологии TOE ведется производителями интерфейсных карт 10 Gigabit Ethernet, такими как Broadcom , Chelsio Communications , Emulex , Mellanox Technologies , QLogic .
См. также
[ редактировать ]- Масштабируемый сетевой пакет
- Технология ускорения ввода-вывода (I/OAT)
- Энергоэффективный Ethernet (EEE)
- Автономная периферийная работа
Ссылки
[ редактировать ]- ^ Джеффри С. Могул (18 мая 2003 г.). Разгрузка TCP — глупая идея, время которой пришло . ХотОС. Усеникс .
- ^ Перейти обратно: а б Энни П. Фунг; Томас Р. Хафф; Герберт Х. Хам; Джайдев П. Патвардхан; Грег Дж. Ренье (2 апреля 2003 г.). Еще раз о производительности TCP (PDF) . Материалы Международного симпозиума по анализу производительности систем и программного обеспечения (ISPASS). Остин, Техас.
- ^ Патент США: 5355453 «Категория архитектуры сетевого файлового сервера с параллельным вводом-выводом»
- ^ Патент США: 6247060 «Передача коммуникационного блока от хоста к локальному устройству таким образом, чтобы сообщение обрабатывалось на устройстве»
- ^ «Новички раскручивают кремний сети хранения данных» , Рик Мерритт, 21.10.2002, EE Times
- ^ Перейти обратно: а б Джонатан Корбет (1 августа 2007 г.). «Большая разгрузка приема» . LWN.net . Проверено 22 августа 2007 г.
- ^ Перейти обратно: а б Аравинд Менон; Вилли Звенепол (28 апреля 2008 г.). Оптимизация производительности приема TCP . Ежегодная техническая конференция USENIX. УСЕНИКС.
- ^ Эндрю Галлатин (25 июля 2007 г.). «lro: универсальная большая разгрузка приема для TCP-трафика» . linux-kernel (список рассылки) . Проверено 22 августа 2007 г.
- ^ "Cxgb" . Freebsd.org . Проверено 12 июля 2018 г.
- ^ "Мксге" . Freebsd.org . Проверено 12 июля 2018 г.
- ^ "Нксге" . Freebsd.org . Проверено 12 июля 2018 г.
- ^ «На виртуальных машинах Linux с включенным LRO может наблюдаться низкая производительность TCP» . ВМваре . 04 июля 2011 г. Проверено 17 августа 2011 г.
- ^ «Базовый драйвер Linux* для семейства адаптеров Intel(R) Ethernet 10 Gigabit PCI Express» . Корпорация Интел . 12 февраля 2013 г. Проверено 24 апреля 2013 г.
- ^ «Отключить LRO для всех сетевых карт, на которых включен LRO» . Red Hat, Inc. 10 января 2013 г. Проверено 24 апреля 2013 г.
- ^ «JLS2009: Общая разгрузка приема» . lwn.net .
- ^ Хуан, Шу; Балдин, Илья (март 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 [...].
- ^ «Механизмы разгрузки Linux и TCP» , 22 августа 2005 г., LWN.net
- ^ Сети: TOE , Linux Foundation .
Внешние ссылки
[ редактировать ]- Статья: TCP-разгрузка спешит на помощь Энди Каррида в ACM Queue
- Заявка на патент 20040042487
- Могул, Джеффри С. (2003). «Разгрузка TCP — глупая идея, время которой пришло» (PDF) . Труды HotOS IX: 9-й семинар по актуальным темам операционных систем . Ассоциация USENIX . Проверено 23 июля 2006 г.
- «Механизм разгрузки TCP/IP (TOE)» . Альянс 10-гигабитного Ethernet . Апрель 2002 года.
- Разгрузка сетевых задач Windows
- ГСО в Linux
- Краткое описание LSO в Linux
- Тематические исследования проблем производительности с LSO и формированием трафика (Linux)
- Новые возможности FreeBSD 7.0, краткое обсуждение поддержки TSO