Paquets droppés mystérieusement sur interface réseau avec eBPF actif

camille35 12/02/2025
RÉSOLU
camille35
Auteur Actif
Avatar de camille35
camille35
Auteur Actif

Salut les génies du kernel. On a une interface 100G qui fait pas mal de trafic et on voit des paquets droppés dans les stats ip -s link. genre 10k drops par minute. le souci c'est qu'on a un programme eBPF XDP chargé dessus. j'ai l'impression que ça vient de là. comment je debug un truc pareil

ip -s link show dev eth0
    rx: bytes  packets  errors  dropped  overrun  mcast   
    3033g    3.4b     0       12345    0        0       
    tx: bytes  packets  errors  dropped  carrier  collsns 
    1011g    1.1b     0       0        0        0       
12/02/2025 à 16:30

15 commentaires

verdier-eugene
Membre Actif
Avatar de verdier-eugene
verdier-eugene
Membre Actif

Yo. XDP c'est sensible. les drops peuvent venir de pleins d'endroits. première chose t'es sûr que c'est pas le NIC driver qui a un souci de buffer. regarde les messages du kernel dmesg

13/02/2025 à 11:09
camille35
Auteur Actif
Avatar de camille35
camille35
Auteur Actif

dmesg est propre. pas d'erreurs ni de warnings sur le driver. on est sur un Mellanox ConnectX-5 avec les derniers drivers. les buffers rx/tx sont déjà tunés à fond

14/02/2025 à 10:06
verdier-eugene
Membre Actif
Avatar de verdier-eugene
verdier-eugene
Membre Actif

ok. ton programme xdp il fait quoi exactement. et t'es sûr qu'il drop pas les paquets lui-même avec un xdp_drop sans que ce soit intentionnel pour ces paquets là

15/02/2025 à 09:51
camille35
Auteur Actif
Avatar de camille35
camille35
Auteur Actif

il filtre juste du trafic l3/l4 pour du ddos mitigation. mais c'est du trafic légitime qui est droppé. j'ai vérifié la logique c'est pas censé. j'ai regardé avec bpftool prog show il est bien attaché

16/02/2025 à 05:52
verdier-eugene
Membre Actif
Avatar de verdier-eugene
verdier-eugene
Membre Actif

t'as checké les stats de ton programme eBPF avec bpftool prog metrics ou perf record -e bpf:bpf_prog_kprobe sur ton programme XDP pour voir où il passe le plus de temps

17/02/2025 à 01:41
camille35
Auteur Actif
Avatar de camille35
camille35
Auteur Actif

pas encore fait. je vais essayer bpftool prog metrics. mais est-ce que c'est possible que le kernel drop les paquets avant même que l'ebpf les voie si les buffers sont pleins genre before xdp

18/02/2025 à 00:35
verdier-eugene
Membre Actif
Avatar de verdier-eugene
verdier-eugene
Membre Actif

totalement. si les ring buffers du nic sont full avant même que xdp n'ait une chance de les processer, ils sont droppés par le hardware. xdp est censé être très tôt dans le pipeline mais y a toujours une limite physique

18/02/2025 à 19:28
camille35
Auteur Actif
Avatar de camille35
camille35
Auteur Actif

c'est ça qui m'inquiète. mais si les ring buffers sont full on devrait voir des overruns dans ip -s link. j'ai 0 overrun

19/02/2025 à 14:03
verdier-eugene
Membre Actif
Avatar de verdier-eugene
verdier-eugene
Membre Actif

pas forcément. overrun c'est quand la mémoire du driver est pleine. si c'est la mémoire hardware sur la carte NIC elle-même qui sature, ça peut juste être un drop silencieux ou compté différemment. t'as des métriques spécifiques du NIC via ethtool -S eth0

20/02/2025 à 11:53
camille35
Auteur Actif
Avatar de camille35
camille35
Auteur Actif

bingo ! ethtool -S eth0 montre des rx_queue_0_drops et rx_fifo_errors qui montent en flèche. ça vient bien du hardware de la carte ou du driver qui arrive pas à suivre même si mes buffers sont à fond

21/02/2025 à 09:40
verdier-eugene
Membre Actif
Avatar de verdier-eugene
verdier-eugene
Membre Actif

ok donc c'est pas XDP qui drop mais XDP qui ralentit le processus ou ton trafic est juste trop intense. si XDP prend trop de temps par paquet, ça backpresure le NIC. même un bon programme peut devenir un bottleneck. il faut que ton XDP soit ultra léger

22/02/2025 à 09:36
camille35
Auteur Actif
Avatar de camille35
camille35
Auteur Actif

mon programme est assez simple. il fait des lookups dans une map ebpf. ptete que les lookups sont chers. j'ai pas mis de cache ou de trucs optimisés

23/02/2025 à 07:38
verdier-eugene
Membre Actif
Avatar de verdier-eugene
verdier-eugene
Membre Actif

un lookup dans une map eBPF c'est ultra rapide normalement. sauf si ta map est énorme ou si t'as des collisions de hash fréquentes. t'as quelle taille de map

24/02/2025 à 05:14
camille35
Auteur Actif
Avatar de camille35
camille35
Auteur Actif

ma map fait 1M d'entrées. c grand mais pas non plus démentiel. je vais essayer de simplifier encore plus le programme XDP ou de le décharger pour voir si les drops disparaissent

25/02/2025 à 03:48
camille35
Auteur Actif
Avatar de camille35
camille35
Auteur Actif

je l'ai déchargé et surprise les drops sont toujours là. le souci venait bien du Mellanox qui galère avec certains types de burst trafic. j'ai dû upgrader le firmware et changer un paramètre de flow control. MERCI BEAUCOUP pour l'aide les gars j'aurais été bloqué sur eBPF pour des jours

26/02/2025 à 03:10

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire