简介
本文档介绍如何在VIC 1400的C系列服务器上为Windows Server 2019配置VMQ并对其进行故障排除。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档中的信息基于以下软件和硬件版本:
- UCS C220M6
- VIC 1467
- CIMC 4.2(2a)
- Windows Server 2019
- 5.11.14.1 NENIC驱动程序
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
配置
CIMC
从Cisco集成管理控制器(CIMC),首先导航到Networking > Adapter Card MLOM(1)> vNICs(2),然后选择要配置的虚拟网络接口卡(vNIC)(3)。
使用CIMC查找vNIC
在此之后,请确保Enable VMQ框已选中(4)。
从vNIC启用VMQ
接下来是队列结构定义。从CIMC的角度来看,队列结构由4个主要组件组成:以太网中断、以太网接收队列(Rx队列)、以太网传输队列(Tx队列)和完成队列(CQ)。
这是VIC 1400系列的白皮书,其中概述了队列结构的计算。建议您仔细阅读本文,以便更好地了解如何进行这些计算。
以太网交换矩阵中的Cisco UCS VIC 1400系列最佳实践白皮书
然而,最重要的因素是:
● TX队列=子vNIC或vPort
● RX队列= 8 *(Tx队列)
● CQ = TX + RX
● 中断=(RX队列或至少2xCPU+ 4个)的最大值
有一个值未计算,必须在遍历计算之前决定。即子vNIC或vPorts。为了完成本实验,使用了4台虚拟机,对应于4vPorts。因此:
● TX队列= 4
● RX队列= 8 *(4)= 32
● CQ = 4 + 32 = 36
● 中断=(32或至少2x2+ 4 = 8)的最大值
(大于8时使用32)
从计算中获得队列参数后,向下滚动vNIC页面,在Ethernet Interrupt(1)字段中输入中断值,在Ethernet Receive Queue(2)字段、Ethernet Transmit Queue(3)和Completion Queue(4)中输入RX Queue值。
这是虚拟机多队列(VMQ)配置的最重要部分,就像队列结构计算错误一样,VMQ在Windows中无法工作。
注意:如果您在Windows中使用带组合NIC的vSwitch,则必须在CIMC中以相同方式配置所有vNIC。
Windows 窗口版本
从WIndows Server中,您需要验证是否已在所需的虚拟机上启用了VMQ。在大多数情况下,默认情况下启用VMQ,但您必须进行验证。
要确保VMQ已启用,请按Windows键并搜索Hyper-V Manager。
进入Hyper-V Manager后,单击左侧(1)的本地主机,然后右键单击要验证VMQ是否启用的虚拟机(2),然后单击Settings(3)。
进入设置后,导航至Network Adapter(1)并展开。展开后,单击Hardware Acceleration(2)。最后,验证Enable Virtual Machine Queue框是否已选中(3)。
在此过程中,您还需要验证Enable SR-IOV is not checked(4)。
接下来,确保在使用的虚拟交换机上禁用了Microsoft Windows平台过滤。为此,请导航到Hyper-V Manager,然后单击Virtual Switch Manager(1)。
从此处展开正在使用的交换机(1),然后单击Extensions(2)。然后取消选中Microsoft Windows Platform Filtering(3)。
禁用Microsoft Windows过滤平台
注意:如果您在Windows中使用带组合NIC的vSwitch,则必须在CIMC中以相同方式配置所有vNIC。
此外,请确保为要启用VMQ的每个接口启用接收端扩展(RSS)。为此,请按Windows键并搜索“Device Manager”。
在设备管理器中,找到Network Adapters(1),并为要启用VMQ的接口选择Properties(2)。
导航至高级(1),然后向下滚动以找到接收端扩展(2),并确保其为启用(3)。
验证
CIMC
从CIMC的角度无法进行验证。
Windows 窗口版本
检查VMQ是否处于活动状态的第一个位置是在Hyper-V管理器中的Windows中。
打开Hyper-V Manage,然后点击要验证的虚拟机。然后单击Networking(1)到底部。在Status(2)下面,可以看到OK(VMQ Active)。
验证VMQ在Windows中是否处于活动状态
如果仅在状态下看到正常,但未看到正常(VMQ Active),则说明未成功配置VMQ,并且VMQ未正常工作。
验证VMQ是否处于活动状态的下一个位置在Powershell中。按Windows键并搜索Powershell,然后运行以下命令:
Get-NetAdapterVmqQueue
Get-vm | get-vmnetworkadapter | 选择vmname、vmqusage
通过Powershell验证VMQ是否处于活动状态
输出中需要注意两点。首先,确保在QueueID(1)下使用多个队列。当您看到队列ID为1和2时,这意味着VMQ正在工作。
其次,验证VmqUsage(2)是否大于0。只要该值大于0,就意味着VMQ正在使用中。
故障排除
Windows 窗口版本
首先,检查CIMC是否向Windows Server提供VMQ。按Windows键并搜索Powershell,然后输入以下命令:
Get-NetAdapterVmq
然后,您要选中Enabled列。如果VMQ显示为禁用,则意味着硬件级别未启用VMQ。导航到CIMC中的vNIC配置,并确保已启用VMQ。
如果VMQ显示已启用,但在Hyper-V Manager的Networking(网络)选项卡下,您会看到Status(状态)为OK(正常),则可能是VMQ Queue Parameters are properly configured(VMQ队列参数配置不正确)。再次运行计算并更新参数。
VMQ在Windows中处于非活动状态
以下是错误的VMQ队列配置的示例。(仍基于4台虚拟机):
以下是此配置的问题:
● TX队列= 4以正确号码开始
● RX队列= 8 *(4)!= 4计算错误
● CQ = 4 + 4 = 8在数学运算签出时,垃圾输入/垃圾输出。由于RX队列计算不正确,CQ值不正确。
● 中断=(RX队列或至少2xCPU+ 4)输入值16不等于RX队列或(2x2cpu +4)。
要更正此问题,您需要修复RX队列计算,即32。然后就可以计算正确的CQ和中断计数。
结论
正确配置VMQ可能会令人沮丧且困难。务必确保CIMC中正确配置了VMQ队列结构。