Машина разгрузки TCP/IP

25 декабрь, 2002 - 00:00Леонід Бараш Внашей статье мы будем исходить из того, что сегодня наиболее распространенной технологией в LAN является TCP/IP over Ethernet. А обработка протокола TCP/IP традиционно выполняется программно на центральном процессоре сервера. Нагрузка на него значительно возросла при появлении 10 GE. Восстановление порядка получаемых пакетов, интенсивный обмен с памятью и обработка прерываний в высокоскоростных сетях привели к тому, что процессор должен выделять больше времени для работы с сетью, чем с приложениями. По приблизительным оценкам на обработку 1 bps сетевых данных требуется 1 Hz частоты процессора. К примеру, ресурсы CPU, работающего на частоте 20 GHz, будут полностью потрачены на обслуживание дуплексного канала 10 GE.

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

Машины разгрузки TCP/IP (TCP/IP Offload Engine -- TOE) призваны снять с центрального процессора большую часть функций по обработке сетевого трафика, высвободив его тем самым для выполнения приложений. Более того, TOE ускорят проникновение на рынок технологии iSCSI и устройств хранения SAN и NAS.


Технология и реализация

Под названием TCP/IP скрывается целый набор протоколов, таких, как TCP, IP, UDP, ICMP (Internet Control Message Protocol) и др. Большинство приложений, работающих на серверах и клиентских машинах, используют протоколы TCP и IP. Поэтому неудивительно, что все варианты TOE, присутствующие сегодня на рынке, решают задачи разгрузки обработки именно этих протоколов.

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

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

При дискретной реализации TOE применяются готовые сетевые процессоры или микропроцессоры, работающие под управлением ОС реального времени (ОСРВ), и компоненты, обеспечивающие функции уровня MAC/PHY. Центральный процессор освобождается от обработки всех протоколов, которые переносятся в стек ОСРВ. Преимущества такого подхода заключаются в наличии широкого выбора готовых компонентов и гибкости, однако возможности масштабирования до 10 GE далеко не очевидны.

В случае использования заказных микросхем ASIC достигается максимальная производительность. Считается, что данное решение обладает наилучшими показателями для масштабирования, но модификация обходится весьма дорого. Недостатки узкоспециализированных микросхем становятся более видимыми, если принять во внимание тот факт, что ASIC, разработанная для установки в сервер, не может быть использована в, скажем, IP-базированных устройствах хранения. К примеру, интерфейсная карта для сервера обрабатывает протокол TCP/IP, но не в состоянии управлять iSCSI-трафиком и передает его центральному процессору. Существуют также и компромиссные реализации, в которых для разгрузки используется как процессор, так и ASIC. Их цель -- обеспечить расширяемость и гибкость наряду с приемлемой производительностью.

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


Производительность при использовании TOE

Безусловно, сейчас еще рано делать какие-нибудь определенные оценки в случае 10 GE, но все же можно попытаться рассмотреть степень эффективности разгрузки TCP/IP с помощью трех основных показателей: пропускной способности, утилизации CPU и задержки.

Пропускная способность всегда являлась главной характеристикой сети, и с ее помощью и сегодня определяют производительность адаптеров как с различными TOE, так и без них. Утилизация CPU также является одной из основных характеристик производительности для серверов. Степень утилизации его ресурсов зависит от двух величин: количества скопированных данных внутри стека протокола при их передаче из сетевого буфера в буфер пользователя и обратно и количества выполненных при этом транзакций. В традиционных адаптерах, оперирующих со стандартными пакетами длиной 1500 байт, для передачи 3000 байт требуются три транзакции (два пакета данных и один пакет подтверждения). Машина разгрузки старается решить проблемы копирования данных и выполнения транзакций путем взаимодействия с системой на сессионном уровне модели OSI, который лежит выше транспортного. Это обычно осуществляется через механизм сокет-интерфейсов. В том случае, когда прикладная программа интенсивно выполняет операции чтения/записи, TOE существенно уменьшает нагрузку на host-систему. В типичном случае при получении/отправке 32 KB данных с использованием традиционной технологии необходимо произвести более 30 транзакций (примерно 20 пакетов данных и 10 пакетов подтверждений). В результате применения TOE вся обработка пакетов данных и подтверждений выполняется на адаптере, а обмен данными с приложением осуществляется посредством механизма DMA.

Еще одна характеристика, на которую TOE оказывает значительное влияние -- это время задержки. Упрощая, можно сказать, что уменьшение количества транзакций между системной шиной ввода/вывода и шиной памяти сокращает время задержки. А реализация протокола TCP/IP в адаптере снижает количество таких транзакций. Сетевой адаптер с TOE будет отвечать быстрее и тем самым ускорит передачу данных между конечными точками.


Проблемы

Реализация TOE и продвижение этой технологии на рынок встречаются с определенными трудностями. Сегодня не существует стандарта на интерфейс между основными операционными системами и TOE-адаптерами. А ведь широкое распространение Ethernet-адаптеров было не в малой степени обусловлено именно наличием таких стандартов.

Другой проблемой является то, что рынок привык к дешевым сетевым адаптерам. Адаптер с TOE, который содержит встроенный процессор или несколько специализированных микросхем ASIC, выходит за пределы устоявшихся ценовых границ. Это вынуждает производителей ASIC искать интегрированные решения, чтобы уменьшить стоимость. Реализация же TOE на одном чипе требует аппаратной обработки протокола TCP/IP, обычно выполняемой программно. В то же время полностью аппаратное решение достаточно сложное.

Если речь идет о подключении сервера к сети каналом 10 GE, то нужно иметь в виду, что, кроме проблем, специфических для TOE, существует и ряд системных проблем. Канал с такой пропускной способностью перегружает всю серверную архитектуру. Для полного использования сетевого канала с такой пропускной способностью требуется сбалансированная система. Шины памяти и ввода/вывода -- это только две из наиболее критических систем. В типичном случае сервер, работающий под управлением ОС Windows 2000, имеет шину PCI 64-bit/66 MHz, которая предоставляет эффективную пропускную способность около 350 MBps. Шина PCI-X 133 MHz повышает это значение до 800 MBps. Однако для поглощения потока 10 Gbps необходима полоса пропускания 1,25 GBps в одном направлении и вдвое большая при дуплексном режиме обмена. Типичная подсистема памяти в этом случае также требует улучшения. Пропускная способность шин памяти должна быть в четыре раза выше, чем шин ввода/вывода, поскольку по ним происходит обмен данными как с сетевым адаптером, так и с CPU.

Сфера применения машины разгрузки TCP/IP не ограничивается только серверами или рабочими станциями. Они с успехом могут использоваться также в системах NAS и SAN -- в общем, во всех случаях, где необходимо управлять IP-трафиком.