Windows 2016と 異なるConnectXモデルでのSMB Direct接続について
前回掲載した“Windows 10 Pro for Workstations”でのSMB Directの動作検証ですが、ご好評をいただき、本投稿をご参考にしていただいている方から、Windows 2012 / Windows 2016 同士や、異なるNICのモデルでの接続に関して質問をいただくことがあり、社内にて検証しましたので、それを追加させていただきます。
検証環境は以下になります。
Windows 2012 R2 / Windows 2016 Standard (STD)にて、ファイル共有サーバを構築、MellanoxのConnectX-3(Proではありません)もしくはConnectX-4とSN2010スイッチにて 40 Gbpsのネットワーク環境で検証しました。前回同様、サーバのメモリ上にRAMディスクを作成してます。
◆検証環境
Server: Windows 2012 R2 / Windows 2016 Standard
Client: Windows 2012 R2 / Windows 2016 Standard
Switch:Mellanox SN2010
ネットワークカード:Mellanox ConnextX-3/ConnectX-4
※ここでミソなのが、ConnectX-3は、「Pro」ではないところです!
◆ファイル共有
Windows 2012 R2サーバのメモリの一部に、“VSuite Ramdisk” ソフトウェアを使用して
RAMディスクを作成、ネットワーク共有しClient側からそれをネットワークマウント
設定手順
Windows 2012 R2 / 2016 STDで手順に違いはありません。PowerShellを使ってコマンドラインで設定します。
※使用するモデル/ドライバによってRoCEモードの設定は違います。
◆Windows 2012 R2/Windows 2016 STD
1.搭載されているMellanox ConnectX-3/4のフロー制御を無効にする
デバイスマネージャーのConnectX-4のプロパティでフローコントロールを“Disabled”にする
以下からは、Windows PowerShellのコマンド操作にて各種設定を行う
2.Mellanox インターフェース名の変更
コマンドラインでの操作をわかりやすくするためにインターフェースの名前をユニークにする。
(1) Get-NetAdapter
セットされているネットワークアダプタの名前を表示する。
(2) Rename-NetAdapter –Name “イーサネットスロット 2” –NewName RDMA1
認識されているConnectX-4のネットワークアダプタ名が、”イーサネットスロット 2“の場合
→”RDMA1“に変更 ※任意です
3. Data Center Bridging (DCB) 機能を消去する
(1) Remove-NetQosTrafficClass
(2) Remove-NetQosPolicy -Confirm:$False
4.Data Center Bridging機能をイネーブルにする
Install-WindowsFeature Data-Center-Bridging
5.QoS(Quality of Service)のポリシーに“RoCE”を適用する
New-NetQosPolicy “RoCE” –NetDirectPortMatchCondition 445 -PriorityValue8021Action 3
6.PFC(Priority Flow Control)の設定をする
Enable-NetQosFlowControl –Priority 3
7.NICのDCB設定を行う
(1) Enable-NetAdapterQos –InterfaceAlias RDMA1
(2) Set-NetQosDcbxSetting –willing 0
(3) New-NetQoSTrafficClass “RoCE” -Priority 3 -Bandwidth 60 -Algorithm ETS
8.RoCEモードの変更
(1) ConnectX-3 WinOFドライバの場合
ConnextX-3で使用するWinOFドライバは、4.90までは初期値がRoCEv1に設定されてますがWinOF 5.00以降のドライバでは、初期値が無効となってますので以下のコマンドで有効にしてください。
※RoCEv2は、ConnectX-3 Proでしかサポートされません。
■ConnectX-3
>Set-MlnxDriverCoreSetting –RoceMode 1
■ConnectX-3 Pro
>Set-MlnxDriverCoreSetting –RoceMode 1 もしくは
>Set-MlnxDriverCoreSetting –RoceMode 2
RoCEモードの確認
> Get-MlnxDriverCoreSetting
Caption : DriverCoreSettingData ‘mlx4_bus’
Description : Mellanox Driver Option Settings
ElementName : mlx4_bus
InstanceID : mlx4_bus
Name : mlx4_bus
Source : 3
SystemName : WIN-NH4US9UHKF6
LogMttsPerSeg : 0
LogNumCq : 19
LogNumMac : 7
LogNumMcg : 4294967295
LogNumMpt : 19
LogNumMtt : 20
LogNumQp : 20
LogNumRdmaRc : 4
LogNumSrq : 16
LogNumVlan : 7
MaximumWorkingThreads : 4294967295
RoceMode : 1.0 ← ★ここです!
Set4kMtu : True
SriovPort1NumVFs :
SriovPort2NumVFs :
SriovPortMode :
PSComputerName :
(2)ConnectX-4 WinOF2ドライバの場合
初期値でRoCEv2が有効になっています。ConnextX-3と接続するなど、RoCEv1モードで動作させる場合には、WinOF2ドライバには、WinOF のようなRoCEモード変更のコマンドはありませんので、Windowsのレジストリへパラメータを追加してRoCEモードを変更することになります。
1. 特定のポート(NIC)に適応する場合
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11cebfc1-08002be10318}\<IndexValue>」
※<IndexValue>の見つけ方
① デバイスマネージャー → ネットワークアダプタ → Mellanox ConnectX-4 Adapter →プロパティを開く
② 「詳細」タブにて「ドライバーキー」をクリック(選択)して以下のウィンドウが開きますので表示されているのが、<IndexValue>になります。
2. 搭載しているNIC全数に適用する場合
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mlx5\Parameters\Roce」
パラメータを追加します。
Parameters name :roce_mode
Parameter Type :DWORD
Set値 : 0 = RoCE MAC Base (RoCEv1)
2 =[Default] RoCEv2
4 = RoCE 未使用
9.確認
(1)NICの構成の確認 各パラメータが“Ture”になっているかを確認する
(1)-1 Get-NetOffloadGlobalSetting | Select NetworkDirect
(1)-2 Get-NetAdapterRDMA
(1)-3 Get-NetAdapterHardwareInfo
(2)SMB構成の確認(クライアント側から実施)
(2)-1 Get-SmbClientConfiguration | Select EnableMultichannel
(2)-2 Get-SmbClientNetworkInterface
(3)SMBコネクションの確認
(3)-1 Get-SmbConnection
(3)-2 Get-SmbMultichannelConnection
(3)-3 netstat.exe -xan | ? {$_ -match “445”}
表示例
◆動作確認
Client側にてネットワークマウントしたServerの共有ディスクに対して、IOを実行。
Client、ServerのWindowsパフォーマンスモニターで以下項目を選択し、これらの値が変化すれば、SMB-Direct/RDMA(RoCE)で通信できていると判断できる。
パフォーマンスモニタを選択
→ “グラフの種類の変更” から ”レポート” を選択
以下の項目を選択して、該当するインスタンスを選択
・RDMA Activity
動作していなくてもMellanoxのインターフェースは表示されます
・SMB Direct Connection
SMB Directが正しく動作していれば、接続しているファイル共有のパスが表示されますが、SMB Directが正常に動作していないと表示されず選択できません。
以上、Windows 2012/2016でのSMB Directの動作確認方法になります。