Einleitung
In diesem Dokument wird die richtige Methode zum Konfigurieren und Anzeigen einer Routing-Map im Konfigurationsmodus beschrieben. Insbesondere wird die Bedeutung der Angabe der Aktion (Zulassen oder Verweigern) und der Sequenznummer hervorgehoben.
Hintergrundinformationen
Es wird ein beobachtetes Verhalten behoben, bei dem ein ursprünglich mit einer deny-Aktion konfigurierter route-map-Eintrag sich anscheinend unerwartet geändert hat.
Problem
Wenn in Cisco IOS® XE eine Route Map eingegeben wird, ohne explizit eine Aktion (Zulassen/Verweigern) und eine Sequenznummer anzugeben, verwendet die CLI standardmäßig die Aktion Zulassen. Dies kann das Verhalten der route-map versehentlich ändern, wenn Administratoren die Syntax nicht sorgfältig verwenden.
Beobachtetes Verhalten
Bei Anwendung dieser Konfiguration:
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
Die erwartete Ausgabe ist:
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
Bei erneuter Eingabe von route-map TEST1 ohne Angabe der Reihenfolge oder Aktion wie folgt:
router(config)#route-map TEST1
router(config-route-map)#do sh run | sec TEST1
Die CLI-Ausgabe zeigt unerwartet Folgendes an:
route-map TEST1 permit 1
match ip address prefix-list PREFIXES
route-map TEST1 permit 10
match ip address prefix-list FIX
Zeigt an, dass der ursprünglich konfigurierte Eintrag "deny 1" geändert wurde, um "1" zuzulassen.
Erwartetes CLI-Verhalten
・ Wenn Sie den Befehl router(config)# route-map TEST1 ohne Angabe einer Aktion (Zulassen oder Verweigern) und einer Sequenznummer eingeben, geht der Parser davon aus, dass Sie standardmäßig "Zulassen" meinten.
・ Sobald Sie diesen Submodus beenden, schreibt Cisco IOS XE die erste Sequenz um und ändert die Aktion von "Verweigern" in "Zulassen", da keine explizite Aktion angegeben wurde. Durch einfaches Eingeben von route-map <Name> ohne Sequenznummer wird standardmäßig Sequenz 10 als permit eingegeben. Dieses Verhalten kann eventuell vorherige Einträge überschreiben, wenn sie nicht sorgfältig angegeben werden.
Mit anderen Worten: Die Änderung wird nicht durch einen unbekannten Prozess ausgelöst, sondern einfach durch die Standardbehandlung eines unvollständigen route-map-Befehls durch die CLI.
Um die Verweigerung in der ersten Anweisung beizubehalten, müssen Sie immer sowohl die Aktion als auch die Sequenznummer angeben. Beispiel:
router(config)# route-map TEST1 deny 1.
Warum dies geschieht
Dabei handelt es sich nicht um einen Fehler, sondern um ein beabsichtigtes Verhalten des CLI-Parsers Cisco IOS XE. Sie hält sich an folgende Regeln:
- Wird eine Route-Map ohne Sequenznummer aufgerufen, wird von Sequenz 10 ausgegangen.
- Wenn keine Aktion angegeben ist, wird permit als Standardwert verwendet.
- Wenn eine vorhandene Routing-Map ohne Details erneut eingegeben wird, kann das IOS Standardaktionen neu zuweisen und vorherige Einträge unbeabsichtigt ändern.
Lösung
Um das beabsichtigte Verhalten der Routing-Map-Konfiguration beizubehalten, sollten Sie immer beide Aspekte berücksichtigen:
- die Handlung (Zulassen oder Verweigern)
- und die Sequenznummer
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
Empfohlene Implementierungsmethode
Die Konfigurationsausgänge zur Referenz sind hier genannt. Das Befehlsverhalten spiegelt die Wichtigkeit richtig definierter Sequenznummern wider und wie die Reihenfolge des Einfügens von permit/deny die aufsteigende Anordnung der Sequenznummern in der laufenden Konfiguration nicht beeinflusst.
Beispiel 1. Falsche CLI-Verwendung, die zu einer Standardgenehmigung führt
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
Notieren Sie, wie "deny 1" zu "permit 1" wird. Fügen Sie stattdessen die Aktion zusammen mit der Sequenznummer hinzu, um die richtige Konfiguration von route-map beizubehalten:
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
Beispiel 2. Sequenzauftrag wird unabhängig von der Eingangsbestellung verwaltet
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
Obwohl die deny-Anweisung zuerst eingegeben wurde, sortiert die CLI nach aufsteigender Sequenznummer und nicht nach der Konfigurationsreihenfolge.
Schlussfolgerung
Bei der Konfiguration von Routing-Maps in Cisco IOS-XE immer Folgendes definieren:
- die Sequenznummer
- und die Aktion
Andernfalls kann es aufgrund von CLI-Standardwerten zu unerwartetem Verhalten kommen. Diese Nuancen sind wichtig, um genaue Routing-Richtlinienkonfigurationen zu erhalten.