Открыть сервис

RDMA

RDMA (Remote Direct Memory Access, рус. прямой удалённый доступ к памяти) — это технология, позволяющая одному компьютеру напрямую читать и записывать данные в память другого компьютера без участия процессоров, операционных систем и буферизации данных на стороне получателя. RDMA обеспечивает высокую пропускную способность и минимальную задержку (латентность) при передаче данных по сети, что делает её ключевой для высокопроизводительных вычислений (HPC), центров обработки данных (ЦОД) и систем хранения данных.

История

Предпосылки появления

До появления RDMA сетевое взаимодействие строилось по модели «копирование данных»: данные из пользовательского приложения сначала копировались в буфер ядра операционной системы (ОС) отправителя, затем передавались по сети в буфер ядра получателя, после чего копировались в память приложения-получателя. Этот путь включал многократные переключения контекста (context switch) и операции копирования, что создавало значительную задержку (десятки микросекунд) и нагрузку на центральный процессор (CPU).

Разработка стандартов

Первые реализации RDMA появились в 1990-х годах в рамках проектов по созданию высокоскоростных межсоединений для суперкомпьютеров. В 1999 году был основан InfiniBand Trade Association (IBTA), разработавший стандарт InfiniBand — первую специализированную сетевую архитектуру с аппаратной поддержкой RDMA. Параллельно развивалась технология Virtual Interface Architecture (VIA), предложенная компаниями Intel, Microsoft и Compaq.

В 2000-х годах началась адаптация RDMA для стандартных сетей Ethernet. В 2010 году был опубликован стандарт RDMA over Converged Ethernet (RoCE), который позволял использовать RDMA поверх Ethernet-сетей без потерь (lossless Ethernet). Позднее появился протокол iWARP (Internet Wide Area RDMA Protocol), работающий поверх TCP/IP.

Современное состояние

К 2020-м годам RDMA стала стандартной технологией в современных ЦОД. Основные производители сетевого оборудования (Mellanox, ныне часть NVIDIA; Intel; Broadcom) выпускают сетевые адаптеры (NIC/HCA) с аппаратной поддержкой RDMA. Технология поддерживается в операционных системах Linux (через библиотеки libibverbs, rdma-core) и Windows (с помощью Network Direct).

Архитектура и принцип работы

Базовые концепции

RDMA основана на модели двусторонних операций (two-sided) и односторонних операций (one-sided). В односторонних операциях (RDMA Read, RDMA Write) приложение-отправитель напрямую обращается к памяти приложения-получателя без уведомления процессора получателя. В двусторонних операциях (Send/Receive) оба узла участвуют в согласовании передачи.

Ключевые элементы архитектуры:

  • Вербс (verbs) — программный интерфейс (API) для работы с RDMA, стандартизированный в спецификации InfiniBand. Включает операции создания очередей (Queue Pair, QP), регистрации памяти (Memory Registration) и выполнения RDMA-операций.
  • Очереди (Queue Pairs, QP) — пара очередей (отправки и приёма), создаваемых на каждом узле для связи с другим узлом. Каждый QP имеет уникальный идентификатор.
  • Защищённая память (Protection Domain, PD)контейнер, связывающий зарегистрированную память и QP, обеспечивающий изоляцию доступа.
  • Memory Registrationпроцесс, при котором приложение «закрепляет» область своей физической памяти (pinning), запрещая операционной системе выгружать её в своп или перемещать. В результате сетевой адаптер получает прямой доступ к физическим адресам памяти.
  • Completion Queue (CQ)очередь уведомлений о завершении операций.

Поток выполнения операции RDMA Write

  1. Приложение на узле A регистрирует буфер памяти (Memory Region, MR) и сообщает узлу B его ключ (rkey — remote key).
  2. Узел B создаёт QP, связывает его с PD и регистрирует свой локальный буфер.
  3. Узел B отправляет команду RDMA Write, указывая локальный адрес, удалённый адрес (на узле A) и rkey.
  4. Сетевой адаптер узла B (RNIC — RDMA Network Interface Controller) напрямую записывает данные в память узла A, не затрагивая процессор узла A.
  5. После завершения операции адаптер узла B помещает уведомление в CQ.

Преимущества перед традиционным стеком TCP/IP

  • Нулевое копирование (zero-copy) — данные передаются напрямую из памяти приложения отправителя в память приложения получателя без промежуточного копирования в буферы ядра.
  • Обход ядра (kernel bypass) — операции выполняются без переключения контекста между пользовательским и ядерным пространством.
  • Низкая задержка — типичная задержка RDMA составляет 1–5 микросекунд (против 20–100 микросекунд для TCP/IP).
  • Низкая нагрузка на CPU — обработка передачи выполняется сетевым адаптером, а не процессором.

Виды и протоколы

InfiniBand

Специализированная сетевая архитектура, разработанная изначально для RDMA. Обеспечивает наименьшие задержки (менее 1 мкс) и наивысшую пропускную способность (до 400 Гбит/с в версии HDR). Требует специального оборудования (адаптеры HCA, коммутаторы) и кабельной инфраструктуры. Широко применяется в суперкомпьютерах (например, в системе «Ломоносов-2» МГУ).

RDMA over Converged Ethernet (RoCE)

Протокол, инкапсулирующий RDMA-пакеты в кадры Ethernet. Существует две версии:

  • RoCE v1 — работает на уровне 2 (канальный уровень), не поддерживает маршрутизацию по IP.
  • RoCE v2 — работает поверх UDP/IP (уровень 3/4), что позволяет маршрутизировать трафик через стандартные IP-сети. Требует настройки механизмов управления перегрузками (Priority Flow Control, PFC) для предотвращения потерь пакетов, так как RDMA чувствительна к потерям.

iWARP (Internet Wide Area RDMA Protocol)

Протокол, работающий поверх TCP/IP. Использует стандартный стек TCP, что упрощает интеграцию в существующие сети, но увеличивает задержку из-за накладных расходов TCP (подтверждения, повторные передачи). Поддерживается в сетевых адаптерах Intel и Chelsio.

Применение

Высокопроизводительные вычисления (HPC)

RDMA является основой для MPI (Message Passing Interface) — стандартного протокола обмена данными в параллельных вычислениях. Библиотеки MPI (Open MPI, MVAPICH) используют RDMA для минимизации задержек при передаче сообщений между узлами кластера. В суперкомпьютерах, входящих в рейтинг TOP500, доминирует InfiniBand.

Системы хранения данных

Технология применяется в протоколах доступа к удалённым хранилищам:

  • NVMe over Fabrics (NVMe-oF) — протокол доступа к NVMe-накопителям по сети с использованием RDMA (NVMe/RDMA). Позволяет достичь задержек доступа к удалённому диску, сопоставимых с локальным (единицы микросекунд).
  • iSCSI Extensions for RDMA (iSER) — расширение протокола iSCSI для работы поверх RDMA.

Базы данных и распределённые системы

RDMA используется в распределённых СУБД (например, Oracle RAC, SAP HANA) и in-memory data grids (Apache Ignite, Redis Cluster) для синхронизации кэшей и передачи данных между узлами с минимальной задержкой. Технология поддерживается в кластерных файловых системах (Lustre, GPFS).

Финансовый сектор

В алгоритмической торговле и системах электронных бирж (например, Московская биржа, CME Group) RDMA применяется для передачи котировок и исполнения сделок с минимальной задержкой (low-latency trading).

Критика и ограничения

Сложность внедрения

RDMA требует специального сетевого оборудования (адаптеры с поддержкой RDMA, совместимые коммутаторы) и настройки операционной системы. Для RoCE v2 критически важна конфигурация механизмов управления перегрузками (PFC, ECN), что может быть сложным в крупных сетях.

Отсутствие стандартной модели программирования

Хотя API verbs стандартизирован, реализация для разных протоколов (InfiniBand, RoCE, iWARP) может различаться. Существуют библиотеки-обёртки (libfabric, UCX), упрощающие разработку, но они не полностью абстрагируют аппаратные особенности.

Проблемы безопасности

Прямой доступ к памяти удалённого узла создаёт риски: злоумышленник, получивший доступ к RDMA-сети, может читать и записывать произвольные области памяти. Для защиты используются механизмы изоляции (Protection Domain, Memory Keys), но они не являются панацеей. В некоторых конфигурациях RDMA несовместима с традиционными сетевыми средствами безопасности (брандмауэры, IDS/IPS).

Зависимость от потерь пакетов

RDMA (особенно RoCE) крайне чувствительна к потерям пакетов: даже единичная потеря может вызвать резкое падение производительности из-за механизмов повторной передачи на уровне канала. Это требует обеспечения «беспотерьной» сети (lossless fabric), что достигается за счёт сложных настроек Ethernet.

Интересные факты

  • Первая коммерческая реализация RDMA появилась в 2001 году в продуктах компании Mellanox (сейчас подразделение NVIDIA).
  • В 2016 году технология RDMA была использована в экспериментах по передаче данных на расстоянии более 100 км с задержкой менее 10 микросекунд.
  • В России технология RDMA активно применяется в суперкомпьютерах МГУ («Ломоносов-2») и «Кристофари» (НИЦ «Курчатовский институт»), а также в дата-центрах «Яндекса» и Сбербанка.
  • Спецификация RDMA поддерживается в стандарте NVMe over Fabrics с 2016 года, что позволило создавать высокопроизводительные сети хранения данных (SAN) на основе NVMe.

Источники

  • InfiniBand Trade Association. «InfiniBand Architecture Specification, Volume 1». 2015.
  • RDMA Consortium. «RDMA Protocol Verbs Specification». 2003.
  • «RDMA over Converged Ethernet (RoCE) Standard». IEEE 802.1Qbb, 2011.
  • «iWARP Protocol Specification». IETF RFC 5040-5044, 2007.
  • «High-Performance Computing with RDMA: A Survey». ACM Computing Surveys, 2020.
  • «NVMe over Fabrics: Architecture and Performance». SNIA, 2018.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →