经典 BPF——简单的统计数据不可用?

Classic BPF -- simple stats not available?

我正在使用经典的 BPF 来过滤 netlink 套接字上的内容,发现没有简单的统计数据可用于验证数据包是否已被丢弃或允许。

所以我查看了 https://elixir.bootlin.com/linux/latest/source/net/core/filter.c#L90 是的,它执行过滤器 bpf 程序但不更新任何会告诉我用户 space(例如通过 /proc FS)是否过滤器是否丢弃了数据包。这将简化 cBPF 过滤器的调试。

这是预期的,还是我遗漏了什么?

据我所知,你是对的,没有与附加到套接字的 BPF 程序相关的统计信息。如果你想要这样的统计数据,你必须自己计算它们,使用 eBPF 程序和映射

据我所知,XDP 挂钩是唯一带有统计信息的挂钩(通过 ethtool)。