eBPF Talk: 更新 tailcall PROG_ARRAY bpf map

在上一集 eBPF Talk: 动态或静态 tailcall 中,我们知道了 tailcall 有动态和静态之分。 对于动态 tailcall 而言,更新 PROG_ARRAY bpf map 时就比较简单,只需要更新一下 array->ptrs 数组即可。 但对于静态 tailcall 而言

eBPF Talk: 动态或静态 tailcall

动态 tailcall?静态 tailcall?为什么 tailcall 会有动静之分呢? 其实,就是看在使用 bpf_taill_call() 时,传入的 index 参数是常量还是变量。 动态 tailcall 在使用 bpf_tail_call() 时,传

eBPF Talk: poke on x86【汇编慎入】

本系列是 x86 架构平台上 trampoline 的实现,从原理和实现上进行了详细的介绍。 eBPF Talk: poke on x86【汇编慎入】 eBPF Talk: perilogue on x86【汇编慎入】 eBPF Talk: freplace on x86【汇编慎入】

eBPF Talk: 实战经验之 loop

最近刚好打算使用 for 遍历 CIDR 数组的方式替换性能较差的 LPM trie bpf map,就顺便总结一下 loop 相关经验。 在 eBPF 中,出于性能、安全考虑,并不支持无限循环。这并不