PowerScale:在 PowerScale 群集上启用巨型帧时的 SyncIQ 复制问题
Summary: 由于 SyncIQ 工作器重新启动和网络相关错误,SyncIQ 复制作业可能会间歇性失败。这些问题通常出现在将 PowerScale 子网配置为使用巨型帧的环境中。 知识库 (KB) 概述了在使用 IP 标头中设置的“请勿分段”(DF) 标记传输 IP 数据包时验证端到端网络基础架构是否支持巨型帧的过程。启用 DF 位时,中间设备无法对过大数据包进行分段。如果网络路径的任何分段不支持配置的 MTU 大小(巨型帧通常为 9000 字节),则这些数据包可能会被丢弃,这可能会导致 SyncIQ 工作进程故障和复制作业不稳定。 ...
Symptoms
SyncIQ 复制可能会失败,并显示以下错误: "SyncIQ policy failed. A work item has been restarted too many times."
- 复制小型数据集的 SyncIQ 作业通常会成功完成。
- 涉及较大数据集的 SyncIQ 作业在执行过程中可能会失败。
- 未使用加密的 SyncIQ 复制作业会成功,而使用加密的复制作业会立即失败。
Cause
在启用了动态路由的环境中,此问题可能会间歇性发生或随机出现。在这种情况下,SyncIQ 流量可能偶尔会通过不支持数据包分段的网络路径进行路由,从而导致故障。
故障处理:
- 使用 ping 命令通过测试端到端 MTU 兼容性来验证网络基础架构是否支持巨型帧。
ping 命令,指定有效负载大小为 8972 字节,而不设置“请勿碎片”(DF) 标记。
isi_for_array -n<lnn> 'ping -S <source-ip> -s 8972 <target-ip>'
source-1# isi_for_array -n1 'ping -c 4 -S xxx.xxx.xxx.xxx -s 8972 yyy.yyy.yyy.yyy'
source-1: PING yyy.yyy.yyy.yyy (10.0.1.231) from xxx.xxx.xxx.xxx: 8972 data bytes
source-1: 1528 bytes from yyy.yyy.yyy.yyy: icmp_seq=0 ttl=64 time=0.944 ms
source-1: 1528 bytes from yyy.yyy.yyy.yyy: icmp_seq=1 ttl=64 time=0.797 ms
source-1: 1528 bytes from yyy.yyy.yyy.yyy: icmp_seq=2 ttl=64 time=0.912 ms
输出显示,当未设置“请勿分段”(DF) 标志时,网络成功传递数据包,这表明数据包可能在传输过程中被分段。
要通过在启用“请勿分段”标记的情况下从源群集的复制接口向目标群集的复制接口发送 ping 来验证巨型数据包支持,请执行以下步骤:
isi_for_array -n<lnn> 'ping -S <source-ip> -D -s 8972 <target-ip>'
source-1# isi_for_array -n1 'ping -c 4 -S xxx.xxx.xxx.xxx -D -s 8972 yyy.yyy.yyy.yyy'
source-1: ping: sendto: Message too long
source-1: ping: sendto: Message too long
source-1: ping: sendto: Message too long
source-1: ping: sendto: Message too long
source-1: ping: sendto: Message too long
输出显示,设置“请勿分段”(DF) 位时数据包传输失败,这表明可能存在 MTU 约束或路径 MTU 发现问题。
- 使用
traceroute进行 MTU 测试,以确定可能不支持巨型帧的中间网络跃点。
测试将有效负载大小指定为 8972 字节,并取消设置“请勿碎片”(DF) 标记。
isi_for_array -n<lnn> 'traceroute -s <source-ip> -p 5667 <target-ip> 8972'
source-1# isi_for_array -n1 'traceroute -s xxx.xxx.xxx.xxx -p 5667 yyy.yyy.yyy.yyy 8972' traceroute to yyy.yyy.yyy.yyy (yyy.yyy.yyy.yyy) from xxx.xxx.xxx.xxx, 64 hops max, 8972 byte packets 1 example.name.internal (aaa.aaa.aaa.aaa) 0.577 ms 0.470 ms 0.472 ms 2 bbb.bbb.bbb.bbb (bbb.bbb.bbb.bbb) 24.810 ms ccc.ccc.ccc.ccc (ccc.ccc.ccc.ccc) 23.418 ms 23.366 ms 3 yyy.yyy.yyy.yyy (yyy.yyy.yyy.yyy) 23.639 ms 23.596 ms 23.608 ms
输出显示,当未设置“请勿分段”(DF) 标志时,traceroute 测试已成功完成。
source-1# isi_for_array -n1 'traceroute -s xxx.xxx.xxx.xxx -p 5667 yyy.yyy.yyy.yyy 8972' traceroute to yyy.yyy.yyy.yyy (yyy.yyy.yyy.yyy) from xxx.xxx.xxx.xxx, 64 hops max, 8972 byte packets 1 * * * 2 * * * 3 yyy.yyy.yyy.yyy (yyy.yyy.yyy.yyy) 23.661 ms 23.618 ms 23.743 ms
输出显示,当未设置“请勿分段”(DF) 标志时,traceroute 测试已成功完成,但沿网络路径观察到分段指示器。
测试指定 8972 字节的有效负载大小,并设置“不碎片”(DF) 标志。
isi_for_array -n<lnn> 'traceroute -F -s <source-ip> -p 5667 <target-ip> 8972'
source-1# isi_for_array -n1 'traceroute -F -s xxx.xxx.xxx.xxx -p 5667 yyy.yyy.yyy.yyy 8972'
traceroute to yyy.yyy.yyy.yyy (yyy.yyy.yyy.yyy) from xxx.xxx.xxx.xxx, 64 hops max, 8972 byte packets
traceroute: sendto: Message too long
1 traceroute: wrote yyy.yyy.yyy.yyy 8972 chars, ret=-1
*traceroute: sendto: Message too long
traceroute: wrote yyy.yyy.yyy.yyy 8972 chars, ret=-1
*traceroute: sendto: Message too long
traceroute: wrote yyy.yyy.yyy.yyy 8972 chars, ret=-1
*
traceroute: sendto: Message too long
2 traceroute: wrote yyy.yyy.yyy.yyy 8972 chars, ret=-1
*traceroute: sendto: Message too long
traceroute: wrote yyy.yyy.yyy.yyy 8972 chars, ret=-1
*traceroute: sendto: Message too long
traceroute: wrote yyy.yyy.yyy.yyy 8972 chars, ret=-1
*
输出指示到目标的 traceroute 失败,这表明网络路径上存在潜在的 MTU 限制或碎片问题。
Resolution
解决办法:
- 如果为 SyncIQ 流量指定的 PowerScale 子网配置了 9000 字节的 MTU,则必须确保参与的 PowerScale 群集之间的整个网络路径完全支持巨型帧。
- 如果参与的 PowerScale 群集之间的网络路径不支持巨型帧,请确保专用于 SyncIQ 流量的 PowerScale 子网在源系统和目标系统上均配置了 1500 字节的 MTU。