由 ICMP Redirect 消息引起的丢包问题排查

💡 原文中文,约2900字,阅读约需7分钟。
📝

内容提要

经过两个月的排查,发现复杂网络问题的原因是路由器与网关的交互,导致25%或50%的丢包。确认是路由器行为引起,建议禁用ICMP重定向解决问题。

🎯

关键要点

  • 经过两个月的排查,发现复杂网络问题的原因是路由器与网关的交互,导致25%或50%的丢包。
  • 问题发生在VXLAN网关和路由器之间的两层Overlay网络中,路由器的转发行为导致丢包。
  • 通过ping测试确认丢包点在路由器,使用scapy模拟包发现路由器未转发包。
  • 使用SPAN抓包确认路由器收到包但未转发,发现路由器选择的线路可能导致丢包。
  • 经过多次测试,确认问题是路由器的行为,而非设备的BUG。
  • 路由器发送ICMP Redirect消息给网关,但网关不理会,导致包继续发送到路由器。
  • ICMP Redirect消息的处理成本高,无法在ASIC芯片上完成,需要CPU处理,影响转发性能。
  • 建议禁用ICMP Redirect以解决丢包问题,使用命令no ip redirects即可。

延伸问答

ICMP Redirect 消息是如何导致丢包的?

ICMP Redirect 消息的处理成本高,需要 CPU 处理,导致路由器无法高效转发包,从而引起丢包。

如何确认丢包问题的根源?

通过 ping 测试和使用 scapy 模拟包,最终确认丢包发生在路由器未转发包的环节。

为什么建议禁用 ICMP Redirect?

禁用 ICMP Redirect 可以避免路由器发送额外的 ICMP 消息,从而提高转发性能,减少丢包。

丢包率达到 25% 或 50% 的原因是什么?

丢包率高是因为路由器在处理包时选择的线路可能导致包未能正确转发。

在排查过程中使用了哪些工具?

使用了 ping 测试、scapy 模拟包和 SPAN 抓包等工具来定位丢包问题。

路由器的行为与设备的BUG有什么区别?

路由器的行为是设计上的选择,而非设备的BUG,导致了包的转发不符合预期。

➡️

继续阅读