PowerSwitch:由于虚拟机或虚拟交换机发送的 LLDP 数据包导致 FCoE 会话问题
摘要: 由于虚拟机发送的链路层发现协议 (LLDP) 数据包导致 FCoE 会话问题。问题可能会导致接口摆动,或者在执行任何导致 LLDP 重新枚举触发问题的手动操作之前不会出现问题。
症狀
受影响的平台:运行数据中心桥接 (DCB) 功能的 MX 和 MXL 交换机,但不限于它们/VMware Esxi
影响:
- 主机与 FCoE 环境的通信中断
- 存储通信停止响应或抖动
- 在稳定环境中,当采取导致LLDP重新枚举的手动操作时,所有FCoE vlan可能会完全中断;例如,在 vDS 上添加 VLAN 或禁用 LLDP。
原因
本文旨在为 FCoE 环境提供额外的保护,在此类环境中,虚拟机意外向 (FIP/FSB) 交换机发送 LLDP 数据包并中断与交换机的 FCoE 连接。在问题状态期间,您会在交换机的系统日志中看到以下消息。
错误消息:“LLDP_MULTIPLE_PEER_DETECTED:由于接口上存在多个 PEER,DCBX 在操作上禁用” 从 操作系统)
)警告消息:
-------------------------------------
LLDP_MULTIPLE_PEER_DETECTED: DCBX
-------------------------------------
可以看到两个可能的问题:
- VMware vDS 正在发送和接收或仅发送 LLDP 数据包。
- 通常,当 VMware vDS 上的 LLDP 配置设置为“两者(侦听和通告)”或设置为“通告”时,会发生这种情况。
- 虚拟机通过 VMware vDS 发送 LLDP 数据包。
- 如果虚拟机的操作系统正在发送 LLDP 数据包来通告其存在,则由于 FCoE 操作的性质,这会中断 FCoE 连接。
交换机看到多个 LLDP 邻居并处于问题状态的另一个迹象:
网络可能表现为完全稳定,即使 "show lldp neighbors" 指示交换机处于问题状态。但是,如果采取手动操作(例如在 vDS 上添加 VLAN 或禁用 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 功能立即中断。
解析度
选项 1) 根据 Broadcom 知识库文章更改 vDS 上的 LLDP 模式。
选项 2)我们要做的是添加 VMware vDS 过滤策略来 阻止来自虚拟机的 LLDP 数据包,此配置本身会阻止来自该 vDS 端口组下任何虚拟机的任何 LLDP 数据包。*VMware 标准 vSwitch 也会出现此问题,但不提供可用的变通方案或筛选选项。客户必须确保其虚拟机没有 LLDP。
程序
参考:VMware 流量过滤 指南
- 在 vSphere Client 中找到分布式端口组或上行链路端口组。
- 选择一个分布式交换机,然后单击网络选项卡。
- 单击分布式端口组以查看分布式端口组的列表,或单击上行链路端口组以查看上行链路端口组的列表。
- 单击 分布式端口组 或 上行链路端口组 ,然后选择配置选项卡。
- 在设置下,选择 流量筛选和标记。
- 单击启用并重新排序按钮。
- 单击 启用所有流量规则。
- 单击OK。
- 单击 ADD 按钮。
VMware MAC 流量限定符 参考指南。
- 在规则窗口中,设置以下参数。
- “命名”描述操作的规则。
- 在“Action”字段中,选择“Drop”。
- 在“Traffic direction”中,选择“Ingress”。
- 单击“MAC”选项卡。
- 启用“Enable qualifier”复选框。
- 在“EtherType”字段中:
- 选择“IS”。
- 选择“自定义”。
- 将“88CC”写作 LLDP 以太网类型。
- 单击OK。
- 最后,您应该具有以下配置。
- 检查是否有来自所选虚拟机的任何 LLDP 数据包被阻止。
- 单击 端口 选项卡。
- 选择 vDS 端口 ID ,其中 是虚拟机。
- 单击 统计选项卡 。
- 选中“丢弃 - 入口数据包”
- 单击 端口 选项卡。
配置到此结束。