eBPF Talk: CPU and NUMA

在现代的服务器中,基本上 CPU 采用的都是多核 NUMA 架构。对于网络而言,一个网络包从物理网卡驱动出来之后,并到达对应的应用层 socket,最好都在同一

eBPF Talk: 宏的两种写法

宏是 C 语言中最强大的语言特性,能够用来简化 eBPF 的 C 代码;毕竟 eBPF 的 C 代码是一种语法、语义都受限的 C 代码,不能像普通 C 代码那样“肆意妄为”。 写法一

eBPF Talk: 变量声明的位置

据了解(未查证),从 clang12 开始,eBPF 代码中的变量声明不再要求写在函数体的最前方,而是可以按需声明并初始化。 写法一:一次性声明全部的变量 1 2 3

为 eBPF 程序注入黑魔法 【错误姿势】

在 Kubernetes 集群环境下,如果跨节点的 Pod 需要组成多个 VPC 网络,使用 eBPF 的时候,该如何在 CNI 层面动态地为每个 Pod 分配 VXLAN VNI 或者 VLAN ID 呢? 一个简单可行的办法是,每次 CNI

一文吃透 Linux nsenter

nsenter 套娃 在 Linux 系统里,nsenter 是一个命令行工具,用于进入到另一个 namespace。譬如,nsenter -n -t 1 bash 就是进入到 pid 为 1 的进程所在

一文吃透 Linux TProxy 透明代理

Linux 透明代理并不是一个独立的功能模块,而是一个功能特性。在使用 Linux 透明代理的时候,需要 iptables, ip-rule, ip-route 和应用程序一起协同工作。 Linux 透明代理相关博客: knet