RDMA через конвергентный Ethernet (RoCE ) - это сетевой протокол, который позволяет удаленный прямой доступ к памяти (RDMA) по сети Ethernet. Это достигается путем инкапсуляции транспортного пакета IB через Ethernet. Существует две версии RoCE: RoCE v1 и RoCE v2. RoCE v1 является протоколом Ethernet канального уровня и, следовательно, обеспечивает связь между любыми двумя хостами в одном и том же широковещательном домене Ethernet . RoCE v2 - это протокол интернет-уровня, что означает, что пакеты RoCE v2 могут маршрутизироваться. Хотя протокол RoCE имеет преимущества конвергентной сети Ethernet , этот протокол также можно использовать в традиционной или неконвергентной сети Ethernet.
Сетевым приложениям, таким как сетевое хранилище или кластерные вычисления, необходима сетевая инфраструктура с высокой пропускной способностью и низкой задержкой. Преимущества RDMA перед другими сетевыми интерфейсами прикладного программирования, такими как сокеты Berkeley, заключаются в более низкой задержке, меньшей загрузке ЦП и более высокой пропускной способности. Протокол RoCE допускает меньшие задержки, чем его предшественник, протокол iWARP. Существуют RoCE HCA (адаптер хост-канала) с задержкой всего 1,3 микросекунды, в то время как самая низкая известная задержка HCA iWARP в 2011 году составляла 3 микросекунды.
RoCE v1 Протокол - это протокол канального уровня Ethernet с Ethertype 0x8915. Это означает, что применяются ограничения длины кадра протокола Ethernet: 1500 байтов для обычного кадра Ethernet и 9000 байтов для кадра большого размера.
.
RoCE v1.5 - это необычный экспериментальный нестандартный протокол, основанный на протоколе IP. RoCE v1.5 использует поле протокола IP, чтобы отличать свой трафик от других протоколов IP, таких как TCP и UDP. Значение, используемое для номера протокола, не указано, и его выбор остается на усмотрение развертывания.
Протокол RoCE v2 существует поверх протокола UDP / IPv4 или UDP / IPv6. Номер порта назначения UDP 4791 зарезервирован для RoCE v2. Поскольку пакеты RoCEv2 маршрутизируемы, протокол RoCE v2 иногда называют маршрутизируемым RoCE или RRoCE. Хотя в целом порядок доставки пакетов UDP не гарантируется, спецификация RoCEv2 требует, чтобы пакеты с одним и тем же портом источника UDP и адресом назначения не переупорядочивались. Кроме того, RoCEv2 определяет механизм управления перегрузкой, который использует биты IP ECN для маркировки и кадры CNP для уведомления о подтверждении. Программная поддержка RoCE v2 все еще появляется. Mellanox OFED 2.3 или более поздней версии поддерживает RoCE v2, а также Linux Kernel v4.5.
RoCE определяет, как выполнять RDMA через Ethernet, в то время как Спецификация архитектуры InfiniBand определяет, как выполнять RDMA в сети InfiniBand. Ожидалось, что RoCE перенесет приложения InfiniBand, которые в основном основаны на кластерах, в общую конвергентную структуру Ethernet. Другие ожидали, что InfiniBand и дальше будет предлагать более высокую пропускную способность и меньшую задержку, чем это возможно при использовании Ethernet.
Технические различия между протоколами RoCE и InfiniBand заключаются в следующем:
Хотя протоколы RoCE определяют, как выполнять RDMA с использованием кадров Ethernet и UDP / IP, протокол iWARP определяет, как выполнять RDMA через ориентированный на соединение транспорт, такой как Протокол управления передачей (TCP). RoCE v1 ограничен одним широковещательным доменом Ethernet . Пакеты RoCE v2 и iWARP маршрутизируемы. Требования к памяти большого количества соединений наряду с контролем потока и надежности TCP приводят к проблемам масштабируемости и производительности при использовании iWARP в крупномасштабных центрах обработки данных и для крупномасштабных приложений (например, крупных предприятий, облачных вычислений, приложений Web 2.0 и т. Д..). Кроме того, многоадресная передача определена в спецификации RoCE, в то время как текущая спецификация iWARP не определяет, как выполнять многоадресную рассылку RDMA.
Надежность в iWARP определяется самим протоколом, как TCP надежен. RoCEv2, с другой стороны, использует UDP, который имеет гораздо меньшие накладные расходы и лучшую производительность, но не обеспечивает присущей надежности, и поэтому надежность должна быть реализована вместе с RoCEv2. Одно из решений - использовать конвергентные коммутаторы Ethernet, чтобы сделать локальную сеть надежной. Это требует поддержки конвергентного Ethernet на всех коммутаторах в локальной сети и предотвращает прохождение пакетов RoCEv2 через глобальную сеть, такую как Интернет, которая ненадежна. Другое решение - добавить надежность к протоколу RoCE (то есть надежному RoCE), который добавляет квитирование RoCE для обеспечения надежности за счет производительности.
Вопрос о том, какой протокол лучше, зависит от производителя. Intel и Chelsio рекомендуют и поддерживают iWARP исключительно. Mellanox, Xilinx и Broadcom рекомендуют и поддерживают исключительно RoCE / RoCEv2. Другие поставщики, работающие в сетевой индустрии, обеспечивают поддержку обоих протоколов, например, Marvell, Microsoft, Linux и Kazan. Cisco поддерживает как RoCE, так и собственный протокол VIC RDMA.
Оба протокола стандартизированы: iWARP является стандартом для RDMA через TCP, определенным IETF, а RoCE - стандартом для RDMA через Ethernet, определенным IBTA.
Некоторые аспекты, которые могли быть определены в спецификации RoCE, были опущены. Это:
Кроме того, любой протокол, работающий через IP, не может предполагать, что базовая сеть имеет гарантированный порядок, больше чем можно предположить, что перегрузки не может возникнуть.
Известно, что использование PFC может привести к тупиковой ситуации во всей сети.
Среди популярных поставщиков оборудования с поддержкой RoCE: