Проблемы конфигурации RDMA RoCE: устранение ошибок и настройка PFC
Симптомы сбоев протокола RDMA RoCE
Прямой доступ к памяти SMB Direct (RDMA) не активируется при обмене данными между нодами кластера S2D или Hyper-V. В журнале SMBClient/Operational регистрируется Event ID 30818: The client cannot establish an RDMA connection, а трафик откатывается на стандартный стек TCP/IP со 100% загрузкой процессора ядра.
| Симптом | Где фиксируется | Причина |
|---|---|---|
| RDMA State: False / Disabled | Get-NetAdapterRdma | Отсутствие поддержки или отключение RDMA в свойствах драйвера сетевого адаптера |
| Сброс пакетов при нагрузке (PFC Loss) | Счетчики производительности PFC | Несовпадение тегов приоритета (CoS Priority 3) на сервере и коммутаторе |
| SMB Direct падает до чистого TCP | Event ID 30818 SMBClient | Отсутствие сквозной поддержки Data Center Bridging (DCBx) в сети |
Пошаговая настройка и верификация RoCE v2
- Проверьте активность и работоспособность RDMA на физических адаптерах:
Get-NetAdapterRdma; Get-SmbServerNetworkInterface | Select-Object InterfaceAlias, RdmaCapable - Установите компонент Data Center Bridging (DCB) и настройте приоритет PFC:
Install-WindowsFeature Data-Center-Bridging; New-NetQosPolicy "SMB-Direct" -NetDirectPortMatchCondition 445 -PriorityValue8021Action 3; Enable-NetQosFlowControl -Priority 3 - Настройте разделение полосы пропускания (ETS) для трафика RoCE:
New-NetQosTrafficClass "SMB" -Priority 3 -BandwidthPercentage 60 -Algorithm Strict - Проверьте активность трафика RDMA в реальном времени:
Get-Counter "\SMB Direct Connection(*)\Bytes RDMA Read/sec"; Get-Counter "\SMB Direct Connection(*)\Bytes RDMA Write/sec"
Критически важно: Для работы RoCE v2 на всех сетевых коммутаторах (ToR Switches) должен быть настроен режим Lossless Ethernet: включен Priority Flow Control (PFC) для приоритета 3 и ECN (Explicit Congestion Notification).
Частые вопросы (FAQ)
В чем главное отличие протоколов RoCE v2 и iWARP?
iWARP работает поверх надежного транспортного протокола TCP и не требует тонкой настройки свитчей (Lossless Fabric). RoCE v2 работает поверх UDP и требует обязательной настройки DCB/PFC на коммутаторах.
Почему при сбое RDMA процессор сервера перегружается?
RDMA передает данные напрямую из памяти в сетевую карту минуя процессор. При сбое весь трафик переходит на системный TCP стек, нагружая CPU обработкой сетевых пакетов.
Как проверить генерацию пакетов PFC Pause на сервере?
Используйте счетчики производительности: '\Network Adapter(*)\Outbound Priority Flow Control Frames'.
Как перезапустить стек RDMA на сетевом адаптере?
Выполните Disable-NetAdapterRdma -Name 'NIC1' и затем Enable-NetAdapterRdma -Name 'NIC1'.