路由缓存和邻居表的区别

路由缓存和邻居表的区别

我们的 Ubuntu 服务器作为数千台设备的路由器运行。随着连接客户端数量的不断增加,我们注意到内核日志中存在 3 个溢出问题:

1. Route cache chain too long 
2. Neighbor table overflow
3. ip conntrack table full

所有 3 个表的大小都可以扩展,我们也这样做了,但我们不了解它们之间的差异以及所涉及的机制。

那么有人可以简单地解释一下内核路由缓存和邻居表之间的区别吗?它们似乎具有相似的目的,使用相同的机制(收集垃圾)并且都管理路由。

对 connntrack 表的解释也将受到欢迎:)

答案1

路由缓存和邻居表有些相似,因为它们都有助于决定下一步将数据包发送到哪里。

不同之处在于邻居表在第 2 层(以太网)级别缓存条目;它有助于将 IP 地址转换为 MAC 地址。这ARP协议用于查询要缓存的新条目。

路由缓存工作在第 3 层 (IP)。最简单的形式将目标 IP 地址映射到“下一跳”(即:从该节点向何处发送数据包)。非路由器通常具有完全静态的缓存,仅将所有流量映射到单个“默认路由”。

还有更复杂的缓存策略,它们会影响服务质量约束、源地址和目标地址等。 IP路由指南提供了一个很好的概述。

相关内容