Présentation des sous-routines de stratégie dans les conditions de correspondance de stratégie de routage
Vous pouvez utiliser une stratégie de routage appelée à partir d’une autre stratégie de routage comme condition de correspondance. Ce processus fait de la stratégie appelée un sous-programme.
À certains égards, le cadre de stratégies de Junos OS ressemble à un langage de programmation. Cette similitude inclut le concept d’imbrication des stratégies dans un sous-programme de stratégie. Un sous-programme d’un logiciel est une section de code à laquelle vous faites régulièrement référence. Un sous-programme de stratégie fonctionne de la même manière : vous référencez une stratégie existante en tant que critère de correspondance dans une autre stratégie. L’équipement de routage évalue d’abord le sous-programme, puis la stratégie principale. L’évaluation du sous-programme renvoie un résultat booléen vrai ou faux à la stratégie principale. Étant donné que vous référencez le sous-programme en tant que critère de correspondance, un résultat réel signifie que la stratégie principale a une correspondance et peut effectuer toutes les actions configurées. Un résultat erroné de la sous-routine, cependant, signifie que la stratégie principale n’a pas de correspondance.
Configuration des sous-routines
Pour configurer un sous-programme d’une stratégie de routage à appeler à partir d’une autre stratégie de routage, créez le sous-programme et spécifiez son nom à l’aide de la condition de correspondance dans l’instruction policy
from
ou d’une autre stratégie de to
routage.
N’évaluez pas une stratégie de routage en elle-même. Par conséquent, aucun préfixe ne correspond à la stratégie de routage.
L’action spécifiée dans un sous-programme est utilisée pour fournir une condition de correspondance à la stratégie appelante. Si le sous-programme spécifie une action d’accept, la stratégie appelante considère que la route est une correspondance. Si le sous-programme spécifie une action de rejet, la stratégie appelante considère que la route ne correspond pas. Si le sous-programme spécifie une action destinée à manipuler les caractéristiques de l’itinéraire, les modifications sont apportées.
Conséquences possibles des actions de résiliation dans les sous-programmes
Un sous-programme avec des instructions particulières peut se comporter différemment d’une stratégie de routage qui contient les mêmes instructions. Avec un sous-programme, vous devez vous rappeler que les éventuelles actions d’arrêt d’acceptation ou de rejet spécifiées par le sous-programme ou la stratégie par défaut peuvent grandement affecter les résultats attendus.
En particulier, vous devez tenir compte de ce qui se passe si une correspondance ne se produit pas avec les routes spécifiées dans un sous-programme et si l’action de stratégie par défaut qui est effectuée est l’action que vous attendez et souhaitez.
Par exemple, imaginez que vous êtes administrateur réseau chez un fournisseur d’accès à Internet (FAI) qui fournit des services au client A. Vous avez configuré plusieurs stratégies de routage pour les différentes classes de voisins que le client A présente sur différents liens. Pour gagner du temps dans la gestion des stratégies de routage pour le client A, vous avez configuré un sous-programme qui identifie ses itinéraires et les différentes stratégies de routage qui appellent le sous-programme, comme indiqué ci-dessous :
[edit] policy-options { policy-statement customer-a-subroutine { from { route-filter 10.1/16 exact; route-filter 10.5/16 exact; route-filter 192.168.10/24 exact; } then accept; } } policy-options { policy-statement send-customer-a-default { from { policy customer-a-subroutine; } then { set metric 500; accept; } } } policy-options { policy-statement send-customer-a-primary { from { policy customer-a-subroutine; } then { set metric 100; accept; } } } policy-options { policy-statement send-customer-a-secondary { from { policy customer-a-subroutine; } then { set metric 200; accept; } } } protocols { bgp { group customer-a { export send-customer-a-default; neighbor 10.1.1.1; neighbor 10.1.2.1; neighbor 10.1.3.1 { export send-customer-a-primary; } neighbor 10.1.4.1 { export send-customer-a-secondary; } } } }
Les résultats suivants se produisent avec cette configuration :
L’instruction au niveau
export
du groupe réinitialise la métrique à 500 lors de la publication de toutes les routes BGP sur les routes voisines 10.1.1.1 et 10.1.2.1 plutôt que sur les routes qui correspondent aux filtres de route du sous-programme.Les instructions de niveau voisin réinitialisent la métrique à 100 et 200 lors de l’annonce de toutes les routes BGP aux voisins 10.1.3.1 et 10.1.4.1, respectivement, plutôt que seulement aux routes BGP qui correspondent aux filtres de route du sous-programme
export
.
Ces résultats inattendus se produisent parce que la stratégie de sous-programme ne spécifie pas d’action de terminaison pour les routes qui ne correspondent pas au filtre de route et que, par conséquent, la stratégie d’exportation BGP par défaut consistant à accepter toutes les routes BGP est appliquée.
Si les instructions incluses dans ce sous-programme particulier avaient été contenues dans les stratégies d’appel elles-mêmes, seules les routes souhaitées verraient leurs métriques réinitialisées.
Cet exemple illustre les différences entre les stratégies et les sous-routines de routage, ainsi que l’importance de l’action de terminaison dans un sous-routine. Ici, l’action de stratégie d’exportation BGP par défaut pour le sous-programme n’a pas été soigneusement prise en compte. Une solution à cet exemple particulier est d’ajouter un terme supplémentaire au sous-programme qui rejette toutes les autres routes qui ne correspondent pas aux filtres de route :
[edit] policy-options { policy-statement customer-a-subroutine { term accept-exact { from { route-filter 10.1/16 exact; route-filter 10.5/16 exact; route-filter 192.168.10/24 exact; } then accept; } term reject-others { then reject; } } }
Les stratégies d’action de terminaison pour les sous-programmes en général sont les suivantes :
Dépend de l’action de stratégie par défaut pour gérer tous les autres itinéraires.
Ajoutez un terme qui accepte tous les autres itinéraires.
Ajoutez un terme qui rejette tous les autres itinéraires.
L’option que vous choisissez dépend de ce que vous voulez réaliser avec votre sous-programme. Planifiez vos sous-programmes avec soin.