“Super powers have finally come to Linux” — Brendan Gregg

学习计划

自从知道了eBPF这项技术后,一直对它十分感兴趣,这几天静下心来作了一个学习计划,准备逐步深入学习,最后希望能有输出,能够给大家讲讲这项“黑科技”。

实验环境和相关代码

https://github.com/nevermosby/linux-bpf-learning

博文目录

第一阶段学习总结

从写下第一篇BPF技术博文开始,至今已经历时两个多月了,一共写下了7篇文章。通过撰写这些文章,算是完成了第一阶段的学习目标,虽然跟计划中的第一阶段学习内容差异较大,实际学习结果覆盖了第二阶段的动手实验部分,说明了学习技术往往是需要通过理论学习加上动手实验,才能看懂理解相关的知识。另外,写文章的同时,可以锻炼很多其他软技能,比如画图,录视频,做视频等等,写技术博客就是这么一件痛并快乐着的事情。

14 对 “eBPF学习计划”的想法;

  1. 5.4.0-42-generic #46~18.04.1-Ubuntu SMP Fri Jul 10 07:21:24 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    有碰到过运行linux-sample的例子,提示错误
    libbpf: BTF is required, but is missing or corrupted.
    求解

    1. 能否贴下你使用的clang版本和执行clang的编译参数是否有改动?可能是clang和libbpf版本不兼容。建议尽量使用最新版本clang及其对应llvm。

      btf是用来增加调试信息的,如果出现相关错误不影响编译过程的话,可以忽略。

      1. 我发现我用5.0的内核版本的例子,就是不行,但是我使用4.15的,是可以的。有使用过5.0版本的内核吗

      2. 内核代码使用的是linux-source-5.3.0
        clang -v
        clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
        Target: x86_64-pc-linux-gnu
        Thread model: posix
        InstalledDir: /usr/bin
        Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/8
        Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
        Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0
        Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
        Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
        Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
        Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
        Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
        Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0
        Candidate multilib: .;@m64
        Candidate multilib: 32;@m32
        Candidate multilib: x32;@mx32
        Selected multilib: .;@m64

        直接在内核源码目录下编译,啥也没有改
        make M=samples/bpf/

        编译完成后执行
        ./xdp1 -S lo
        libbpf: BTF is required, but is missing or corrupted.

        1. 最后排查下来后,确认原因是,clang版本问题,linux版本是5以上的话,最好将clang更新到最新,clang-9

    1. 由于个人精力有限,目前还没有专属兴趣小组。但已经有很多朋友对有个学习群感兴趣,正在考虑建立一个知识星球小组

  2. 作者有没有遇到以xdpdrv模式加载BPF应用(仅做转发),bpf_redirect并没有起作用,但以xdpgeneric模式加载,可以正常转发。网卡驱动是ixgbe,内核版本5.4.0。 感谢感谢!!!!

robolwq进行回复 取消回复

邮箱地址不会被公开。 必填项已用*标注