多个ebpf挂钩cgroup_skb



当在内核中同时加载(不使用链接(多个ebpf挂钩时,我对ebpf行为有基本的疑问。所有这些钩子都被调用了吗?例如,我加载了我的ebpf程序,该程序具有cgroup_skb/ingress钩子。我的程序加载的ebpf钩子函数在数据包进入期间不会被内核调用。当我在";Linux 5.13.0-30通用";,我看到systemd默认情况下已经加载了cgroup_skb/ingress钩子。我确实理解为什么这些cgroup/skb挂钩是由systemd加载的。我的问题特别是当加载多个相同类型的挂钩(cgroup_skb/ingress(时内核的行为。

是。所有的钩子都会被调用。我们需要附上";多";关键字。

bpftool程序加载测试1.o/sys/fs/bpf/test1类型cgroup/skb

bpftool cgroup attach/sys/fs/cgroup/mygrp egress pinned/sys/fs/bpf/test1multi

bpftool程序加载测试2.o/sys/fs/bpf/test2类型cgroup/skb

bpftool cgroup attach/sys/fs/cgroup/mygrp egress pinned/sys/fs/bpf/test2multi

我的简单程序使用不同的调试打印语句(test2.c(:SEC("cgroup/scb"(int cgrp_dump_pkt(结构__sk_buff*skb({

bpf_printk("welcome test 2");
return 1;

}

ping-446804[0000]d…374792.037025:bpf_trace_printk:欢迎测试1

ping-446804[0000]d…374792.037038:bpf_trace_printk:欢迎测试2

相关内容

  • 没有找到相关文章

最新更新