eBPF Talk: 一个 ARRAY bpf map 的使用细节

创建 bpf map 时,出现了如下错误: 1 failed to load bpf: failed to create map: invalid argument 看下需要创建的 bpf map: 1 2 3 4 5 6 struct { __uint(type, BPF_MAP_TYPE_ARRAY); __type(key, __u8); __type(value, bitmap); __uint(max_entries, PROTO_MAX_ENTRIES); } acl_protocol SEC(".maps"); 想着,需要处理的 protocol 也就 TCP

eBPF Talk: 优化 XDP ACL

书接上回 ,本文讲解对高性能 XDP ACL 的开源项目 xdp_acl 的优化内容: 按需开启 eBPF 中的 debug 日志 动态调整 bitmap 大小 使用 PERCPU ARRAY 优化规则 bpf map 动态增删 ACL 规则的处理 以下代码片段

eBPF Talk: SKB 工作原理【译】

翻译自 How SKBs work。 数据区域的布局 第一张图描述的是 SKB 数据区域的布局,以及几个 struct sk_buff 中的指针。 本文余下内容将讲解 SKB 数据区域的操作:通过修改这些指

eBPF Talk: bpf helpers 的另一面

本文不讲解 bpf helpers 的使用,也不讲解 bpf helpers 的源代码。本文讲解的是,verifier 是怎么处理 bpf helpers 的。 书接上回 eBPF Talk: 揭秘 XDP 转发网络包,本文解答: 为什么 XDP

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 中