`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Удаленный прямой доступ к памяти

0 
 
Суть проблемы

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

На эффективность работы серверных приложений могут прямо влиять непроизводительные затраты на обработку стека протоколов TCP/IP. К примеру, уже при соединении 1 GE стек протоколов может потреблять до трети ресурсов процессора сервера, на котором функционирует БД. Одним из решений для приложений, требующих больших ресурсов процессора и полосы пропускания системы ЦП-память и имеющих стандартный интерфейс, является машина разгрузки TCP/IP (TCP/IP Offload Engine -- TOE), о которой мы уже писали ("Компьютерное Обозрение, # 50, 2002). С ее помощью обработка транспортного стека реализуется на сетевом адаптере сервера. Однако такой подход имеет свои ограничения. Существующие алгоритмы TOE показали свою эффективность для сетей 1 GE в случае, если размер сообщений был больше 16 KB, но разницы в утилизации процессора не проявилось для пакетов 4--8 KB. В то же время есть все основания полагать, что для сетей "более чем 1 GE" для повышения производительности системы сетевого ввода/вывода необходим радикально другой подход. Требуется не только освободить процессор от обработки стека TCP/IP, но и исключить операции между приложением и транспортным стеком протоколов. Новый подход включает RDMA и интерфейс прикладного программирования (API) транспортного уровня, такой, как Direct Access API. Однако рассмотрим проблему, возникающую при операциях сетевого копирования несколько подробнее.

В IP-сетях потеря пакетов и нарушение последовательности их приема -- явление не столь уж редкое. Причем оно характерно не только для глобальных, но и для коммутируемых локальных сетей, если выполняется управление потоком в случаях перегрузки каналов. Поэтому перед тем как передать пакеты приложению, необходимо восстановить их первоначальный порядок. Кроме этого, ряд TCP-базированных прикладных протоколов, обеспечивающих некоторые функции транспортного уровня, в частности управление и мультиплексирование данных, лежат выше TCP (к примеру, iSCSI). Во многих случаях управляющая информация, содержащаяся в таких протоколах, идентифицирует буфер приложения для каждой части передаваемых данных. Если сегменты TCP приходят с нарушенным порядком, то зачастую невозможно однозначно интерпретировать управляющую информацию. Например, если длина пакета Upper-Level Protocol Data Unit (ULP DU), передаваемого протоколу вышележащего уровня, находится в сегменте TCP, который задержался или был потерян при передаче, а эта информация -- единственное средство для определения начала последующего ULPDU, то отсутствует какая-либо возможность локализовать управляющую информацию ULP для ULP DU в последующем TCP-сегменте до тех пор, пока задержанный или потерянный сегмент не будет получен.

Удаленный прямой доступ к памяти
Рис. 1
Традиционным решением этой проблемы является создание упорядочивающего буфера (reassembly buffer) в сетевом интерфейсе сервера, как показано на рис. 1. Данные, полученные с нарушением порядка, содержатся в этом буфере до тех пор, пока не будут доставлены недостающие пакеты, а затем осуществляется прямая передача упорядоченных пакетов в протоколы верхнего уровня (ULP). Это во многих случаях достаточно эффективный подход, однако, к сожалению, существует ряд проблем, которые делают его нежелательным, особенно в мультигигабитной сетевой среде. Прежде всего, мы видим, что данные передаются по шине трижды: один раз из сетевого интерфейса в ядро, и два (чтение-запись) -- из ядра в буфер приложения. При этом ресурсы процессора тратятся на непроизводительные расходы по обработке пакетов. Повышение мощности процессора не снимает проблему, так как скорость операций чтение-запись существенно ограничивается низкой пропускной способностью шины данных. Далее, размер буфера должен существенно возрастать как с числом активных TCP-соединений, так и со скоростью сетевых каналов. На этом мы, пожалуй, закончим несколько затянувшееся подведение "марксистской базы" и перейдем к рассмотрению решений...


RDMA over IP

Прежде всего нужно сказать, что идея передачи данных по сети из памяти одного компьютера в память другого не является очень новой. В индустрии известны ряд решений, как опирающихся на стандарты, так и патентованных. К ним, в частности, относятся Myrinet и Compaq/Tandem Servernet for System Area Network. Вдобавок были разработаны ориентированные на приложения RDMA-базированные интерфейсы прикладного программирования (API), включающие SCSI RDMA Protocol для поблочной передачи данных, Sockets Direct Protocol для сетей общего назначения, архитектура виртуального интерфейса для кластерных баз данных (Virtual Interface Architecture -- VIA). Однако широкое распространение IP-сетей не могло не повлиять на перспективные разработки в этом направлении. Ведь существование общего стандартизованного решения, опирающегося на наиболее распространенный транспорт, обозначает, что оно может быть аппаратно реализовано в сетевых картах при относительно низкой стоимости. Перейдем к архитектурным особенностям описываемой технологии.

Семейство протоколов объединяется названием Remote Direct Data Placement on Internet Protocol (RDDP). Основной особенностью RDDP является произвольный доступ к памяти. Для примера, удаленный узел может послать сообщение, содержащее 1000 байт данных в буфер B другого узла по адресу 5000, а затем последующее сообщение с другими 1000 байтами в тот же буфер B по адресу 2000. В общем, вся механика архитектуры RDDP нацелена на то, чтобы обеспечить обмен данными между произвольными областями памяти двух узлов. Однако не все данные, передаваемые с помощью RDDP, носят одинаковый характер. Протокол различает два типа сообщений:
  • отмеченные сообщения (tagged messages). Они предназначены для обновления указанного буфера в узле-приемнике своим содержимым. Тегом служит небольшая часть управляющей информации, которая идентифицирует буфер и начальный адрес;
  • неотмеченные сообщения (untagged messages). Такие сообщения помещаются прямо в протокол клиента без какой-либо интерпретации или модификации. Неотмеченные сообщения являются аналогом сообщений традиционного транспортного протокола (например, UDP).
Буфер RDDP является абстрактным объектом, который определяет непрерывное пространство адресов. Клиентский протокол регистрирует буфера посредством протоколов RDDP. Результатом регистрации являются управляющий тег (steering tag) и значения диапазона адресов, используемых удаленным узлом для выполнения операций с отмеченными сообщениями в данном буфере. После того как локальный узел зарегистрировал буфер, тот становится доступным удаленному узлу. Однако локальный узел должен послать параметры буфера удаленному узлу, чтобы разрешить доступ. Локальное приложение может защитить свою память посредством использования специального ключа. Для доступа к защищенной памяти удаленное приложение должно указать правильный ключ, значение которого оно получает в процессе регистрации буфера. Архитектура RDDP не определяет механизм для обмена параметрами буфера. Ими можно обмениваться, применяя любое из имеющихся средств, включая связь в основной полосе или вне нее. Протокол RDDP позволяет регистрировать много буферов или несколько раз один и тот же буфер. Последний вариант может быть использован для одновременного доступа к буферу более чем одним удаленным узлом.

Кроме буфера, в архитектуре RDDP существует также понятие извещения (notification). Это уведомляющее сообщение, которое доставляется клиентскому протоколу и служит сигналом завершения операции протокола RDDP. Например, после того как отмеченное сообщение будет полностью обработано RDDP узла-получателя и буфер будет обновлен, уведомление, сигнализирующее о завершении операции, может быть доставлено клиентскому протоколу. Извещения к клиентскому протоколу обеспечивают:
  • доставку неотмеченного сообщения (извещение включает содержимое неотмеченного сообщения);
  • доставку отмеченного сообщения (или RDMA-запись). Извещение включает релевантную идентификацию отмеченного сообщения. Отправитель такого сообщения может определять, доставляется ли извещение для отмеченного сообщения или нет;
  • завершение операции RDMA-чтение;
  • сообщение об ошибках.
Извещения RDDP являются своеобразными "якорями", которые клиентские протоколы используют для выполнения и завершения последовательности операций с отмеченными сообщениями.

Архитектура RDDP определяется в терминах четырех протокольных уровней:
  • транспортный протокол, ориентированный на сообщения. Им может являться, в частности, SCTP (Simple Control Transport Protocol), UDP, DCCP (Datagram Congestion Control Protocol) или TCP с дополнительным уровнем разграничивания сообщений (например, посредством указания его длины);
  • протокол Direct Data Placement (DDP), который обеспечивает сегментацию сообщений и передачу данных с произвольным доступом к памяти;
  • протокол RDMA, в функции которого входят чтение и запись в память, управление потоком и ряд других примитивов доступа к памяти;
  • клиентский протокол.
Основная функция протокола RDMA в архитектуре RDDP -- это операции, связанные с чтением из памяти. Операции записи в память в контексте RDMA эквивалентны отправке отмеченного DDP-сообщения.

Традиционные протоколы RDMA выполняют большинство или все функции RDMA, DDP и транспортные в едином протоколе. Однако для встраивания механизма удаленного прямого доступа в IP-архитектуру появляются веские основания для разделения этих функций. Рассмотрим некоторые "протокольные взаимоотношения".

Удаленный прямой доступ к памяти
Рис. 2
Удаленный прямой доступ к памяти
Рис. 3
Основной особенностью архитектуры RDDP является делегирование функций сетевого транспорта традиционным протоколам Internet. В иерархии стека протоколов RDDP строго располагается на вершине TCP. Другая важная особенность -- прозрачность некоторых характеристик нижележащих транспортных протоколов для клиентского. Например, RDDP поверх UDP обеспечивает негарантированную доставку неупорядоченных пакетов, тогда как RDDP поверх SCTP, напротив, реализует надежный сервис. Хотя архитектура RDDP предусматривает работу с различными транспортными протоколами, основное внимание было уделено надежным транспортным протоколам, обеспечивающим упорядоченную доставку пакетов, таким, как TCP и SCTP.

Архитектура RDDP предусматривает также разделение функций DDP и RDMA. DDP отвечает за доставку отмеченных сообщений для модификации содержимого удаленного зарегистрированного буфера. Другими словами, DDP выполняет операции записи в буфер с произвольным доступом. RDMA комбинирует операции записи DDP с неотмеченными управляющими сообщениями, чтобы реализовать полнофункциональный двунаправленный протокол с удаленным произвольным доступом к памяти, который включает операции чтения, записи и управление потоком.

Для разделения DDP и RDMA в архитектуре RDDP имеются две основные мотивации. У традиционных протоколов RDMA очень похожие DMA-механизмы передачи данных, но существенно различаются схемы управления. Так, например, VIA не определяет механизма управления потоком, возлагая это на клиентский протокол, в то время как у InfiniBand он имеется. Далее, некоторые существующие протоколы Internet-приложений включают свои собственные модели управления, которые более эффективно отображаются на DDP, а не на RDMA.

На рис. 2 приведена схема стека протоколов RDMA over IP, а на рис. 3 отображен общий алгоритм обмена данными память-память.
0 
 

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT