当 Vyatta Core 路由器处于高负载状态时,我们的监控系统会指示 IPsec VTI 上存在传输错误。这些错误只会偶尔出现,而且似乎不会严重影响性能(我们在 100 Mbps 链路上的速度非常接近 100 Mbps),但关于 VTI 上传输错误的原因似乎很少。我确信这些信息存在于内核源代码中,但由于没有内核开发经验,我可能需要几天或几周的时间才能理解这些信息,从而回答这个问题。我在哪里可以找到有关此问题的更多信息?
答案1
VTI 接口(和其他隧道接口)上的传输错误具有特殊含义。不幸的是,它记录得很少,我查看了内核源代码来调查这一点(请参阅/net/ipv4/ip_vti.c 文件)。
要列出 TX 错误的类别,请使用ip -s -s -d link show [ dev <vti-iface> ]
命令。
TX载波错误及故障排除:
ip route get <dst>
未找到合适的路线 - 使用命令检查ip xfrm policy get ...
未找到合适的策略 - 使用命令检查策略- 未找到合适的 SA - 使用命令检查 SA
ip xfrm state get ...
状态 - SA 未处于隧道模式 - 使用
ip xfrm state show
或ip xfrm state get ...
命令检查 SA 模式
TX 碰撞错误:
- 发现路由环路 - 转换后,数据包应通过相同的 VTI 接口发送 - 检查 SA 配置和路由配置。
答案2
您看到的错误可能由多种原因导致。我的建议是深入研究您的日志,查找类似以下内容的消息:
Nov 25 21:18:00.000 UTC: ISAKMP (0:1): deleting node ######## error TRUE reason "[the answer you seek is likely in this string]"
我会查看此链接以对 IPSec VPN 进行故障排除。通常,我会总结为链接可能因任何原因而中断,但如果不知道更多细节,您通常需要查找与初始配置无关的故障排除指南(因为您有一个有效的设置——只有偶尔的错误)。也就是说,您的问题的答案很可能以字符串的形式存在于您的日志文件中。
更一般地说,传输错误可能由于多种原因而发生 - 校验和损坏、身份验证标头损坏、由于拥塞或丢包而需要重新传输,实际上受影响的网络堆栈任何层中的任何错误都可能冒泡。