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

Posté par camille35 le 12/02/2025
RÉSOLU

camille35

Membre depuis le 18/04/2019

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       

Commentaires

verdier-eugene

Membre depuis le 19/05/2024

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

camille35

Membre depuis le 18/04/2019

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

verdier-eugene

Membre depuis le 19/05/2024

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à

camille35

Membre depuis le 18/04/2019

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é

verdier-eugene

Membre depuis le 19/05/2024

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

camille35

Membre depuis le 18/04/2019

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

verdier-eugene

Membre depuis le 19/05/2024

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

camille35

Membre depuis le 18/04/2019

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

verdier-eugene

Membre depuis le 19/05/2024

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

camille35

Membre depuis le 18/04/2019

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

verdier-eugene

Membre depuis le 19/05/2024

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

camille35

Membre depuis le 18/04/2019

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

verdier-eugene

Membre depuis le 19/05/2024

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

camille35

Membre depuis le 18/04/2019

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

camille35

Membre depuis le 18/04/2019

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

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