Je comprends que Linux choisit la route la plus spécifique vers la destination quand il le fait sélection de routage . Mais qu'en est-il de la métrique d'un itinéraire? At-il une priorité plus élevée que la spécificité de l'itinéraire?
Une référence aux détails de l'algorithme de sélection de routage utilisé par Linux serait également appréciée.
La métrique des itinéraires consiste à définir la préférence parmi les itinéraires avec une spécificité égale. Cela est vrai du routage en général (c'est-à-dire Cisco, Windows, etc.). Donc, le modèle fonctionne comme:
Notez qu'il y a d'autres choses qui pourraient se passer sur un tel routage basé sur la politique qui vous permet de faire des choses comme l'itinéraire basé sur l'adresse IP source. Mais la spécificité de l'itinéraire, la distance administrative, puis la métrique sont ce que je considérerais comme les trois principales choses.
* On l'appelle la correspondance de préfixe la plus longue car un sous-réseau en binaire (/ 24 par exemple) ressemble à 11111111.11111111.11111111.00000000
. Ainsi, un routeur peut simplement scanner le préfixe pour les binaires 1 et s'arrêter une fois qu'il atteint un zéro, puis il a correspondu au préfixe.
Linux fournit un certain nombre d'outils pour une sélection de routage flexible.
Dans le cas le plus simple, il n'y a qu'une seule table de routage du noyau et aucune route avec l'attribut SRC. Ce tableau contient un certain nombre de routes, qui y ont été placées manuellement (ip route add
), par le démon DHCP ou par des démons de routage. Dans ce cas, le noyau choisit:
Notez que la métrique du noyau (affichée par ip route show
) est choisi par le démon de routage et n'est pas nécessairement lié à la métrique d'un protocole de routage particulier. Par exemple, Quagga utilise la même métrique pour toutes les routes qu'il installe dans le noyau, indépendamment de la métrique du protocole.
Linux prend également en charge les itinéraires avec un attribut SRC qui ne correspondent qu'aux paquets avec une adresse source donnée. SRC ne fonctionne que pour IPv6 et était buggé jusqu'à très récemment (3.11, si la mémoire est bonne); Je ne recommande pas de l'utiliser sauf si vous savez ce que vous faites.
Si vous avez besoin de plus de flexibilité que ce qui précède, vous devrez jouer avec plusieurs tables de routage et écrire des règles pour choisir une table de routage particulière pour chaque paquet. Une technique courante consiste à répartir sur l'adresse source afin de simuler des itinéraires spécifiques à la source. Une autre technique consiste à exécuter chaque démon de routage dans sa propre table de routage et à simuler la "distance administrative" de Cisco. Tout cela est décrit en détail dans Chapitre 4 du LARTC .