1

我想构建一个内核模块,它将维护他自己的表来执行最长前缀匹配。为此,我正在尝试使用 linux 的“include/net/ip6_fib.h”。是否可以通过这个来满足所需的功能?我在正确的道路上吗?

如果答案是肯定的,那么任何人都可以告诉我一些解释 IP6 FIB API 的好资源吗?提前谢谢。

问候

4

1 回答 1

0

我对内核空间的经验很少,但从用户空间的角度来看,我知道 Linux 路由表可以独立于数据包的路由。如果我正确理解了您的问题,那就是您要问的。

AFAIK Linux 路由仅使用“路由策略”中定义的表,即它们具有引用它们的路由规则。Linux 默认使用表“local”、“main”和“default”(表编号为 255、254 和 253)。因此,如果您将路由放在例如表号 100 中,则它们将不会被常规路由机制使用,除非您添加引用该表的规则。您可以通过键入来查看路由“策略” ip rule list。这也可以从“官方” iproute文档中了解到,该文档自 Alexey N. Kuznetsov 在千年之交编写以来一直没有更新。

但是,我不知道这如何影响前缀匹配和 ip6_fib api,因为路由查找被缓存(在路由表之外)。您可以通过键入来查看路由缓存ip route list table cache。(旁注:可以在http://vincent.bernat.im/en/blog/2011-ipv4-route-cache-linux.html找到对路由缓存的深入了解)

我无法为在内核中使用 FIB 提供任何帮助,这是您的第二次询问。我只能冒险说内核源代码是最新的文档,而且很可能也是唯一的文档。

于 2013-06-12T19:40:39.970 回答