古いサーバーを仮想環境に転用しようとした際、Network ATCの罠に躓いたのでナレッジを共有します。
Network ATCとは
Windows Server (Hyper-V)やAzure Localのクラスターでネットワークを構成する時、1台1台設定を行うと非常に時間がかかり、ミスも発生する可能性があります。そこをMicrosoftのベストプラクティスに従って、自動的にネットワークを構成してくれる機能です。
VMwareでいうところの分散仮想スイッチに似た機能です。
これまでAzure Localで使用されていた機能ですが、Windows Server 2025からHyper-Vでも使用できるようになりました。
ドキュメントには以下のような特徴が紹介されています。
- ネットワークの対称性を確保
- ストレージネットワークの自動構成
- ネットワークアダプター名の自動設定
- プロキシー設定をすべてのノードで共通利用可能
- ライブマイグレーションの設定管理
など
Network ATC の概要 | Microsoft Learn
今回の罠
Mellanox ConnectX-3 NICを搭載したサーバーでNetwork ATCを有効化しようとした時、Network ATCの対象としてConnectX-3 NICを選択できない。
原因
結論として、ConnectX-3 NICが物理アダプターではなく、仮想アダプターとしてOSに認識されてしまっていることが原因でした。
Windows系のレジストリには、搭載されているNICの構成情報が記録された項目があるのですが、その中にCharacteristicsという値があります。
物理アダプターの場合はPhysicalという値が入ることが一般的なのですが、ConnectX-3 NICの場合Virtualという値が登録されます。
"Characteristics"=dword:00000084
→ NCF_PHYSICAL (0x4) | NCF_HAS_UI (0x80)
"Characteristics"=dword:00000081
→ NCF_VIRTUAL (0x1) | NCF_HAS_UI (0x80)
この値を修正できればいいのですが、残念ながらこれはNICのドライバー定義ファイル(INFファイル)で決められており、ドライバーのベンダーが修正しない限り、変更することができません。
まとめ
今回はConnectX-3のNICを使用した際に、Network ATCが利用できない事例をご紹介しました。
私が調べた限りでは、ConnectX-4以降で使用するドライバー(WinOF-2)では、物理アダプターとして定義されていたため、Network ATCが使用可能かと思います。
ただAzure Localでは、サポート対象のNICとしてWindows Server CatalogにあるWindows Server 2025のNetwork認定を取得したもののみ対象としており、ConnectX-3のNICではWindows Server 2025の認定を取得しているものは少ないでしょう。
そのような点も踏まえて、Windows Serverで使用する場合も認定を受けたNICに買い替える方が無難ですね...