本文提供了使用 Broadcom NetXtreme 1 千兆位网络适配器时虚拟机失去网络连接的问题的解决方案。
原始 KB 数: 2986895
现象
在 Microsoft Windows Server 2012 或 Windows Server 2012 R2 以及 Broadcom NetXtreme 1 千兆位网络适配器(但不是 NetXtreme II 网络适配器)上运行 Hyper-V 时,你可能会注意到以下一个或多个症状:
- 虚拟机可能会随机失去网络连接。 网络适配器似乎正在虚拟机中工作。 但是,无法从虚拟机 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 千兆位网络适配器的虚拟机,VMQ 在 Hyper-V 虚拟交换机上处于禁用状态。 仅当系统使用 10 千兆位或更快的网络适配器时,才会在 Hyper-V 虚拟交换机上启用 VMQ。 这意味着,通过在 Broadcom 网络适配器上禁用 VMQ,不会丢失网络性能或任何其他优势,因为这是默认值。 但是,需要执行此操作才能解决驱动程序问题。
Get-NetAdapterVmqQueue 显示在网络适配器上分配的虚拟机队列(VMQs)。 默认情况下,不会看到分配给 1 千兆位网络适配器的任何 VMQ。