Назад | Перейти на главную страницу

Почему SMB Direct не работает через RDMA?

В лабораторной среде Windows я пытаюсь протестировать производительность SMB Direct с помощью адаптеров Mellanox RDMA с глобальной паузой. Я хотел сначала протестировать с Global Pause для простоты, прежде чем переходить на PFC. Думаю, все настроил правильно, но SMB Direct не используется. Я могу это сказать, потому что счетчики производительности RDMA остаются на нуле, а фактическая пропускная способность отображается в диспетчере задач.

Я проверил подключение к RDMA, используя nd_write_bw в обоих направлениях.

Сервер: Win2019 Datacenter с Mellanox ConnectX-5 100GbE
Клиент: Win10 Pro для рабочих станций с Mellanox ConnectX-4 Lx 25GbE
Обе машины имеют драйвер WinOF2 2.40.50000 с включенным Flow Control Rx / Tx.
На коммутаторе включена глобальная пауза и отключена PFC.
Я включил функцию SMB Direct на клиенте.

На клиенте Get-SmbMultichannelConnection пусто. Что может быть причиной этого?

Вот конфигурация сервера:

PS C:\Users\Administrator> Get-NetOffloadGlobalSetting | Select NetworkDirect

NetworkDirect
-------------
      Enabled

PS C:\Users\Administrator> Get-NetAdapterRDMA fastnet

Name                      InterfaceDescription                     Enabled     PFC        ETS
----                      --------------------                     -------     ---        ---
fastnet                   Mellanox ConnectX-5 Adapter              True        False      False


PS C:\Users\Administrator> Get-NetAdapterHardwareInfo fastnet

Name                           Segment Bus Device Function Slot NumaNode PcieLinkSpeed PcieLinkWidth Version
----                           ------- --- ------ -------- ---- -------- ------------- ------------- -------
fastnet                              0 216      0        0    2        1      8.0 GT/s            16 1.1

PS C:\Users\Administrator> Get-SmbServerConfiguration | Select EnableMultichannel

EnableMultichannel
------------------
              True

PS C:\Users\Administrator> Get-SmbServerNetworkInterface

Scope Name Interface Index RSS Capable RDMA Capable Speed    IpAddress
---------- --------------- ----------- ------------ -----    ---------
*          6               True        False        1 Gbps   192.168.3.55
*          4               True        True         100 Gbps 192.168.10.55

PS C:\Users\Administrator> netstat.exe -xan | ? {$_ -match "445"}
  Kernel       4 Listener       192.168.10.55:445      NA                     0

А вот и конфигурация клиента:

PS C:\Windows\system32> Get-SmbClientConfiguration | Select EnableMultichannel

EnableMultichannel
------------------
              True

PS C:\Windows\system32> Get-SmbClientNetworkInterface

Interface Index RSS Capable RDMA Capable Speed   IpAddresses                                  Friendly Name
--------------- ----------- ------------ -----   -----------                                  -------------
6               True        True         40 Gbps {fe80::d1ac:ef30:6f70:a1bc, 169.254.161.188} chelsio40
4               True        True         25 Gbps {192.168.10.53}                              mlnx25
8               True        False        1 Gbps  {fe80::f912:79b2:e851:3cb4, 192.168.3.53}    housenet

PS C:\Windows\system32> Get-SmbConnection

ServerName    ShareName UserName              Credential            Dialect NumOpens
----------    --------- --------              ----------            ------- --------
192.168.10.55 NVMe      DESKTOP-K69SD7G\admin DESKTOP-K69SD7G\admin 3.1.1   5


PS C:\Windows\system32> Get-SmbMultichannelConnection
PS C:\Windows\system32> netstat.exe -xan | ? {$_ -match "445"}
PS C:\Windows\system32> netstat.exe -an | ? {$_ -match "445"}
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    192.168.10.53:58881    192.168.10.55:445      ESTABLISHED
  TCP    [::]:445               [::]:0                 LISTENING

Коммутатор: Mellanox SN2100
PFC включен на коммутаторе, поэтому я отключил его для этих конкретных портов и включил глобальную паузу.

int eth 1/10-1/12 flowcontrol send on force
int eth 1/10-1/12 flowcontrol receive on force
int eth 1/10-1/12 dcb priority mode off force