eBPF Talk: BPF map 趣事一则 2022-11-13 eBPF eBPF Talk 约 588 字 预计阅读 2 分钟 有同事报告一个错误:lookup: cannot allocate memory,并请求如何解决。 lookup 项目中使用的 eBPF 库是 cilium/ebpf。查看一下 BPF map lookup 的源代码,如下 阅读更多
eBPF Talk: 为当前内核提供外部 BTF 文件 2022-11-06 eBPF eBPF Talk 约 547 字 预计阅读 2 分钟 最近系统地学习了 eBPF CO-RE(Compile Once, Run Everywhere,一次编译,到处运行),其中包括了 BTF。 BTF,BPF Type Format, 阅读更多
eBPF Talk: 比 kprobe 更好的 trampoline 2022-11-01 eBPF eBPF Talk 约 1016 字 预计阅读 3 分钟 eBPF trampoline(trampoline:蹦床,翻译后并不好理解,所以不作翻译)是内核函数和 eBPF 程序之间的桥梁,基于 register_ftrace_direct() 实现。它实现了 kprobe/kretprobe 的功 阅读更多
eBPF Talk: CPU and NUMA 2022-10-31 eBPF eBPF Talk 约 955 字 预计阅读 2 分钟 在现代的服务器中,基本上 CPU 采用的都是多核 NUMA 架构。对于网络而言,一个网络包从物理网卡驱动出来之后,并到达对应的应用层 socket,最好都在同一 阅读更多
eBPF Talk: 宏的两种写法 2022-10-30 eBPF eBPF Talk 约 564 字 预计阅读 2 分钟 宏是 C 语言中最强大的语言特性,能够用来简化 eBPF 的 C 代码;毕竟 eBPF 的 C 代码是一种语法、语义都受限的 C 代码,不能像普通 C 代码那样“肆意妄为”。 写法一 阅读更多
eBPF Talk: 变量声明的位置 2022-10-29 eBPF eBPF Talk 约 758 字 预计阅读 2 分钟 据了解(未查证),从 clang12 开始,eBPF 代码中的变量声明不再要求写在函数体的最前方,而是可以按需声明并初始化。 写法一:一次性声明全部的变量 1 2 3 阅读更多
为 eBPF 程序注入黑魔法 【正确姿势】 2022-08-24 eBPF 约 1263 字 预计阅读 3 分钟 为 eBPF 程序注入黑魔法 【错误姿势】 中提出的在加载阶段中动态变更常量值的办法并不可靠,毕竟在 cilium/ebpf 中已提供了重写常量的函数 RewriteConstan 阅读更多
为 eBPF 程序注入黑魔法 【错误姿势】 2022-06-11 eBPF 约 1276 字 预计阅读 3 分钟 在 Kubernetes 集群环境下,如果跨节点的 Pod 需要组成多个 VPC 网络,使用 eBPF 的时候,该如何在 CNI 层面动态地为每个 Pod 分配 VXLAN VNI 或者 VLAN ID 呢? 一个简单可行的办法是,每次 CNI 阅读更多
demo for 「eBPF 技术实践:高性能 ACL」 2022-04-01 iptables eBPF eBPF Talk 约 1231 字 预计阅读 3 分钟 在阅读了字节跳动发出的公众号文章 eBPF 技术实践:高性能 ACL 后,对其中提出的 O(1) 匹配算法颇为佩服;但初始看了好几遍,都没看懂这个匹配算法。如今看懂后, 阅读更多