« Netlink: File exists
A problem in BIRD-Linux kernel routing table synchronization when BIRD tries to overwrite an existing kernel route. There are two common causes:
First, there are some routes in the kernel routing table added by some other tools (like ip or route commands). BIRD does not purge such routes during its start. You could either do not add such routes, or configure BIRD kernel protocol to learn such routes (option learn) and make them preferred (change preference of kernel protocol to higher value) »
On a deux routeurs GNU/Linux.Chacun a une interface réseau dans plusieurs VLAN (représentés par l'OS par des interfaces réseau). Sur ces VLANs, nos routeurs font du CARP. Les deux routeurs font également de l'iBGP pour s'échanger les routes externes à l'AS mais aussi les routes que chacun des routeurs connaît (en les important depuis Linux).
Avec Ganeti, aucun problème puisqu'une machine virtuelle (et donc une route vers elle) est présente sur une seule machine à la fois. Mais pour nos réseaux physiques avec CARP, BIRD voit une route remonter via le protocol kernel et une autre via iBGP... Laquelle choisir ?
Il y a un poids attribué à chaque protocole (Cisco nomme ça « distance administrative »). BIRD fait le choix de privilégier iBGP à kernel. Donc il tente d'ajouter la route apprise en iBGP dans la FIB de Linux... Et Linux lui répond qu'il a déjà une route similaire... BIRD le consigne dans les logs... à la fréquence définie par le paramètre « scan time » du protocol kernel... Soit 5 secondes par ici...
On ne peut pas filtrer ces routes sur l'un ou l'autre des protocoles (question de redondance). On ne peut pas avoir la route uniquement sur une seule interface d'un seul des deux routeurs car ça complexifierait le script ucarp qui devrait savoir pour chaque interface, quelle route ajouter lors d'une migration. De plus, si l'on faisait cela, on aurait un routage sous-optimal : pourquoi routeur2 devrait-il transférer les paquets à routeur1 alors qu'il est directement connecté à ce réseau ?
Solution : celle de la doc' = augmenter la préférence du protocol kernel : « preference 110; ». Il faut restart le protocole kernel concerné pour que la modification prenne effet. Ainsi, les routes importées via ce protocole ont plus d'importance et BIRD ne tentera pas de les remplacer avec la route obtenue en iBGP. Donc plus de conflit donc plus de message d'erreur.
Wed Mar 23 21:08:35 2016 - permalink -
-
https://gitlab.labs.nic.cz/labs/bird/wikis/FAQ