Unyablog.

のにれんのブログ

eBPF: sk_skb は parser と verdict どちらも attach する必要がある

eBPF で sk_skb (BPF_PROG_TYPE_SK_SKB) を使うとき、 parser と verdict どちらも attach する必要がある。一方だけを attach しても上手く動かない。

環境は ArchLinux で Kernel release は 5.7.10-arch1-1。

$ bpftool prog attach pinned /sys/fs/bpf/sk_skb stream_parser pinned /sys/fs/bpf/sk_skb_map
$ bpftool prog attach pinned /sys/fs/bpf/sk_skb stream_verdict pinned /sys/fs/bpf/sk_skb_map

detatch 時も同様。

(補足: /sys/fs/bpf/sk_skb に pin したプログラムには verdict しか書いていなかった。それでも parser としても attach しないと動かなかった)

stackoverflow.com

bpftool がおかしいのかと思って自分で attach するコードを書いてみて気づいた。今回も bpftool はおかしくなかった。

2020/08/04 追記

どうやら stream_parser はちゃんと書かないとダメらしい(そうじゃないと stream_verdict が複数回呼ばれてしまう)。別々のファイルに書いてそれぞれ attach することにした。