使用 Broadcom NetXtreme 1 千兆位网络适配器时,虚拟机将失去网络连接

本文针对使用 Broadcom NetXtreme 1 千兆位网络适配器时虚拟机失去网络连接的问题提供了解决方案。

适用于: Windows Server 2012 R2
原始 KB 编号: 2986895

症状

当你在 Microsoft Windows Server 2012上运行 Hyper-V 或Windows Server 2012 R2 以及 Broadcom NetXtreme 1 千兆位网络适配器 (但 NetXtreme II 网络适配器) ,你可能会注意到以下一个或多个症状:

  • 虚拟机可能会随机失去网络连接。 网络适配器似乎在虚拟机中工作。 但是,无法从虚拟机 ping 或访问网络资源。 重启虚拟机无法解决问题。

  • 无法从远程计算机 ping 或连接到虚拟机。 这些症状可能发生在运行 Hyper-V 的服务器上的部分或所有虚拟机上。 重启服务器会立即解析到所有虚拟机的网络连接。

原因

这是使用 b57nd60a.sys 驱动程序的 Broadcom NetXtreme 1 千兆位网络适配器的已知问题。 在网络适配器上启用虚拟机队列 (VMQ) 时,会出现此问题。 (默认情况下,VMQ 由 Broadcom 网络驱动程序启用。)

Broadcom 将这些网络适配器命名为基于 57xx 的芯片集。 它们包括 5714、5715、5717、5718、5719、5720、5721、5722、5723 和 5780。

某些服务器 OEM 也以不同的型号销售这些网络适配器。 HP 以型号 NC1xx、NC3xx 和 NC7xx 销售这些驱动程序。 你可能使用的是驱动程序版本 16.2、16.4 或 16.6,具体取决于你正在使用的 OEM 版本或你使用的是 Broadcom 驱动程序版本。

解决方案

此问题已在 Broadcom 驱动程序 b57nd60a.sys 版本 16.8 及更新版本中得到解决。 2015 年 3 月,Broadcom 发布了驱动程序版本 17.0 以供下载。 2015 年 4 月,HP 发布了适用于其受影响网络适配器的驱动程序版本 16.8。 如果需要特定于服务器的驱动程序,请联系服务器 OEM。

如果无法更新网络适配器驱动程序来解决此问题,则可以通过使用 Set-NetAdapterVmq PowerShell 命令在每个受影响的 Broadcom 网络适配器上禁用 VMQ 来解决此问题。

请考虑以下情况:

  • 你有一个双端口网络适配器。
  • 这些端口在 Windows 中名为 NIC 1 和 NIC 2。

在此方案中,可以使用以下命令在每个适配器上禁用 VMQ:

Set-NetAdapterVmq -Name "NIC 1" -Enabled $False
Set-NetAdapterVmq -Name "NIC 2" -Enabled $False

可以使用 Get-NetAdapterVmq PowerShell 命令确认在正确的网络适配器上禁用了 VMQ。

注意

默认情况下,使用 1 千兆位网络适配器的虚拟机在 Hyper-V 虚拟交换机上禁用 VMQ。 仅当系统使用 10 千兆位或更快的网络适配器时,才在 Hyper-V 虚拟交换机上启用 VMQ。 这意味着,通过禁用 Broadcom 网络适配器上的 VMQ,不会丢失网络性能或任何其他优势,因为这是默认设置。 但是,需要执行此操作才能解决驱动程序问题。

Get-NetAdapterVmqQueue 显示在网络适配器上分配的虚拟机队列 (VMQs) 。 默认情况下,不会看到分配给 1 千兆位网络适配器的任何 VMQ。