eBPF Talk: 揭秘 XDP 转发网络包

书接上回 eBPF Talk: 解密 XDP generic 模式,本文从源代码层面剖析 XDP 转发网络包的实现。 demo 按需将网络包从另一张网卡转发走。 1 2 3 4 5 6 7 8 9 static volatile const u32 REDIRECT_IFINDEX = 0xFFFFFFFF; SEC("xdp") int xdp_redirect(struct xdp_md

eBPF Talk: 解密 XDP generic 模式

近期又得搞 XDP 了,就顺手研究了下 XDP generic 模式的源代码。 XDP generic 模式的函数位置 已知,内核协议栈会对每个 skb 都执行一次 XDP generic 模式处理,当然是启用了 XDP generic 模式的情

eBPF Talk: 好用的 histogram

最近 eBPF 轮子造的多了后,发现需要用 histogram 的时候,要写的代码就一个模板,如下。 以下内容以 syscalldist 为例。 用于 histogram 的 C 代码 参考(抄袭) libbpf-tools 里 histogram 的实现,用于 histogram 的 C 代

eBPF Talk: bpf2bpf 特性揭秘

在 eBPF Talk: bpf2bpf 特性简介 中已介绍了 bpf2bpf 特性,同时有 demo 介绍该怎么使用该特性。 在该特性神秘面纱的背后,到底是怎样的呢?让我娓娓道来。 编译阶段 不懂编译器 clang 中

eBPF Talk: bpf map 源码导读

eBPF map 有诸多类型。如果想要理解它们的实现,该如何去阅读它们的源代码呢? 类型接口 在内核的源代码海洋中,接口的定义一般是:结构体的字段都是函数指针

使用 drgn 查看网络设备的私有数据

这是 drgn 的一个使用例子。 最近在追踪一个 veth 网络设备的问题的时候,发现需要查看 veth 网络设备的 netdev_priv() 获取的私有数据。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19