xdp vps linux : pourquoi l’utiliser et ce que ça change
Sur un serveur exposé à Internet, le goulot d’étranglement se situe souvent à l’entrée du noyau.
XDP (eXpress Data Path), adossé à
eBPF, traite les paquets au plus près de la carte réseau, avant le stack TCP/IP. Résultat : moins de latence, moins d’IRQ, et la capacité de filtrer/compter/changer de file au niveau driver. Pour un hébergeur de jeux, d’APIs ou de sites à trafic élevé, c’est un levier concret pour absorber des pics et mitiger certaines attaques L3/L4.
Prérequis et vérifications rapides
- Kernel récent (5.x+ recommandé) avec eBPF/XDP activés (CONFIG_BPF, CONFIG_XDP_SOCKETS, etc.).
- Paquets outils :
bpftool
, iproute2
, en-têtes kernel et clang/llvm
si compilation. - Interface réseau repérée (souvent <code “>eth0 sur un VPS).
- Accès sudo non-root et pare-feu en place (UFW/Firewalld) pour le contrôle des flux non gérés par XDP.
Installer les outils clés
Sur Debian/Ubuntu, vous pouvez démarrer ainsi :
$ sudo apt update
$ sudo apt install -y linux-headers-$(uname -r) linux-tools-$(uname -r) bpftool clang llvm make git
Astuce :
bpftool feature
affiche les capacités BPF/XDP actives. Pour des exemples prêts à l’emploi, le dépôt
xdp-tools fournit des programmes de référence (drop/redirect/pass, load balancer minimal, etc.).
Attacher un programme XDP (exemple minimal)
Le principe : charger un objet BPF et l’attacher à une interface. Exemple :
$ clang -O2 -target bpf -c xdp_prog.c -o xdp_prog.o
$ sudo ip link set dev eth0 xdp obj xdp_prog.o sec xdp
$ sudo ip -details link show dev eth0 | grep xdp
$ sudo ip link set dev eth0 xdp off # rollback si besoin
Modes d’attache utiles :
native/driver,
generic,
offload.