Что такое iWARP?

Речь у нас пойдет об iWARP.  iWARP  или, полностью,  Internet Wide Area RDMA Protocol,  — это набор стандартов для обеспечения работы RDMA по IP-сетям,  созданный для сетей 10 Gigabit Ethernet. По сути iWARP направлен на то, что бы переложить часть нагрузки по обработке TCP/IP на «железо», в частности, на  сетевые адаптеры, разгружая тем самым центральный процессор и увеличивая эффективность  сетевого стека.  Как следствие, мы получаем возможность построения ethernet сетей с низкой латентностью. Для рынка HPC систем это означает, в первую очередь, что стандартный ethernet становится альтернативой быстрым сетям Infiniband, но обэтом позже.

Первые спецификации iWARP были опубликованы RDMA Consortium  еще в октябре 2002 года. После доработок, в  2007 году IETF (Internet Engineering Task Force) опубликовал уже стандарт  RDMA через TCP, разработанный RDMA Consortium.

Ключевые составляющие iWARP

Сущность набора стандартов iWARP можно свести к трем основным понятиям:

• Kernel bypass — доставка данных непосредственно в окружение пользователя, устраняя необходимость  переключения контекста приложения между режимами ядра и пользователя.

Direct Data Placement  — доставка данных в память приложения без копирования данных между различными буферами, например между  буфером адаптера и буфером сетевого стека.

Transport Acceleration   — ускорение обработки стека  TCP/IP за счет переноса процесса обработки непосредственно на сетевую карту без использования центрального процессора  и системного программного обеспечения.

Рассмотрим подробнее каждую из составляющих:

1. Kernel bypass

Для этой технологии так же применяется название OS bypass и user level direct access.

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

iWARP kernel bypass позволяет из приложения отправить команду сетевому адаптеру напрямую . Это устраняет необходимость вызова системных функций ОС и существенно снижает количество переключений контекста (см. рис).

Есть еще ряд операций, обычно выполняемых ОС по запросу приложения на операциях ввода-вывода: защита устройств ввода-вывода, защита памяти, трансляция виртуальной адресации памяти в реальную и обратно и т.д.  В нашем случае  все эти задачи теперь управляются сетевым адаптером  с iWARP, который так же назвают  accelerated ethernet adapter.
Использование адаптеров с технологией kernel bypass уменьшают  «сетевую» нагрузку ЦПУ на 40%, т.е. на 40% меньше требуется ресурсов ЦПУ по сравнению с нагрузкой на центральный процессор при тех же операциях и  использовании обычных адаптеров 10 GbE ( unaccelerated NIC ).

 

2. Direct Data Placement /Zero Copy model

В традиционной реализации TCP/IP получаемый пакет отправляетcя в память сервера через DMA (direct memory access) из буфера сетевого адаптера. Затем эти данные  неоднократно копируются центральным процессором пока не достигнут своего места назначения — буфера приложения. Каждое копирование буфера требует операция чтения и записи в память.

На иллюстрации показан путь данных  от буфера адаптера до буфера приложения с использованием технологии RDMA ( remote direct memory access ) и без нее.  Без RDMA загрузка канала к памяти сервера составляет увеличенную в пять раз пропускную способности сети, т.е. для сети 10Gbps мы будем иметь загрузку 50Gbps ( более 6 Гигабайт в секунду).

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

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

Что бы избежать избыточного копирования данных, описанного выше, технологии RDMA и Direct Data Placement были формализованы как часть iWARP.  RDMA включает в пакет информацию, указывающее буфер целевого приложения к которому относится пакет. Это позволяет помещать пакет прямо в нужный буфер прикладной программы даже в том случае, когда пакеты приходят в разном порядке. Данные, таким образом, могут быть перемещены из одного сервера в другой без необходимости многократного копирования буферов и традиционного «собирания»  полного буфера.   Иногда эту модель  называют «zero copy» модель.
Вместе RDMA и DDP уменьшают на 20% загрузку центрального процессора относительно полной сетевой загрузки при использовании обычного адаптера. Так же существенно уменьшается загрузка канала обмена процессора с памятью.
3. Transport Acceleration   — Offloading TCP/IP (Transport) Processing

     В Ethernet сетях обработка TCP/IP стека традиционно выполняется программным обеспечением, что приводит к сильной загрузке центрального процессора сервера. Обработка стека включает такие задачи как — обновление TCP контекста, реализация требуемых TCP таймеров, сегментирования и сборка, управления буферами и их копированием, обработка прерываний и т.д.
     Загрузка ЦПУ возрастает линейно в зависимости от количества обработанных пакетов. С ростом пропускной способности сети в 10 раз, при переходе от 1GbE к 10 GbE, загрузка процессора при обработке пакетов так же возрастает на порядок.
 Как следствие процессор часто оказывается перегружен обработкой сетевых пакетов еще до того как пропускная способность сети достигнет своего максимума.
   Одна из спецификаций iWARP позволяет освободить ЦПУ от обработки сетевого стека и переложить эту задачу на специализированное оборудование (сетевой адаптер), что снижает на 40% загрузку процессора по сравнению с использованием обычного сетевого адаптера, когда обработкой сетевого стека занимается ЦПУ сервера и системное ПО. Функция Transport offload может быть реализована в адаптере как отдельно, как TOE ( Transport offload engine ), так и как составная часть адаптера, поддерживающего iWARP спецификацию. Перемещение обработки на адаптер так же устраняет одну из операций  копирования данных буфера  между системной памятью сервера и памятью адаптера. Это снижает загрузку канала обмена ЦПУ  с памятью и приводит к уменьшению латентности сети.
Выводы 

В реальной жизни сети Ethernet обычно используются в качестве сетей LAN. С внедрением поддержки iWARP их возможности возрастают и они начинают претендовать на работу в качестве SAN сетей и HPC сетей ( интерконнект ).   Использование единой сети в качестве LAN, SAN, HPC  называют  консолидацией сетей (fabric consolidation).  Такая возможность влечет за собой уменьшение количества разнородных кабелей и коммутаторов, уменьшение используемых портов, упрощение коммутации, для управления всеми сетями становится возможным использовать стандартные средства мониторинга и управления tcp/ip,  и т.д.

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