5. Échanger les routes entre Bird et le système

Dans la section précédente, tous les échanges de préfixes réseau IPv4 et IPv6 se font entre les démons Bird installés sur les trois routeurs de la topologie étudiée. Il faut maintenant être capable d'échanger les résultats des traitements OSPFv2 et OSPFv3 avec le sous-système réseau du noyau de chaque routeur.

  • Sur R1, les deux démons Bird doivent importer la route par défaut déjà connue au niveau système. De plus, les routes vers les réseaux fictifs de R2 et R3 apprise via OSPF doivent être exportées vers le sous-système réseau du noyau de R1.

  • Sur les routeurs R2 et R3, les routes par défaut apprises via OSPF doivent être exportées vers le sous-système réseau du noyau. De plus les routes des réseaux fictifs doivent être importées dans les démons Bird pour être publiées via OSPF.

[Avertissement] Avertissement

Les résultats des questions de cette section ne sont visibles que si les routes sont déjà présentes, soit dans les démons de routage Bird, soit au niveau système.

Q14.

Comment faire pour que les routes connues du sous-système réseau du noyau Linux soient importées dans les deux démons bird et bird6 ?

Consulter la section kernel de la documentation BIRD User's Guide à la recherche des paramètres d'importation. Les commandes utiles pour cette question sont les suivantes.

import
learn switch

Pour cette question, les configurations des démons bird et bird6 sont identiques quel que soit le routeur considéré. Voici un extrait de fichier de configuration.

R1:~# sed -n '/protocol kernel/,/^}/p' /etc/bird/bird.conf
protocol kernel {
        scan time 10;
        import all;
        learn yes;
#       export all;   # Actually insert routes into the kernel routing table
}

Tant que les questions sur l'ajout de réseaux fictifs ne sont pas traitées, seul les démons du routeur R1 ont un résultat observable. Les routes par défaut sont importées dans les démons Bird.

R1:~# birdc show route 0.0.0.0/0
BIRD 1.6.4 ready.
0.0.0.0/0          via 192.0.2.1 on eth0 [kernel1 13:47:04] * (10)
R1:~# birdc6 show route ::/0
BIRD 1.6.4 ready.
::/0               via fe80::dc02:44ff:fe64:4834 on eth0 [kernel1 2018-10-21] * (10)

Q15.

Comment faire pour que les routes calculées par les processus bird et bird6 soient soumises au sous-système réseau du noyau Linux ?

Consulter la section kernel de la documentation BIRD User's Guide à la recherche des paramètres d'exportation. La commande utile pour cette question est la suivante.

export

En reprenant l'exemple du routeur R1, la configuration des blocs d'instructions kernel de chaque processus devient :

R1:~# sed -n '/protocol kernel/,/^}/p' /etc/bird/bird.conf
protocol kernel {
        scan time 10;
        import all;
        learn yes;
        export all;   # Actually insert routes into the kernel routing table
}

Avec la commande ip au niveau système, on voit apparaître les «sources» d'alimentation de la table de routage du système en question : kernel et bird.

R1:~# ip route ls
default via 192.0.2.1 dev eth0 onlink
10.1.12.0/26 dev eth0.12 proto kernel scope link src 10.1.12.1
10.1.13.0/26 dev eth0.13 proto kernel scope link src 10.1.13.1
10.1.23.0/26 proto bird
        nexthop via 10.1.12.2 dev eth0.12 weight 1
        nexthop via 10.1.13.3 dev eth0.13 weight 1
192.0.2.0/27 dev eth0 proto kernel scope link src 192.0.2.7
R1:~# ip -6 route ls
2001:678:3fc:a::/64 dev eth0 proto kernel metric 256 pref medium
2001:678:3fc:c::/64 dev eth0.12 proto kernel metric 256 pref medium
2001:678:3fc:d::/64 dev eth0.13 proto kernel metric 256 pref medium
2001:678:3fc:17::/64 proto bird metric 1024
        nexthop via fe80::3032:e9ff:fe73:6322 dev eth0.13 weight 1
        nexthop via fe80::943a:41ff:fe65:7307 dev eth0.12 weight 1 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth0.12 proto kernel metric 256 pref medium
fe80::/64 dev eth0.13 proto kernel metric 256 pref medium
default via fe80::dc02:44ff:fe64:4834 dev eth0 metric 1024 onlink pref medium