1

bpf-helpers(7)bpf_get_socket_cookie()如果内部缺少套接字字段,则返回 0 的状态skb

在这种情况下,套接字字段在什么情况下会丢失?它是否取决于 BPF 程序附加到数据路径中的哪个位置?例如,对于bpf_get_socket_cookie()附加的过滤器tc filter add dev ... ingress ... bpf ...(比如在 Linux 内核 4.19 上),是否总是返回 0?

4

1 回答 1

2

如果数据包尚未解复用到套接字,则套接字字段为 NULL。对于 TCP,这发生在tcp_v4_early_demux().

所以是的,这取决于你在哪里附加你的 BPF 程序。您需要在数据包被多路分解到套接字之前附加它。

于 2021-05-26T08:06:22.303 回答