Благодаря Интернету, Появление искусственного интеллекта и т. д., Межмашинная связь предъявляет более высокие требования к пропускной способности и задержке. Технология RDMA также постоянно итеративно развивается. нравиться: Протокол RoCE (RDMA Converged Ethernet), Из RoCEv1 -> RoCEv2, и протокол IB, Сетевая карта Mellanox RDMA cx4, cx5, cx6/cx6DX, cx7 и т. д., В этой статье в основном анализируется технология RoCE на базе CX5 и CX6DX. Введение в ключевые технологии RDMA и RoCE с потерями и без потерь.
Nvidia Mellanox фокусируется на реализации многих сетевых деталей, предоставляя пользователю больше выбора (пользователь может включить или отключить после понимания)
RoCE: RDMA объединяется с Ethernet, наследуя все преимущества RDMA
WQE: элемент рабочей очереди, произносится (вуки)
CQE: элемент очереди завершения, произносимый (cookie)
RDMA Atomic: атомарная операция, в основном используемая в распределенных блокировках, кеше Redis и других сценариях.
DCQCN: Уведомление о количественной перегрузке центра обработки данных
ZTR(Zero Touch RoCE)
PCP (код приоритета): код приоритета используется для классификации и управления сетевым трафиком, а также обеспечения качества обслуживания на уровне 2 Ethernet. Он классифицирует пакеты, используя 3-битное поле PCP в заголовке VLAN. Дифференцированные службы или DiffServ используют 6-битный DSCP в 8-битном поле DS в заголовке IP для классификации пакетов.
ECN: явное уведомление о перегрузке — это расширение протокола Интернета и протокола управления передачей, определенных в RFC 3168 (2001). ECN позволяет осуществлять сквозное уведомление о перегрузке сети без потери пакетов. ECN — это дополнительная функция, которую можно использовать между двумя конечными точками с поддержкой ECN, если базовая сетевая инфраструктура также поддерживает ее.
DSCP (кодовая точка дифференцированных услуг): Кодовая точка дифференцированных услуг, дифференцированные услуги или DiffServ — это архитектура компьютерной сети, которая определяет механизм классификации и управления сетевым трафиком, а также обеспечения качества обслуживания (QoS) в современных IP-сетях. Например, DiffServ можно использовать для обеспечения низкой задержки для критического сетевого трафика, такого как голосовой или потоковый мультимедиа, одновременно обеспечивая максимально эффективное обслуживание некритических сервисов, таких как веб-трафик или передача файлов. DiffServ использует 6-битную кодовую точку дифференцированных услуг (DSCP) в 8-битном поле дифференцированных услуг (поле DS) заголовка IP для классификации пакетов. Поле DS заменяет устаревшее поле TOS IPv4.
Cos: класс обслуживания Классификация обслуживания
CX-6 DX: серия для центров обработки данных
ООС: не по порядку, не по порядку
PSN: порядковый номер пакета, порядковый номер пакета, пакет разбивается на несколько пакетов в соответствии с MTU, каждый пакет имеет порядковый номер PSN
CNP: пакет уведомления о перегрузке пакет уведомления о перегрузке
RP: точка реакции. Конец, который реагирует на уведомление (пассивная сторона).
NP: точка уведомления. Конец, инициирующий уведомление (активная сторона).
TO: поторговаться, взвесить
BDP: произведение задержки полосы пропускания. При передаче данных произведение задержки полосы пропускания является произведением пропускной способности канала передачи данных (в битах в секунду) и времени его двусторонней задержки (в секундах).
Механизм GoBackN
Основные понятия RDMA
ЦП отправляющей стороны один раз позвонит в дверной звонок, когда он будет готов отправить данные, но принимающая сторона не уведомит ЦП после получения данных сетевой карты (уменьшая накладные расходы).
Отправитель Отправитель -> Получатель Получатель
Управление потоком — это протокол канального уровня. Высокий и низкий уровни воды устанавливаются в буфере RX получателя. Когда буфер получателя заполнен, отправителю отправляется кадр паузы XOFF и приостанавливает отправку пакета до тех пор, пока получатель не освободится. После выхода из приемного буфера отправьте кадр UN-Pause отправителю, отправителю XON, и перезапустите отправку. Это решение не будет пересекать коммутатор.
Многопотоковая проблема: Кадры паузы нечувствительны к потоку, повлияетдругойпоток
Решение: решение без потерь, приоритетное управление потоком PFC, использование 8 приоритетов (0–7), независимое управление каждой службой классификации потоков CoS, сетевая карта может разделить буфер, например, половина запускается без потерь, а половина остается с потерями.
Формат кадра 802.3x PAUSE и кадра PFCссылка
Сторона хоста: вы можете просмотреть и настроить управление потоком PFC с помощью инструментов ethtool и mlnx_qos. Соответствующие конфигурации также необходимы на стороне коммутатора. Если оно находится в нескольких компьютерных залах, необходимо поддерживать аналогичные конфигурации (одна из проблем без потерь, иногда проблема). коммутатор находится вне нашего контроля), поэтому сеть такого размера ограничивает конфигурацию без потерь)
Проблема с пробками:
Ответчик ReactionPoint (сетевая карта отправителя) --------------- Переключатель точки перегрузки точки перегрузки --------------- Инициатор уведомления NotificationPoint (сетевая карта получателя)
принцип: Когда коммутатор обнаруживает перегрузку, Отметьте экспортную посылку знаком ECN, После того как принимающая сторона получит пакет ECN, Поскольку есть информация QP отправителя, Отправьте пакет уведомления о перегрузке CNP на отправляющую сторону, В это время, если отправитель получает пакеты ECN от нескольких получателей, Отправителю необходимо иметь распределенный алгоритм контроля перегрузки (DCQCN, Разработано Mellanox и Microsoft), замедлить и запланировать отправку, Если отправитель не получает CNP в течение определенного периода времени, В настоящее время движение транспорта необходимо восстановить. На данный момент существует три этапа восстановления: Быстрое восстановление FR(быстрое recovery) -> Двусторонний инкрементный AI (аддитивный increase) -> Увеличьте HAI быстрее (гипер increase)
в cx6 Алгоритм контроля перегрузки можно настроить на сетевой карте DX. Например, Alibaba и Google имеют свои собственные алгоритмы управления перегрузками. алгоритмссылка:
1. Алгоритмы могут использоваться для настройки аппаратного обеспечения, микроядер и т. д., а контроль перегрузки может быть достигнут без настройки коммутаторов.
2. Над алгоритмами также работает специальная команда.
Формат кадра CNP:
Настройте управление потоком:
В основном PCP уровня 2 и DSCP уровня 3, которые выполняют классификацию трафика и обеспечивают качество обслуживания.
Разрежьте буфер RX, например, на 8 фрагментов, для более детального управления приоритетной очередью.
Конфигурация в один клик: Может быть обнаружен и настроен с помощью сценариев, для управления RoCE Утилита командной строки для высокопроизводительной настройки сетевого интерфейса развернутых систем. ссылка: https://github.com/NVIDIA/doroce-linux
Чтобы лучше продвигать и использовать RoCE, конфигурация с потерями решает некоторые проблемы конфигурации без потерь.
Примечание. В следующем списке функций cx4 поддерживает только AR (адаптивная повторная передача). Эта функция является лишь переходной версией для cx4 и имеет лучшую поддержку в cx5.
CX-5
1. После того, как получатель получает пакет с нарушением порядка (PSN2 потерян), счетчик OOS увеличивается на 1, а номер psn (psn2) включается в ответ oos_nack отправителю, и отправляется CNP
2. После того, как отправитель получает сообщение, он увеличивает количество ошибок и отправляет последующие пакеты с более низкой скоростью (чтобы предотвратить дальнейшую потерю пакетов).
3. Количество связанных ошибок можно просмотреть в аппаратных счетчиках.
4. другой: ecn_mark, mst status -v, ls /sys/class/net/ens3f0/roce_rp/enable/, 8 приоритетов (0~7), rp: reaction_point Здесь только отправляющая сторона
Когда происходит аппаратная потеря пакета, отправитель отправляет CNP самому себе, и счетчик CNP увеличивается на 1.
Получатель отправляет OOS_NACK (пакет с нарушением порядка, отрицательный ответ) и CNP. После того, как отправитель получает CNP, счетчик увеличивается на 1, а скорость снижается.
cx5 включает эту функцию по умолчанию
1. Когда пакеты теряются, вновь созданный QP также необходимо контролировать с более низкой скоростью для отправки пакетов.
2. Все счетчики вновь начатого трафика находятся на стороне отправки (как показано ниже). После получения нескольких элементов управления медленным перезапуском и отправки собственного пакета уведомления о перегрузке QP переходит из состояния ожидания в состояние отправки (возобновление приостановки).
3. Тайм-аут QP определяется протоколом IB (простой QP должен контролироваться приложением для улучшения использования QP)
Медленный перезапуск подходит для длинного трафика. Он не подходит для QP с коротким потоком, которые отправляют команды экстренного управления. По сравнению с управлением TCP, он должен быть проще. Чтобы найти компромисс, QP, управляемый медленным перезапуском, будет. подвергаться воздействию последующего DCQCN (алгоритма динамического управления перегрузками) для достижения равновесия на пределе скорости.
После медленного перезапуска После запуска другого QP, Отправляйте пакеты с ограниченной скоростью, пока пробка не будет снята
Когда сеть перегружена, исходному Go-BackN может потребоваться повторно передать большое количество пакетов, которые прибыли на принимающую сторону, но были проигнорированы.
Теперь используйте размер окна, чтобы уменьшить стоимость повторной передачи.
1. TCP может управляться динамически, здесь в качестве единицы используется QP, а размер окна фиксирован.
2. Размер выдающегося окна заполнен: пакет ACK или NACK не получен.
3. После получения ACK окно PSN опустится вниз.
4. Запрашивающая сторона выполняет три записи 1K RDMA. После получения ACK она перемещается вниз по окну (если окно имеет 6 номеров PSN) и генерирует CQE.
5. Чем больше расстояние на рисунке, тем дольше время ожидания.
6. IB определяет спецификации ответа ACK, При получении 1 нужно ответить на 1 (последний PSN), Чтобы предотвратить тупик, Каждые 8 PSN ответят 1 ACK, ссылка Управление потоком BDP (Пропускная способность Delay Product произведение задержки полосы пропускания)
Отправитель динамически регулирует ACK_TIMEOUT (например, после отправки 3 PSN время подтверждения, необходимое получателю для ответа на PSN3, истекает).
1. Как отправляется тайм-аут (соответствует трем маленьким картинкам справа)?
(1) Последний PSN теряется, отвечающая сторона не выполняет никаких операций, а отправляющая сторона наконец запускает тайм-аут подтверждения (тайм-аут подтверждения). Весь MSG необходимо передать повторно, В этом процессе нет ничего необычного, OOS, Ни ACK, ни NACK, Пользовательские программы могут устанавливать конфигурацию тайм-аута на уровне пользователя для QP (ссылка Руководство по программированию), Следующая конфигурация атрибута QP: attr->timeout, Свойства соединения
Различайте тайм-аут пользователя (больше) и тайм-аут оборудования (ADAPTIVE_TIMER меньше тайм-аута пользователя).
(2) 2k данных делятся на 2 PSN. Запрашивающая сторона не ожидает подтверждения. Все сообщение передается повторно после таймаута.
(3) 3 PSN, PSN2 потерян, срабатывает OOS_NACK и теряется NACK, аналогично 2, все сообщение передается повторно после таймаута
2. Для пользовательского тайм-аута обычно устанавливается относительно большое значение, для аппаратного тайм-аута устанавливается меньшее значение, а верхним пределом является период пользовательского тайм-аута, который можно динамически регулировать для более быстрой повторной передачи ответного сообщения.
3. Счетчик, roce_adp_retrans(hw), local_ack_timeot_err(sw,hw)
4. Формула расчета таймаута в спецификации IB гарантированно составляет не менее 4,096 мкс (микросекунд) с помощью экспоненциальной функции. Этот алгоритм также используется для таймаута установления соединения CM.
1. Каждый QP добавляет контекстную информацию, обработку аппаратных событий, обработку событий NACK, каждый QP отличается (неглобальная конфигурация).
2. Программное обеспечение не видит ACK и NACK, только CQE.
3. Каждый QP имеет свой RTT, поэтому время ожидания близко к RTT (идеальный эффект сети). RTT каждого QP также меняется динамически в зависимости от того, входить в очередь или нет.
4. В частности, эта функция лучше подходит для чтения RDMA.
Отправителю необходимо только повторно передать потерянные пакеты, а получатель поддерживает реорганизацию вне порядка.
1. Потеря пакетов слева, как с этим справляется GO-BACK-N, переотправить 5, 6, 7, 8
2. Как показано справа, нажмите, куда укажете, например, чтобы повторить передачу 4.
3. Снизить затраты на ретрансляцию, То есть уменьшить часть из-за обратной передачи, outstanding Чем больше ПСН, Чем лучше эффект, нравиться: Лучше для одного QP
4. При наличии нескольких QP, например 100 QP, чем тоньше распределение, использование полосы пропускания gobackn не сильно отличается от использования selective_repeat.
5. Слишком много QP склонны к потерям кэша, и общая скорость не может достичь хороших результатов при настройке dcqcn. Более подходящими являются 100 ~ 2K QP. В целом значение находится в пределах 1 Вт.
6. DCQCN предъявляет определенные требования к количеству QP.
7. В зависимости от версии прошивки и аппаратной версии cx4/5 может поддерживать 6 тыс. QP (T+R) на узел.
8. В основном запускается NACK
Разрезайте запросы на чтение на более мелкие части, чтобы избежать конфликтов параллелизма с памятью на коммутаторе.
1. Для хранилища 2 инициатора, 1 тгт (аппаратный уровень и программный уровень)
2. Запишите 1 ГБ данных соответственно и измените их на чтение RDMA (инициатор чтения tgt)
3. A и B отправляют данные в TGT одновременно, вызывая перегрузку коммутатора (INCAST в выходном буфере коммутатора), поскольку AB не знает другую сторону. В это время TGT может использоваться для координации и управления.
4. После включения этой функции нравиться: TGT делит 1 ГБ на несколько операций чтения по 8 КБ, Подобно оконному механизму, TGT использует 8K в качестве оконного блока для перемещения элемента управления. Реализуйте эту функцию аппаратно.
1. cx5 начинает поддерживать, открывать 4 вида конфигураций с потерями
2. В последней версии улучшена поддержка.
3. Откройте DCQCN.
4. Другая функция зависит от того, включен бизнес или нет.
5. Справа пример конфигурации (просмотр и настройка сетевой карты)
1. Общий диск между DC, большое расстояние, сегментация кластера, подкластер, до 100 узлов, раздельное управление, RDMA между хранилищем, меньше RDMA между виртуальными машинами.
2. Коммутаторы сценариев HPC используют изоляцию ACL, контейнеры наложения RoCE подходят для инкапсуляции RDMA PF, а RDMA подходит для «голого железа».
3. OVS, TC, offload, fw
4. Тест производительности, трехуровневый коммутатор, 9 узлов, до 100ГБ, ib_read_bw, A2A, Duodaduo, еще один M2O
1. ZTR: отмените настройки PFC и ECN на всех коммутаторах и узлах и включите все алгоритмы с потерями на сетевой карте.
1. Надежное соединение типа передачи RC: надежное, сохранение порядка сообщений, подтверждение и повторная передача через ACK.
2. Динамическое соединение DC: поддерживается начиная с cx5, временное надежное соединение, сохранение порядка, механизм ACK.
DC QP можно использовать повторно
3. Сравниватьнравиться: Сервер 0 подключен к N другим серверам, Каждый серверный узел имеет P процессоров
Используя RC, сервер 0 создаст N*P QP.
При использовании DC на сервере 0 необходимы только P DCI, несколько QP используются повторно.
Nvidia RoCE: https://docs.nvidia.com/networking/pages/viewpage.action?pageId=12013422
Что такое RDMA Что такое RDMA
https://enterprise-support.nvidia.com/s/article/What-is-RDMA
Спецификация IB, том 1: Дополнение к спецификации архитектуры InfiniBandTM, том 1, выпуск 1.2.1 — Приложение 17: RoCEv2
https://cw.infinibandta.org/document/dl/7781
Решения RDMA/RoCE
https://enterprise-support.nvidia.com/s/article/rdma-roce-solutions
Общие сведения о настройке QoS для RoCE Понимание качества обслуживания
https://enterprise-support.nvidia.com/s/article/understanding-qos-configuration-for-roce
mlnx_qos Manual
https://enterprise-support.nvidia.com/s/article/mlnx-qos
Общие сведения об управлении перегрузкой RoCEv2
https://enterprise-support.nvidia.com/s/article/understanding-rocev2-congestion-management
DCQCN Алгоритм управления перегрузкой Алгоритм управления потоком
https://enterprise-support.nvidia.com/s/article/DCQCN-CC-algorithm
ECN/DCQCN parameters introduction
https://enterprise-support.nvidia.com/s/article/dcqcn-parameters
Enable/Disable Lossy RoCE Accelerations
https://enterprise-support.nvidia.com/s/article/How-to-Enable-Disable-Lossy-RoCE-Accelerations
Общие сведения о счетчиках MLX5 Ethtool
https://enterprise-support.nvidia.com/s/article/understanding-mlx5-ethtool-counters
Understanding MLX5 Linux Counters and Status Parameters
Дамп трафика RDMA с помощью захвата пакетов tcpdump
connectx-4-x
RoCE Debug Flow
https://enterprise-support.nvidia.com/s/article/RoCE-Debug-Flow-for-Linux
Пример программирования кода RDMA
[basic rdma pingpong] https://github.com/linux-rdma/rdma-core/tree/master/libibverbs/examples
[performance benchmarks] https://github.com/linux-rdma/perftest
[latency test] https://github.com/michaelbe2/rdma_samples/tree/master/rc_write_latency
[incast flow control] https://github.com/michaelbe2/rdma_fc
Интеллектуальная сеть Nebula — объясните это простыми словами, чтобы помочь вам понять основу, принципы и реализацию RDMA (Часть 2): https://zhuanlan.zhihu.com/p/596726493
Управление потоком RDMA(6): позвольте данным течь как весенний ветерок и защитите передачу данных (серия RDMA): https://mp.weixin.qq.com/s/BjV5U7URuRQbQP_q0-j_Ng
Что такое интеллектуальная сеть без потерь: https://mp.weixin.qq.com/s/bQZSepgoDRUFlTgLRqiOEQ
Сеть, терпимая к потерям, и сеть без потерь, обсудим две идеи сети RDMA: https://www.cnblogs.com/longbowchi/p/14802046.html
Прочтите RoCE в одной статье: https://cloud.tencent.com/developer/article/2084218
блог: https://logread.cn | https://blog.csdn.net/ssbandjl | https://cloud.tencent.com/developer/user/5060293/articles
Краткое описание технологии DAOS: https://cloud.tencent.com/developer/article/2344030