BGP flapping et saturation IRQ sur edge nodes 100G

emilie97 16/05/2026
RÉSOLU
emilie97
Auteur
Avatar de emilie97
emilie97
Auteur

salut. on a des soucis de stabilité BGP (Bird2) sur nos nouveaux edge nodes. dès qu'on dépasse les 40Gbps de trafic entrant les sessions tombent avec un 'Hold timer expired'.

les machines sont des dual EPYC avec des Mellanox ConnectX-6. le cpu est à 10% mais les logs bird sont formels : timeout des keepalives.

16/05/2026 à 23:51

16 commentaires

grossi
Membre
Avatar de grossi
grossi
Membre

tes keepalives BGP se font drop car ton noyau arrive pas à traiter les paquets de contrôle assez vite. regarde ton /proc/net/softnet_stat.

18/05/2026 à 05:30
juliette17
Membre
Avatar de juliette17
juliette17
Membre

regarde aussi si tes interruptions réseau sont pas toutes sur le core 0. par défaut linux fait souvent de la merde avec l'irqbalance.

20/05/2026 à 01:20
emilie97
Auteur
Avatar de emilie97
emilie97
Auteur

softnet_stat montre des drops sur la première colonne. et effectivement htop montre un core (cpu 0) à 100% en 'si' alors que les autres glandent.

20/05/2026 à 14:51
grossi
Membre
Avatar de grossi
grossi
Membre

c'est ton problème. ksoftirqd/0 est saturé. il traite tous les paquets et bird a pas de slot pour envoyer ses keepalives. faut virer irqbalance et pinner tes queues manuellement.

20/05/2026 à 14:51
juliette17
Membre
Avatar de juliette17
juliette17
Membre

t'as combien de queues sur tes NIC ?

ethtool -l eth0
20/05/2026 à 14:51
emilie97
Auteur
Avatar de emilie97
emilie97
Auteur

j'ai 32 queues. mais elles semblent toutes mapper sur les cores 0-31 du premier socket. voilà le retour d'ethtool :

Combined: 32
20/05/2026 à 14:51
grossi
Membre
Avatar de grossi
grossi
Membre

faut que tu fasses du RSS (Receive Side Scaling) propre. et surtout bind tes process critiques comme bird sur des cores qui font pas d'irq réseau.

20/05/2026 à 14:51
emilie97
Auteur
Avatar de emilie97
emilie97
Auteur

je viens de tester un script de pinning manuel des irq sur les cores 1-31. j'ai laissé le core 0 et le core 32 libres.

for i in {0..31}; do
  echo $i > /proc/irq/$(cat /proc/interrupts | grep "eth0-$i" | cut -d: -f1 | tr -d ' ')/smp_affinity_list
done
20/05/2026 à 14:51
juliette17
Membre
Avatar de juliette17
juliette17
Membre

mieux. mais bird peut toujours se faire squeeze. utilise isolcpus ou cpuset pour dédier des cores au control plane.

20/05/2026 à 14:51
grossi
Membre
Avatar de grossi
grossi
Membre

vérifie aussi ton buffer ring. si tu prends des bursts à 100G les réglages par défaut sont trop faibles.

ethtool -g eth0
20/05/2026 à 14:51
emilie97
Auteur
Avatar de emilie97
emilie97
Auteur

les rings étaient à 1024. je les ai montés à 4096. le nombre de drops dans softnet_stat a l'air de diminuer mais j'ai encore des 'si' élevés sur les cores de tête.

20/05/2026 à 14:51
juliette17
Membre
Avatar de juliette17
juliette17
Membre

active le RFS (Receive Flow Steering) pour que le traitement remonte au core où l'appli tourne. ça aide pour bird si le socket tcp est bien géré.

20/05/2026 à 14:51
grossi
Membre
Avatar de grossi
grossi
Membre

et augmente le net.core.netdev_budget. par défaut c'est 300. passe le à 600 ou 1000 pour que le noyau traite plus de paquets par cycle d'interruption.

20/05/2026 à 14:51
emilie97
Auteur
Avatar de emilie97
emilie97
Auteur

j'ai appliqué ça :

sysctl -w net.core.netdev_budget=1000
sysctl -w net.core.netdev_max_backlog=5000
20/05/2026 à 14:51
emilie97
Auteur
Avatar de emilie97
emilie97
Auteur

depuis les changements sur le budget et le pinning manuel des queues sur les deux sockets les sessions BGP bougent plus. même à 60Gbps constant.

le core 0 respire enfin. le trafic est bien étalé. merci pour le debug bas niveau c'était bien l'irq steering qui foutait la zone sur le control plane.

20/05/2026 à 14:51
emilie97
Auteur
Avatar de emilie97
emilie97
Auteur

je vais automatiser ça avec un script udev pour les prochains nodes. sujet clos.

20/05/2026 à 14:51

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