Introduction
Ce document décrit la méthode correcte pour configurer et afficher une route-map dans le mode de configuration, en soulignant en particulier l'importance de spécifier l'action (permit ou deny) et le numéro de séquence.
Informations générales
Il répond à un comportement observé où une entrée de route-map initialement configurée avec une action de refus semble avoir changé pour autoriser de manière inattendue.
Problème
Dans Cisco IOS® XE, si une route-map est entrée sans spécifier explicitement une action (permit/deny) et un numéro d'ordre, l'interface de ligne de commande (CLI) utilise par défaut l'action permit. Cela peut modifier par inadvertance le comportement de la route-map si les administrateurs ne font pas attention à la syntaxe.
Comportement observé
Lorsque cette configuration est appliquée :
router(config)#route-map TEST1 deny 1
router(config-route-map)#match ip address prefix-list PREFIXES
router(config-route-map)#exit
router(config)#route-map TEST1 permit 10
router(config-route-map)#match ip address prefix-list FIX
router(config-route-map)#exit
Le résultat attendu est le suivant :
router(config)#do sh run | sec TEST1
route-map TEST1 deny 1
match ip address prefix-list PREFIXES
route-map TEST1 permit 10
match ip address prefix-list FIX
Cependant, lors de la nouvelle saisie de la route-map TEST1 sans spécifier de séquence ni d’action, comme indiqué :
router(config)#route-map TEST1
router(config-route-map)#do sh run | sec TEST1
Le résultat de la CLI indique de manière inattendue :
route-map TEST1 permit 1
match ip address prefix-list PREFIXES
route-map TEST1 permit 10
match ip address prefix-list FIX
Cela indique que l'entrée deny 1 configurée à l'origine a été modifiée pour autoriser 1.
Comportement CLI attendu
· Lorsque vous entrez la commande router(config)# route-map TEST1 sans spécifier d’action (permit ou deny) ni de numéro d’ordre, l’analyseur suppose que vous entendez « permit » par défaut.
· Dès que vous quittez ce sous-mode, Cisco IOS XE réécrit la première séquence et change l'action de deny en permit car aucune action explicite n'a été fournie. La simple saisie de route-map <name> sans numéro de séquence permet d'entrer la séquence 10 par défaut. Ce comportement peut parfois remplacer les entrées précédentes si elles ne sont pas spécifiées avec soin.
En d’autres termes, la modification n’est pas déclenchée par un processus invisible, mais simplement par la gestion par défaut d’une commande route-map incomplète par l’interface de ligne de commande.
Afin de conserver le refus dans la première instruction, incluez toujours l'action et le numéro d'ordre, par exemple :
router(config)# route-map TEST1 deny 1.
Pourquoi cela se produit
Il ne s'agit pas d'un bogue, mais d'un comportement prévu de l'analyseur CLI de Cisco IOS XE. Il respecte les règles suivantes :
- Si une route-map est appelée sans numéro de séquence, la séquence 10 est supposée.
- Si aucune action n'est spécifiée, permit est la valeur par défaut.
- Si vous entrez à nouveau une route-map existante sans détails, IOS peut réaffecter les actions par défaut, en modifiant involontairement les entrées précédentes.
Solution
Afin de préserver le comportement prévu de votre configuration de route-map, incluez toujours les deux éléments suivants :
- l'action (permit ou deny)
- et le numéro de séquence
router(config)#route-map TEST1 deny 1 >>>>>>>>>>>>>>> This ensures IOS-XE does not override the entry with default values.
router(config-route-map)#do sh run | sec route-map TES
route-map TEST1 deny 1
match ip address prefix-list ALL-PREFIXES
route-map TEST1 permit 10
match ip address prefix-list ALL-VPN-FIX
Méthode Recommandée Pour La Mise En Oeuvre
Les sorties de configuration pour référence sont mentionnées ici. Le comportement de la commande reflète l'importance de numéros d'ordre correctement définis et la manière dont l'ordre d'insertion de permit/deny n'affecte pas l'ordre croissant des numéros d'ordre dans la configuration en cours.
Exemple 1. Utilisation incorrecte de la CLI conduisant à l'autorisation par défaut
ASR1002-1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ASR1002-1(config)#route-map TEST deny 1
ASR1002-1(config-route-map)#$dress prefix-list ALL-PREFIXES
ASR1002-1(config-route-map)#exit
ASR1002-1(config)#route-map TEST permit 10
ASR1002-1(config-route-map)#$dress prefix-list ALL-VPN-FIX
ASR1002-1(config-route-map)#exit
ASR1002-1(config)#do sh run | sec TEST
route-map TEST deny 1
match ip address prefix-list ALL-PREFIXES
route-map TEST permit 10
match ip address prefix-list ALL-VPN-FIX
ASR1002-1(config)#exit
ASR1002-1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ASR1002-1(config)#route-map TEST
ASR1002-1(config-route-map)#do sh run | sec route-map TES
route-map TEST permit 1
match ip address prefix-list ALL-PREFIXES
route-map TEST permit 10
match ip address prefix-list ALL-VPN-FIX
ASR1002-1(config-route-map)#exit
Notez comment deny 1 devient permit 1. À la place, incluez l’action avec le numéro de séquence afin de maintenir la configuration correcte de route-map :
ASR1002-1(config)#route-map TEST deny 1
ASR1002-1(config-route-map)#do sh run | sec route-map TES
route-map TEST deny 1
match ip address prefix-list ALL-PREFIXES
route-map TEST permit 10
match ip address prefix-list ALL-VPN-FIX
Exemple 2. Ordre de séquence maintenu indépendamment de l'ordre d'entrée
ASR1001-1(config)#route-map test deny 50
ASR1001-1(config-route-map)#^Z
ASR1001-1#show running-config | sec route-map
route-map test deny 50
ASR1001-1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ASR1001-1(config)#route-map test permit 40
ASR1001-1(config-route-map)#^Z
ASR1001-1#show running-config | sec route-map
route-map test permit 40
route-map test deny 50
ASR1001-1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ASR1001-1#show running-config | sec route-map
route-map test permit 40
route-map test deny 50
Bien que l'instruction deny ait été entrée en premier, l'interface de ligne de commande trie par numéro d'ordre croissant et non par ordre de configuration.
Conclusion
Lorsque vous configurez des cartes de routage dans Cisco IOS-XE, définissez toujours :
- le numéro d'ordre
- et l'action
Si vous ne le faites pas, vous risquez d'obtenir un comportement inattendu en raison des valeurs par défaut de la CLI. La compréhension de ces nuances est essentielle pour maintenir des configurations de politiques de routage précises.