Sélection de routage: spécificité vs métrique

17

Je comprends que Linux choisit l' itinéraire le plus spécifique vers la destination lorsqu'il fait la 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.

Eugene Yarmash
la source

Réponses:

26

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.). Le modèle fonctionne donc comme:

  1. Trouver l' itinéraire le plus spécifique (alias la correspondance de préfixe la plus longue * )
  2. S'il existe plusieurs itinéraires avec la même spécificité, choisissez celui qui a la distance administrative la plus faible (cela distingue les éléments tels que les itinéraires directement attachés, les itinéraires statiques et divers protocoles de routage).
  3. Dans ce protocole de routage et itinéraire spécifique (si la spécificité de l'itinéraire et la distance administrative sont les mêmes), choisissez l'itinéraire avec la métrique la plus basse

Notez qu'il y a d'autres choses qui pourraient se passer sur un tel routage basé sur une stratégie qui vous permet de faire des choses comme le routage 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 1 binaires et s'arrêter une fois qu'il atteint un zéro, puis il a correspondu au préfixe.

Kyle Brandt
la source
1
Ce n'est pas tout à fait vrai sous Linux, où il n'y a pas de distinction entre la distance métrique et administrative.
jch
1
@jch Fait quagga et co. imiter AD en définissant la métrique en conséquence? (Pas que votre point ne soit pas vital, juste curieux)
Kyle Brandt
1
Non, Quagga implémente AD en interne dans le zebradémon et envoie uniquement les routes sélectionnées au noyau - de sorte que le noyau n'a jamais besoin de gérer AD. Je devrais vérifier, mais je pense que Quagga définit la métrique du noyau à une valeur constante.
jch
Je veux juste mentionner que cela n'est pas vrai dans les ponts Ethernet, par exemple, deux routes identiques via des appareils différents avec la même métrique ont toujours entraîné une mauvaise gestion du trafic sur la liaison plus longue et incorrecte.
Areeb Soo Yasir
9

Linux fournit un certain nombre d'outils pour une sélection de routage flexible.

Table de routage unique

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:

  • l'itinéraire le plus spécifique;
  • s'il existe plusieurs routes également spécifiques, celle avec la plus petite métrique du noyau.

Notez que la métrique du noyau (affichée par ip route show) est choisie par le démon de routage et n'est pas nécessairement liée à 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.

Itinéraires spécifiques à la source

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.

Plusieurs tables de routage

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 au chapitre 4 du LARTC .

jch
la source
Ce n'est pas ce que fait l' srcattribut. Vous aurez envie de lire man ip-routeou d'autres documents. Et cela fonctionne avec IPv4. Je l'utilise pour obtenir tout le trafic, y compris le trafic du routeur, via un seul tunnel IPSec de réseau à réseau.
Zan Lynx
1
L' RTA_SRCattribut fait exactement ce que j'ai dit; il est accessible avec l' fromoption de la ipcommande. L' option de ipla commande srcdéfinit l' RTA_PREFSRCattribut, qui est ce que vous décrivez.
jch