PowerEdge:QLogic FastLinQ 45XXX 和 41XXX 适配器的 NPAR 限制
摘要: 本文讨论在 QLogic FastLinQ 45XXX 和 41XXX 适配器上配置网络分区 (NPAR) 时的重要注意事项。
说明
背景
在网络分区 (NPAR) 模式下,QLogic FastLinQ 45XXX/41XXX 适配器作为多个以太网设备呈现给作系统。这是通过在物理端口上启用多个网络接口卡 (NIC) 分区来实现的,但当单播* 流量的源和目标位于同一主机上时,代价是要仔细设计广播域*。
为了允许同一物理端口上的两个分区之间进行通信,适配器提供了一项称为 Tx 交换的功能。该功能的目标是在两个逻辑分区之间内部转发流量,而不是依赖于源和目标之间的路由。根据 NIC 分区上配置的 MAC 过滤规则进行 Tx 切换。作系统对第 2 层(Mac 到 Mac 或 BUM 流量*)数据路径进行编程。在 ESXi 环境中,NetworkIoChain 管理流量,更准确地说是“负载平衡”组合引擎,该引擎根据 MAC 地址源和目标创建到特定上行链路的数据路径(当流量离开虚拟交换机时)
此行为会导致数据包被丢弃,因为 Tx 交换将数据包转发到组中的上行链路,该上行链路未记录在 NetworkIochain* 的数据路径中。
单播流量* = MAC 地址的已知 MAC 源和已知 MAC 目标 交换机上的表(虚拟或物理)
广播域* = 虚拟交换机、物理交换机、VLAN 和子网都是广播域(第 2 层)
的一部分 BUM* = 广播、未知单播、组播、流量。必须离开虚拟交换机的第 2 层流量。NetworkIOChain* = https://blogs.vmware.com/vsphere/2018/12/understanding-the-esxi-network-iochain.html
1.使用来自同一端口的分区时,同一主机上的两个虚拟机 (VM) 之间的通信(请参见“图 1”)
如图 1 所示,在此配置中有两个虚拟机:VM1(单播 MAC M1)和 VM2(单播 MAC M2)。VM1 位于虚拟交换机 VS1 后面,而 VM2 位于 VS2 后面。VS1 将 PF0 作为上行链路,而 VS2 将 PF2 和 PF1 作为上行链路。PF0 和 PF2 是 QLogic FastLinQ 41XXX/45XXX 适配器的端口 1 上的两个分区,而 PF1 是端口 2 的一个分区。VS2 PF1 是组中的主动接口,而 PF2 是被动(备用)接口。NetworkIOChain 为 P0 上的 MAC M1 创建数据路径,并为 PF1 和 PF2 上的 M2 编程 IoChain。由于从 VS1 和 VS2 的角度来看,流量被视为未知单播(VS1 只知道自己虚拟机的 MAC 地址,同样适用于 VS2),NetworkIOchain 将该流量标记为 BUM 并记录数据路径,以使用 VM1 的上行链路端口 PF0 和 VM2 的 PF1。
VMkernel 为 P0 上的 MAC M1 编程筛选器,并为 PF1 和 PF2 上的 M2 编程 MAC 滤波器。源自 VM1(源 MAC M1)并发往 VM2(目标 MAC M2)的 NPAR Tx 交换流量始终通过 PF2 环回,因为 VMkernel 已在 PF1 和 PF2 上为 M2 编程了 MAC 滤波器。由于 PF2 上的 MAC 筛选器匹配,流量未发送到线路。但是,到达 PF2 的流量被 vSwitch 丢弃,因为它将进入一个没有匹配规则的内部端口,无法到达预期虚拟机的虚拟 NIC。
可能的解决方案:
I) 使用单独的适配器:为了执行此类配置工作,我们必须在一个组中使用来自两个物理上独立的网络适配器的端口。我们还必须确保网络路径不包括来自同一物理端口的两个 PF。请参阅“图 2”。
II) 禁用 NPAR Tx 交换以及外部路由:上述问题可以通过禁用 NPAR Tx 切换来解决。但是,单独禁用 NPAR Tx 交换并不能完全解决问题,因为在某些情况量必须路由回同一端口上的逻辑分区。禁用 NPAR Tx 交换时,需要外部路由。“图 3”详细阐述了此流程。另请参阅下面的问题 #4,了解禁用 NPAR Tx 交换的限制。
III) 如何禁用 TX 切换参数:
如果需要禁用 NPAR Tx,则可以通过设置模块参数来完成 npar_tx_switching 更改为 0。
ESXi 示例:
[root@esxi03:~] esxcfg-module -s 'npar_tx_switching=0' qedentv
2.在组中使用来自同一物理端口的两个 PF
不建议使用此配置,因为它不提供弹性和性能。当物理端口上的链路中断时,该端口上的两个 PF 都会受到影响。因此,此配置没有用,因此不建议这样做。
3.依赖于交换机的分组模式,如 LACP
IEEE 802.3ad 链路聚合 (LACP) 等依赖于交换机的组合模式基于每个端口工作,而不是 PCI 功能(也称为物理功能或 PF 级别粒度)。因此,当启用 NPAR 时,不建议使用某些分区(例如 PF0 和 PF1)配置 LACP,而将其余分区用于其他目的。LACP 状态机在主机和交换机上运行,并确定聚合的状态。不属于 LAG 的其他分区不知道状态机更改和有关 LAG 的决策。交换机上配置的负载均衡策略适用于从交换机传输的所有流。由于交换机不知道 NPAR 配置,因此属于不属于 LAG 的其他 PF 的流量会受制于属于 LAG 的分区的设置。这可能会导致一些副作用,例如数据包转发到不正确的 PF、LACP 状态机行为对流量的意外影响等。应该注意的是,可能发生的一些行为取决于交换机端上 LACP 的实施,但一般而言可能会有不良副作用。
4.使用桥接或 L2VPN,将第 2 层以太网帧 QnQ 或 vlan 修改为 vni 等(NSX 等 NFV 解决方案)
这会导致一个循环。如果您计划桥接流量,请确保禁用 NPAR,否则由于在 NetworkIOChain。