最长前缀匹配表

时间:2013-06-07 13:38:38

标签: c linux network-programming kernel ipv6

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

如果答案是肯定,那么有人能告诉我一些解释IP6 FIB API的好资源吗? 事先提前了。

此致

1 个答案:

答案 0 :(得分:0)

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

AFAIK Linux路由仅使用“路由策略”中定义的表,即它们具有引用它们的路由规则。 Linux默认使用表“local”“main”和“default”(表号255,254和253)。所以如果你把你的路线放在例如表号为100,除非您添加引用该表的规则,否则它们将不会被常规路由机制使用。您可以通过键入ip rule list来查看路由“策略”。这也可以从“官方”的iproute documentation中学到,自从Alexey N. Kuznetsov在千禧年之际写下来之后,它还没有更新过。

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

找到

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