bpftool:无法理解 lpm_trie 键

bpftool:无法理解 lpm_trie 键

我正在输入以下命令:

$ sudo bpftool map create /sys/fs/bpf/routes type lpm_trie key 6\
 value 1 entries 256 name routes flags 1

$ sudo bpftool map update id 194 key 8 0 0 0 0 10 value 1
$ sudo bpftool map update id 194 key 16 0 0 0 107 10 value 3
$ sudo bpftool map update id 194 key 24 0 0 0 107 10 value 3
Error: update failed: Invalid argument
$

我从自我实验中了解到以下内容:

.. 核心价值 ..

  • #前缀
  • 可以_是 0-255 之间的任意值

我无法理解的是,为什么前缀24 不起作用

附言:我找不到任何文档,在key structure更新时要使用什么lpm_triebpf maps

我找到一个网页,共享以下手册页bpftool

该问题的另一次迭代: 问题

答案1

这是一个老问题,但鉴于它是谷歌上对此问题的最佳搜索结果,而且我也遇到过,所以我会给出答案。

为了lpm_trie类型,键的存储方式与prefixlen,data问题所示一致,但prefixlen是 32 位值。由于映射是用 创建的key 6,因此前缀使用了 4 个字节,而数据则使用了 2 个字节,因此最大前缀长度为 16。

相关内容