由于虚拟机发送的 LLDP 数据包,Dell Networking FCoE 会话问题。
Summary: 由于虚拟机发送的链路层发现协议 (LLDP) 数据包导致 FCoE 会话问题。问题可能会导致接口摆动,或者直到任何导致 LLDP 重复触发问题的手动作才会出现任何问题。
Symptoms
- 主机与 FCoE 环境的通信中断
- 存储通信始终停止响应或摆动。
- 在稳定的环境中,当采取导致 LLDP 枚举的手动作时,可能会发生所有 FCoE VLAN 的完全中断;例如,在 vDS 上添加 VLAN 或禁用 LLDP。
Cause
本文旨在为 FCoE 环境提供额外的保护,在这些环境中,虚拟机意外地将 LLDP 数据包发送到 (FIP/FSB) 交换机,从而中断了与交换机的 FCoE 连接。在问题状态期间,您会在 交换机的系统日志中看到以下消息。
错误信息: "LLDP_MULTIPLE_PEER_DETECTED: DCBX operationally disabled due to more than one PEER being present on interface" 从作系统启用 LLDP 时)
警告消息:
-------------------------------------LLDP_MULTIPLE_PEER_DETECTED: DCBX
-------------------------------------
您可以看到两个可能的问题:
- VMware vDS 正在发送和接收或仅发送 LLDP 数据包。
- 通常,当 VMware vDS 上的 LLDP 配置设置为“两者(侦听和通告)”或设置为“通告”时,会发生这种情况。
- 虚拟机通过 VMware vDS 发送 LLDP 数据包。
- 如果虚拟机的作系统发送 LLDP 数据包以通告其存在,则由于 FCoE作的性质,会中断 FCoE 连接。
另一个迹象表明交换机发现多个 LLDP 邻居并且处于问题状态:
网络可能表现为完全稳定,即使在
"show lldp neighbors" 表示交换机处于问题状态。但是,如果采取手动作(如添加 VLAN 或在 vDS 上禁用 LLDP),则可能会在所有 FCoE 会话上触发完全中断。
为什么会这样?
FCoE 依赖于 DCBx,而 DCBx 是在 LLDP 上运行的协议。
“DCBX使用链路层发现协议(LLDP)在两个链路对等体之间交换参数。LLDP 是单向协议。它将有关本地站的连接和管理信息通告到同一 IEEE 802 LAN 上的相邻站。- https://www.ieee802.org/1/files/public/docs2008/az-wadekar-dcbx-capability-exchange-discovery-protocol-1108-v1.01.pdf
“DCBX预计将在点对点链路上运行。如果检测到多个 LLDP 邻居,则 DCBX 的行为就像对等的 DCBX TLV 不存在,直到多个 LLDP 邻居条件不再存在。LLDP 邻居通过其逻辑 MAC 服务访问标识符 (MSAP) 进行标识。逻辑 MSAP 是在 LLDPDU 中传输的机箱 ID 和端口 ID 值的串联。- https://www.ieee802.org/1/files/public/docs2008/az-wadekar-dcbx-capability-exchange-discovery-protocol-1108-v1.01.pdf
任何导致 LLDP 重新枚举的更改都可能导致 FCoE 的 TLV 功能立即中断。
Resolution
选项 1) 根据 Broadcom KB 更改 vDS 上的 LLDP 模式。
选项 2)我们要做的是添加 VMware vDS 过滤策略来 阻止来自虚拟机的 LLDP 数据包,仅此配置就可以阻止来自该 vDS 端口组下任何虚拟机的任何 LLDP 数据包。*此问题也可能出现在 VMware 标准 vSwitch 上,但没有可用的解决轮次或筛选选项。客户必须确保其虚拟机没有 LLDP。
流程
参考:VMware 流量过滤 指南
- 在 vSphere Client 中找到分布式端口组或上行链路端口组。
- 选择一个分布式交换机,然后单击网络选项卡。
- 单击 分布式端口组 以查看分布式端口组的列表,或单击 上行链路端口组 以查看上行链路端口组的列表。
- 单击 分布式端口组 或 上行链路端口组 ,然后选择配置选项卡。
- 在设置下,选择 流量过滤和标记。
- 单击启用和重新排序按钮。
- 单击 启用所有流量规则。
- 单击“OK”。
- 单击 ADD 按钮。
VMware MAC 流量限定符 参考指南。
- 在“规则”窗口中,设置以下参数。
- 用“name”命令 来描述作。
- 在“Action”字段中,选择“Drop”。
- 在“流量方向”中,选择“入口”。
- 单击“MAC”选项卡。
- 选中“Enable qualifier”复选框。
- 在“EtherType”字段中:
- 选择“IS”。
- 选择“自定义”。
- 将“88CC”写为 LLDP ethertype。
- 单击 OK。
- 最后,您应该具有以下配置。
- 检查是否阻止了来自所选虚拟机的任何 LLDP 数据包。
- 单击 端口 选项卡。
- 选择虚拟机所在的 vDS 端口 ID 。
- 单击 统计信息 选项卡。
- 选中“Drop - Ingress Packets”
- 单击 端口 选项卡。
11 配置到此结束。