包含标签 高性能网络 的文章

dpdk rcu lib

dpdk rcu linux的RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加锁操作。这样在同一时间可以有多个线程同时读取该链表,并且允许一个线程对链表进行修改。RCU适用于需要频繁的读取数据,而相应修改数据并不多的情景……

阅读全文

gobpf不完整使用指南

编译过程 安装llvm-10,clang-10 apt-install llvm-10 clang-10 下载bpf2go 1 go install github.com/cilium/ebpf/cmd/bpf2go@latest 修改bpf程序的include 1 #include "common.h" 编译时将bpd的headers包含进来 1 GOPACKAGE=main bpf2go -cc clang-10 -cflags '-O2 -g -Wall -Werror' -target bpfel,bpfeb bpf helloworld.bpf.c -- -I /root/ebpf/examples/headers 得到大端和小端两个版本的ELF文件,之后在go程序里加载即可。cpu一般都是小端。 内核版本要求 经测……

阅读全文

初识ebpf

摘自 eBPF 用户空间虚拟机实现相关 | Blog (forsworns.github.io) [译] Cilium:BPF 和 XDP 参考指南(2021) (arthurchiao.art) hook point 可以插入bpf代码的位置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 enum bpf_prog_type { BPF_PROG_TYPE_UNSPEC, BPF_PROG_TYPE_SOCKET_FILTER, BPF_PROG_TYPE_KPROBE, BPF_PROG_TYPE_SCHED_CLS, BPF_PROG_TYPE_SCHED_ACT, BPF_PROG_TYPE_TRACEPOINT, BPF_PROG_TYPE_XDP, BPF_PROG_TYPE_PERF_EVENT, BPF_PROG_TYPE_CGROUP_SKB, BPF_PROG_TYPE_CGROUP_SOCK, BPF_PROG_TYPE_LWT_IN, BPF_PROG_TYPE_LWT_OUT, BPF_PROG_TYPE_LWT_XMIT, BPF_PROG_TYPE_SOCK_OPS, BPF_PROG_TYPE_SK_SKB, }; 程序类型 bpf_prog_type BPF prog 入口参数(R1) 程序类型 BPF_PROG_TYPE_SOCKET_FILTER struct __sk_buff 用于过滤进出口网络报文,功能上和 cBPF 类似。 BPF_PROG_TYPE_KPROBE struct pt_regs 用于……

阅读全文