首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未能附加eBPF blob

未能附加eBPF blob
EN

Stack Overflow用户
提问于 2017-11-22 05:34:40
回答 1查看 936关注 0票数 0

我刚刚从内核tools/testing/selftests/bpf编译了BPF示例,并尝试加载http://cilium.readthedocs.io/en/v0.10/bpf/中解释的

代码语言:javascript
复制
% tc filter add dev enp0s1 ingress bpf \
    object-file ./net-next.git/tools/testing/selftests/bpf/sockmap_parse_prog.o \
    section sk_skb1 verbose 
Program section 'sk_skb1' not found in ELF file!
Error fetching program/map!

这发生在Ubuntu16.04.3LTS上,内核为4.4.0-98,llvmclang的版本3.8是从包中安装的,iproute2是github的最新版本。

我怀疑我遇到了一些工具链/内核版本/特性不匹配。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-22 11:16:48

我不知道tc为什么抱怨。在我的设置中,使用类似的命令,程序将加载。不过,以下是一些提示:

  • 我认为,正如您所建议的,这个问题可能来自内核头版本和iproute2之间的一些不兼容,并且一些重新定位没有发生,尽管在快速的调查中,我没有找到它拒绝加载该部分的确切原因。在我这方面,我使用的是clang-3.8,最新的iproute2,但也使用最新的内核(一些提交接近4.14)。
  • 如果您设法以某种方式加载该部分,我相信您在尝试将程序附加到内核时仍然会遇到问题。名为“直接分组接入”的特性只出现在核4.7及以上上。这就是使您能够在程序中使用skb->dataskb->data_end的原因。
  • 然后,顺便指出,这个程序sockmap_parse_prog.c不打算与tc一起使用。它应该直接附加到套接字上(在同一目录下的文件SOCKMAP_PARSE_PROG中搜索test_maps.c以查看它是如何加载的)。从技术上讲,这并不妨碍将程序附加为tc筛选器,但它可能不会像预期的那样工作。特别是,从程序返回的值可能没有tc分类器钩子会理解的含义。

因此,我建议尝试使用最近的内核,并看看您是否有更多的成功。或者,尝试编译并运行您可以在自己的内核源代码中找到的示例。祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47427474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档