本文节选自《DetectingTroubleshooting, and PreventingCongestion in Storage Networks 存储网络中拥塞处理》
MAC Address Learning
学习连接到远程 VTEP 的设备的 MAC 地址有两种常见方法。第一种方法使用基于组播的泛洪学习机制。第二种方法使用多协议边界网关协议(MPBGP)以太网 VPN(EVPN)。无论 VTEP 如何学习 MAC 地址,数据路径保持不变,因此拥塞管理也保持不变。
Lossless Traffic over VXLAN
VXLAN 可根据 IP 标头中的 DSCP 字段对流量进行分类,并将其分配到无损队列,从而传输无损流量。前面有关第 3 层 PFC 的章节详细介绍了这一方案。
根据以太网 CoS 字段对流量进行分类以实现第 2 层 PFC 的分类方案不足以通过 VXLAN 传输无损流量,因为 IEEE 802.1Q VLAN 标头不会在 VXLAN 隧道中保留,因此会丢失 CoS 值。
VXLAN Encapsulation
如图 7-25 所示,入口 VTEP 会将原始 IP 报头中的 DSCP 值复制到 VXLAN 封装数据包的外部报头中。对于没有 IP 报头的第 2 层帧,外部数据包的 DSCP 字段来自表 7-1 中说明的 CoS 到 DSCP 映射。
VXLAN Decapsulation
如图 7-25 所示,出口 VTEP 会将外部 VXLAN 数据包中的 DSCP 值复制到解封装报头的 IP 报头中。这被称为统一模式,是 Cisco Nexus 9000 交换机的默认行为。如果需要,DSCP 字段值可以从内部 IP 包头复制到解封装数据包。这称为管道模式。
Figure 7-25 DSCP and ECN values during VXLAN encapsulation and decapsulation
Congestion Notification over VXLAN
在入口 VTEP,入口数据包的 ECN 值被复制到 VXLAN 封装数据包的外部报头。在出口 VTEP,ECN 值总是从外部 VXLAN 数据包复制到解封装报头的 IP 报头,而不管是统一模式还是管道模式。
Flow Control and Congestion Notification with VXLAN
对于 VXLAN 来说,无损流量有两个考虑因素。首先是实现无损网络功能的逐跳流量控制(PFC)。这是强制性的。第二个可选考虑因素是,当检测到入口和出口 VTEP 之间出现拥塞时,通知终端设备 (ECN)。
请参见图 7-26。目标-1(源)向主机-1(目的)发送流量。通过将无损流量分类为 CS3 的 DSCP 值并将其分配到无损队列,使用 PFC 启用了逐跳流量控制。由于入口 VTEP-1 会将原始数据包中的 DSCP 值复制到外层报头,因此将 CS3 标记的流量分配到脊柱交换机上的无损队列可在流量被封装到 VXLAN 隧道时实现无损行为。
在出口 VTEP-6 上,外部报头中的 DSCP 值会被复制到解封装数据包中。因此,将 CS3 标记的流量分配到所有设备上的无损队列可实现无损行为。这与非 VXLAN 环境或非路由第 2 层网络的行为相同。与 VXLAN 的唯一区别在于如何将流量分类以分配到无损队列。
Figure 7-26 PFC and ECN with VXLAN
对于拥塞通知,入口 VTEP-1 会将原始报头中的 ECN 值保留到封装数据包中。如果骨干交换机(或 VXLAN 隧道路径中的任何交换机)发生拥塞,它会在外报头中用 CE 标志(b'11')标记有 ECN 功能的数据包(b'01'或 b'10')。骨干交换机可能不知道 IP 数据包属于 VXLAN 隧道,也不知道数据包中还有另一个 IP 报头。
因此,它们只标记外部报头。出口 VTEP 会将外部报头中的 ECN 值复制到解封装数据包中。当目的地收到这个 CE 标记的数据包时,它会根据上层协议(如 RCM)的功能做出反应。
Congestion Management in VXLAN
如上一节所述,将流量分类并分配到无损队列可保持流量的无损行为。这种配置必须在所有设备上保持一致,以保持端到端的无损行为。
Note the following points: 请注意以下几点:
1. 了解拥塞: 启用 PFC 后,拥塞会在 VXLAN 中蔓延,如前几节所述。当出口 VTEP(或叶子交换机)的队列开始填满时,它会通过发送 "暂停 "帧来减缓不丢弃类中的入口流量。因此,骨干交换机会减慢该流量类中的所有流量,无论其是否采用 VXLAN 封装。回顾一下,对于 PFC 来说,数据包中添加多少报头并不重要。它只是使用 DSCP 字段对流量进行分类和流量控制。拥塞扩散的最终状态与图 7-8 中的解释类似。
2. 检测拥塞: 拥塞检测方法与前一节中的解释类似。检测命令应考虑到 VTEP 上的 DSCP-CoS 映射。
3. 拥塞故障排除: 拥塞故障排除方法仍与前一节所述类似。在查找拥塞源的同时,要关注交换端口或接口上的流量类别。特别是在骨干交换机上,不要被 IP 地址误导,因为 VXLAN 封装数据包的外层报头中包含入口和出口 VTEP 的 IP 地址。在同一 VXLAN 隧道中传输多个流量(源 IP 和目的 IP)。因此,应重点监控无丢弃流量类的流量和暂停帧,而不是流量。
4. 拥塞预防: 前面介绍的拥塞预防功能也适用于 VXLAN。如果终端设备支持基于 ECN 值的操作,那么无论 VXLAN 底层网络如何,它都能发挥同样的作用。例如,RoCEv2 流量可通过 VXLAN 传输,如果终端设备支持 RCM,它也可与 VXLAN 一起工作。
Summary
默认情况下,以太网通过丢弃帧(称为有损以太网)来处理拥塞,并依靠上层协议(如 TCP)重传丢失的数据包。相反,无损以太网使用逐跳流量控制机制,通过发送暂停帧来减慢或停止传输。以太网链路上的所有流量都可以使用 LLFC 进行流量控制。或者,PFC 可以选择性地只对特定流量类别进行流量控制。PFC 允许在同一链路上传输无损和有损流量,为融合以太网网络奠定了基础。
此外,ETS 为不同流量类别提供最低带宽保证,DCBX 简化了终端设备和交换机的配置。通过使用 OSI 模型第 2 层以太网 VLAN 标头中的 PCP/CoS 字段对流量进行分类,可以启用 PFC。这种第 2 层 PFC 适用于 FCoE 和 RoCE。另外,对于 RoCEv2(可路由 RoCE),可在第 3 层使用 IP 标头中的 DSCP 字段对流量进行分类,从而启用 PFC。
无损以太网网络容易出现与光纤通道结构类似的拥塞,因为两者都使用逐跳流量控制。由于慢排空、链路利用率过高、比特错误或缺乏足够的缓冲区,拥塞也会在无损类中蔓延。同样的拥塞检测、故障排除和预防方法也适用于无损以太网网络。但无损以太网交换机可能不会报告所有相关指标。
值得注意的例子是 TxWait 和 RxWait 指标,在撰写本文时,Cisco Nexus 9000 交换机和 UCS 服务器上还没有提供这些指标。下一个办法是使用暂停帧数来检测拥塞情况。但是,由于这些指标不会以时间和日期戳存储在交换机上,因此使用外部监控平台可以简化拥塞检测和故障排除。
在使用融合以太网网络时,有损类中的流量可能会影响无损类中的流量,这取决于问题是如何出现的。无论使用专用还是共享存储网络,都要监控每个端口级别和每个类别级别的流量利用率和拥塞指标。
利用暂停超时和 PFC 看门狗可以实现无损以太网网络拥塞恢复。这些功能可在超时间隔后无法发送到目的地时丢弃帧,从而帮助释放缓冲区,使受害设备摆脱拥塞影响。
如果终端设备支持 RoCEv2 拥塞管理,RoCEv2 网络还能通过向终端设备发出网络拥塞通知而获益,从而降低发送方的流量速率。无论采用哪种预防机制,都不应将这些机制作为长期解决方案。监控网络,找到根本原因,并尽快做出修正。
最后,请注意许多无损以太网网络相对较新。随着网络的发展和/或成熟,拥塞会变得更加严重。由于光纤通道 Fabric 已大规模使用了几十年,因此必须从中吸取经验教训,并将这些知识应用到无损以太网网络中,以主动预防拥塞问题。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !