eBPF Talk: veth, XDP, GRO ?

书接上回 eBPF Talk: XDP 转发失败了,今回讲解为什么从物理网卡的驱动模式 XDP 程序 xdp_redirect() 到 veth 设备时一定要开启对端设备的 GRO 功能? 网络包 xdp_redirect() 转发到哪里去? 简单而言,网

eBPF Talk: XDP 转发失败了

奇葩场景遇到个奇葩问题。 为了更好的性能,就将 XDP 程序挂载到网卡驱动里。但有个业务需求,在 XDP 程序里将需要延迟的流量转发到 veth 设备。所以,就直接在 XDP

eBPF Talk: 在 veth 上运行 XDP

veth 设备在 Linux 容器网络里被广泛使用,像其它网络设备一样都支持运行 XDP 程序。 与此同时,veth 设备还支持 driver 模式的 XDP 程序。 如果在往 veth 设备上挂载 XDP 程序时

eBPF Talk: XDP metadata 实战指南

最近需要在两个 XDP 程序之间传递一个最简单的信息,原本想着使用使用一个 bpf map 来传递。经过同事提醒,有 XDP metadata 可以用来传递简单信息,我便解锁了 XDP metadata 技术。

eBPF Talk: 低性能 eBPF ACL

eBPF Talk: 再论高性能 eBPF ACL 中的 ACL 规则匹配算法比较复杂,晦涩难懂;相对于 iptables 而言,该实现就比较难维护了。这就是为了性能而牺牲了可维护性。 所以,有没有类似

eBPF Talk: 揭秘 XDP 转发网络包【续】

书接 eBPF Talk: 揭秘 XDP 转发网络包 未竟的内容,看看最后 generic_xdp_tx() 函数中的发包详情。 1 2 3 4 5 6 // ${KERNEL}/net/core/dev.c generic_xdp_tx() |-->netdev_start_xmit() |-->__netdev_start_xmit() |-->ops->ndo_start_xmit(skb, dev); 由以上函数调用栈可知,XDP_REDIRECT 和 XDP_TX

eBPF Talk: bpf verifier 报告 ENOSPC

今天遇到个不常见的问题:在往内核装载 bpf 程序时,bpf verifier 报告错误: 1 failed to load bpf with bitmap size 8: failed to load bpf obj and bpf maps: field Acl: program acl: load program: no space left on device: 578: R0=map_value(id=0,off=0,ks=8,vs=64,imm=0) R1_w=map_ptr(id=0,off=0,ks=4,vs=4,imm=0) R2_w=fp-4 R3_w=invP1 R4=invP(id=69 (3524 line(s) omitted) 觉