Windows Server 2022でHyper-V用のNICをTeamingする

目次

Windows Server 2022でNICをTeamingしてHyper-Vで使おうと思ったらつまずいたのでメモ。

環境

  • OS: Windows Server 2022
  • NIC: Intel 82599 10Gbps NIC x2 (ixn68x64)

背景

Windows Server 2022ではサーバーマネージャーのNICチーミングから作成したチームインターフェイスをHyper-Vスイッチに割り当てようとすると、以下のエラーが表示されて割り当てることができなかった。
LBFOチームをHyper-Vの仮想スイッチに割り当てられないというエラー画面

エラー画面に書かれている https://aka.ms/LBFODeprecation はなぜかBingの画面が表示されてしまい閲覧できなかったが、調べてみるとSETはLACPが使えない等、一部LBFOから劣化している部分があるものの、パフォーマンス面では優れているようだった。 そのため、今回は AllowNetLbfoTeams を有効にするのではなく、SETでTeamingを実施してみることにした。

手順

既存のHyper-V仮想スイッチをSETが有効な仮装スイッチに変換できないようだったため、Teamingが有効な新しくスイッチを作成して、VMの接続先を変更していくことにした。

まず、背景にも書いた通りSETではLACPが使えないため、必要があればスイッチ側の設定を変更しておく。

続いてPowerShellを使ってSETを有効にした仮想スイッチを作成する。

New-VMSwitch -Name "vSwitch2" -NetAdapterName "Ethernet 3","Ethernet 4" -EnableEmbeddedTeaming $true

# 作成したSwitchを確認。NetAdapterInterfaceDescription に意図したNICが入っていることを確認する。
Get-VMSwitchTeam -Name "vSwitch2" | fl

### 出力例
# Name                           : vSwitch2
# Id                             : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# NetAdapterInterfaceDescription : {NIC1のデバイス名, NIC2のデバイス名}
# NetAdapterInterfaceGuid        : {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
# TeamingMode                    : SwitchIndependent
# LoadBalancingAlgorithm         : HyperVPort

# LoadBalancingAlgorithmをDynamicに変更する 
Set-VMSwitchTeam "vSwitch2" -LoadBalancingAlgorithm Dynamic

後は各VMに割り当てられている仮想スイッチを今作成したものに付け替えていけば完了。

結果

あいにく10Gbps(以上)を受けられる端末は1台しかなかったため、iperf3でLAN内の10Gbpsのトラフィックを送りながら、SpeedTestでインターネット向けに通信し、Teamingが正常に機能していることを確認した。

スピードテスト結果

片方がインターネット通信になっているため上限の20Gbpsは出ていないが、2.0GB/s = 16Gbpsと今回使ったNIC 1ポートの10Gbpsを超える速度が出ていることがわかる。