最新 Linux 内核中的路由缓存

Mar*_*tin 7 networking routing linux-kernel

据我了解,自 Linux 内核 3.6 以来,路由缓存已被删除。在具有较旧 Linux 内核的系统中,可以使用ip route show cache命令查看路由缓存的内容,并且在路由表之前查阅路由缓存。但是,在最新的 Linux 内核中,路由缓存的状态如何?它是简单地删除并且所有数据包都通过路由表吗?是否有某种(类似的)替换系统?

mve*_*one 6

从我在LinuxFR 文章(法语)中读到的

与当今的延迟需求和安全问题相比,此缓存遇到了严重的性能瓶颈,有时漏洞允许攻击者毒化此缓存。而且它的平均命中率<10%。

现在有一个小的 per-entry 缓存,但仅用于附加信息(TCP 统计信息、PTMU...)

这是3.6 发布后开发人员的邮件回顾

另一个关于缓存性能的评论:LWN.net

  • 有没有办法查看每个条目缓存的内容?在删除路由缓存后,每个传入和传出的 IPv4/IPv6 数据包都直接根据路由表(`local`、`main` 等)进行检查,我是否正确? (5认同)