ftc*_*ftc 5 linux routing ipv6 latency
我正在运行基于运行 Debian stable (Buster) 的 Linux 服务器的路由器。它使用 Quagga 将 BGP4 与四个对等方(其中一个发送 IPv4 和 IPv6 的整个 Internet 路由表,其他发送的路由少得多)。
每天大约一到两次,服务器会在大约五分钟内失去 IPv6 连接。
发生这种情况时,服务器似乎无法向 IPv6 地址发送任何数据包。看来这会影响任何地址和接口 - 连接到 Internet 的主要以太网适配器以及连接到内置管理适配器(Lenovo XClarity 控制器)的特殊“Ethernet-over-USB”接口。但是,它可以 ping ::1 以及它自己的任何地址(本地链接和路由地址)。
此外,“ip -6 neigh ls”不显示任何“REACHABLE”,只显示“STALE”或“DELAY”。尽管如此,路由器本身上的 tcpdump 似乎没有显示任何邻居请求数据包出来。当我尝试访问同一 LAN 上的另一台机器时,目标上的 tcpdump 也没有显示收到任何邻居请求数据包。
这种状态持续约五分钟,之后一切恢复正常,无需任何人工干预。
IPv4 连接似乎不受此影响。
我试图通过运行分析工具(ping、vmstat、perf 记录)、保存它们的输出并将它们与时间相关联来对此进行更多分析。到目前为止,我可以说的是:
问题发生时似乎没有过多的网络流量
似乎没有任何类型的 RAM 或 CPU 使用率峰值
Internet 的正常运行会每隔一段时间导致一些增量路由表更改,这些更改由 quagga 执行;它们似乎与中断无关;这种中断也会发生在变化相对较小的时期之后
在任何时候,perf 都将 fib6_walk_continue 显示为最重要的符号之一;通常大约 5% 的开销。但是,几乎就在 IPv6 连接停止时,以下符号出现在顶部:
fib6_walk_continue(大约 30%) native_queued_spin_lock_slowpath(大约 10%) fib6_age(大约 10%)
最初它们似乎都属于“交换器”cmd。大约一分钟后,quagga 注意到它无法再访问对等方并开始删除 IPv6 路由;发生这种情况时,相同的三个符号出现在 perf 输出中,属于斑马。
当正常的 perf 输出返回时(intel_idle 在顶部),几乎完全相同,连接又回来了。
有没有人见过这样的东西?
软件:带有最新软件包的 Debian Buster,特别是 linux-image-4.19.0-9-amd64 和 quagga-core 以及 quagga-bgpd 1.2.4-3
硬件:Lenovo SR550 配备 6 核“Intel(R) Xeon(R) Bronze 3104 CPU @ 1.70GHz”和 32 GB RAM
编辑:此问题已由 ServerFault 关闭,并附有评论“寻求安装、配置或诊断帮助的问题必须包括所需的最终状态、特定问题或错误、有关配置和重现它的环境的足够信息,以及尝试的解决方案。”
我相信“具体问题或错误,有关配置和重现它的环境的足够信息”已在原始描述中提供。
“理想的最终状态”是机器不会失去 IPv6 连接。
对于“尝试的解决方案”:目前,我已将 Linux 内核恢复到 Debian 9“Stretch”(linux-image-4.9.0-13-amd64 版本 4.9.228-1)的版本,同时保留其余的Debian 10“Buster”中当前版本的软件包。
到目前为止,症状已经停止。
如果这种情况持续数周,我认为该行为是在 Linux 4.9(来自 Stretch)和 4.19(来自 Buster)之间引入的 Linux 内核错误,看看它是否可能已经在更高的内核版本中修复。