In diesem Dokument werden EEM-Applets (Embedded Event Manager) beschrieben, die in Netzwerken verwendet werden, in denen Performance Routing (PfR) den Datenverkehr über mehrere Border Relays (BRs) optimiert. Einige Weiterleitungsschleifen wurden ebenfalls beobachtet. Die Applets werden verwendet, um Daten zu erfassen, wenn eine Schleife beobachtet wird, und die Auswirkungen einer Weiterleitungsschleife zu mindern.
Es gibt keine spezifischen Anforderungen für dieses Dokument.
Die Informationen in diesem Dokument basieren auf der Cisco IOS®-Software, die EEM Version 4.0 unterstützt.
Verwenden Sie den folgenden Befehl, um die von Ihrer Cisco IOS-Version unterstützte EEM-Version zu überprüfen:
Router#sh event manager version | i Embedded
Embedded Event Manager Version 4.00
Router#
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netz Live ist, überprüfen Sie, ob Sie die mögliche Auswirkung jedes möglichen Befehls verstehen.
Wenn PfR eine Traffic Class (TC) steuert, wird eine dynamische Routing-Map/Access Control List (ACL) für die BRs erstellt. Die Routenübersicht auf einem BR mit einem ausgewählten Ausgang verweist auf einen ausgewählten Ausgang, während eine Routenübersicht auf anderen BRs auf eine interne Schnittstelle verweist (next-hop = selected BR).
Ein Problem tritt auf, wenn die dynamischen ACLs nicht richtig zwischen den verschiedenen BRs synchronisiert sind (z. B. aufgrund von Bugs).
In diesem Bild liegt der Schwerpunkt auf dem Abgleich aller an 172.16.1.0/24 gerichteten IP-Pakete mit DSCP EF. In diesem Szenario wird der zugehörige ACL-Eintrag aus dem ausgewählten BR (BR-2) entfernt, nicht jedoch aus BR-1. Pakete dieses TC treffen auf BR-2 mit dem Präfixeintrag, der allen IP-Paketen entspricht, die an 172.16.1.0/24 gerichtet sind. Der für den Präfixeintrag ausgewählte Ausgang ist Exit-1, sodass die zugehörige Route-Map/ACL auf BR-2 auf BR-1 verweist.
Die Pakete dieses TC werden nun zwischen den BRs schleifen, bis die Time To Live (TTL) 0 erreicht.
Dieses Dokument enthält die erforderlichen EEM-Applets für die folgenden Aufgaben:
Die Applets, die bei einer Kombination aus Master Controller (MC) und BR verwendet werden, sind wesentlich einfacher (wenn MC auf einem der BRs ausgeführt wird). Das Szenario mit dedizierten MCs wird ebenfalls behandelt.
In diesem Abschnitt werden die für diesen Prozess verwendeten Zugriffslisten sowie die Applet-Protokolldateien beschrieben.
Zur Erkennung von Weiterleitungsschleifen benötigt das Applet eine ACL, um Pakete mit niedriger TTL abzugleichen.
Es wird empfohlen, den ACE-Matching auf zwei aufeinander folgenden, relativ niedrigen TTL-Werten (20 und 21) zu verwenden, um einen (und nur einen) Treffer für jedes Paket zu erhalten, das zwischen BRs schleift. Der verwendete TTL-Wert sollte nicht zu niedrig sein, um häufige Treffer von Traceroute-Paketen zu vermeiden.
interface gig0/0 (internal interface)
ip access-group LOOP in
!
ip access-list extended LOOP
permit ip 10.116.48.0 0.0.31.255 any ttl range 20 21
permit ip any any
Die ACL sollte auf der internen Schnittstelle platziert werden, die in der Ausgabe des Befehls show pfr master border topology (Topologie des Pfr-Masters) angegeben ist.
Der Quell-IP-Bereich (hier: 10.116.48.0/20) sollte mit dem bzw. den internen Netzwerken übereinstimmen (Präfixe, die über interne Schnittstellen erreichbar sind).
Um festzustellen, welcher Remote-Standort/TC von dem Loop betroffen ist, können Sie eine zweite ausgehende ACL an der Schnittstelle hinzufügen, mit spezifischeren ACEs für jeden Remote-Standort/TC.
interface gig0/0 (internal interface)
ip access-group LOOP-DETAIL out
!
ip access-list extended LOOP-DETAIL
permit ip 10.116.48.0 0.0.31.255 10.116.132.0 0.0.0.255 ttl range 20 21
permit ip 10.116.48.0 0.0.31.255 10.116.128.0 0.0.0.255 ttl range 20 21
.... (add here one line per remote site)
permit ip any an
Die Ziel-IP stimmt mit dem Subnetz der verschiedenen Remote-Standorte überein:
10.116.132.0/24 -> site-1
10.116.128.0/24 -> site-2
Sie können auch mehrere Leitungen pro Remote-Standort hinzufügen, wenn Sie den genauen TC-Wert identifizieren müssen, der von der Schleife betroffen ist.
Das Applet überprüft alle dreißig Sekunden die Zugriffszahlen des ACE-Matchings auf der TTL in der ACL-Schleife. Basierend auf den Ergebnissen dieser Prüfungen kann das Applet folgende Aufgaben ausführen:
Das Applet verwaltet eine Protokolldatei, die die Anzahl der Trefferzähler (wenn die Anzahl größer als 0 ist) und alle Begegnungen von temporären Schleifen (wenn THRESHOLD_1 überschritten wird, aber nicht THRESHOLD_2) oder einer realen Schleife (wenn sowohl THRESHOLD_1 als auch THRESHOLD_2 überschritten werden) verfolgt.
Dies sind die einfachsten Szenarien, die in diesem Dokument beschrieben werden. Die Schleifenerkennung und das PfR-Löschen erfolgen auf demselben Gerät, sodass die EEM-Appletkommunikation des Geräts nicht erforderlich ist. Ein separates Applet wird auf einer MC/BR-Kombination und anderen BRs ausgeführt.
Diese Ausgabe zeigt wichtige Informationen für das Applet an, das für die MC/BR-Kombination verwendet wird. Hier sind einige wichtige Hinweise für diese spezifische Ausgabe:
event manager environment THRESHOLD_1 1000
event manager environment THRESHOLD_2 500
event manager environment DISK bootflash
!
event manager applet LOOP-MON authorization bypass
event timer watchdog name LOOP time 30
action 100 cli command "enable"
action 110 cli command "show ip access-list LOOP"
action 120 set regexp_substr 0
action 130 regexp "range 20 21 \(([0-9]+) matches\)"
$_cli_result _regexp_result regexp_substr
action 140 cli command "clear ip access-list counters LOOP"
action 150 if $regexp_substr gt 0
action 200 set MATCHES $regexp_substr
action 210 file open LOGS $DISK:script-logs.txt a
action 220 cli command "enable"
action 230 cli command "show clock"
action 240 regexp "[0-9]+:[0-9]+:[0-9]+.[0-9]+ est [A-Za-z]+
[A-Za-z]+ [0-9]+ 201[0-9]" $_cli_result _regexp_result
action 250 set TIME $_regexp_result
action 260 if $MATCHES gt $THRESHOLD_1
action 270 wait 15
action 280 cli command "show ip access-list LOOP"
action 290 set regexp_substr 0
action 300 regexp "range 20 21 \(([0-9]+) matches\)"
$_cli_result _regexp_result regexp_substr
action 310 if $regexp_substr gt $THRESHOLD_2
action 320 cli command "enable"
action 330 cli command "show ip access-list LOOP-DETAIL
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 340 cli command "show pfr master traffic-class perf det
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 350 cli command "show route-map dynamic detail
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 360 cli command "show ip route
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 370 cli command "clear pfr master *"
action 380 cli command "clear ip access-list counters LOOP-DETAIL"
action 390 file puts LOGS "$TIME - LOOP DETECTED - PfR CLEARED -
matches $MATCHES > $THRESHOLD_1 and $regexp_substr
> $THRESHOLD_2 - see $DISK:script-output-$_event_pub_sec.txt"
action 400 syslog priority emergencies msg "LOOP DETECTED -
PfR CLEARED - see $DISK:script-output-$_event_pub_sec.txt !"
action 410 else
action 420 file puts LOGS "$TIME - TEMPORARY LOOP : matches
$MATCHES > $THRESHOLD_1 and $regexp_substr < or = $THRESHOLD_2"
action 430 cli command "clear ip access-list counters LOOP-DETAIL"
action 440 end
action 450 else
action 460 cli command "en"
action 470 cli command "clear ip access-list counters LOOP-DETAIL"
action 480 file puts LOGS "$TIME - number of matches =
$MATCHES < $THRESHOLD_1"
action 490 end
action 500 else
action 510 cli command "clear ip access-list counters LOOP-DETAIL"
action 520 end
In diesem Abschnitt wird das Applet beschrieben, das für andere BRs verwendet wird. Hier sind einige wichtige Hinweise für diese spezifische Ausgabe:
event manager environment THRESHOLD 700
event manager environment DISK flash 0
!
event manager applet LOOP-BR authorization bypass
event timer watchdog name LOOP time 20
action 100 cli command "enable"
action 110 cli command "show ip access-list LOOP"
action 120 set regexp_substr 0
action 130 regexp "range 20 21 \(([0-9]+) matches\)"
$_cli_result _regexp_result regexp_substr
action 140 cli command "clear ip access-list counters LOOP"
action 150 if $regexp_substr gt 0
action 160 set MATCHES $regexp_substr
action 170 file open LOGS $DISK:script-logs.txt a
action 180 cli command "show clock"
action 190 regexp "[0-9]+:[0-9]+:[0-9]+.[0-9]+
est [A-Za-z]+ [A-Za-z]+ [0-9]+ 201[0-9]" $_cli_result _regexp_result
action 200 set TIME $_regexp_result
action 210 if $MATCHES gt $THRESHOLD
action 220 cli command "enable"
action 230 cli command "show route-map dynamic detail | tee /append
$DISK:script-output-$_event_pub_sec.txt"
action 240 cli command "show ip route | tee /append
$DISK:script-output-$_event_pub_sec.txt"
action 250 file puts LOGS "$TIME : matches = $MATCHES >
$THRESHOLD - see $DISK:script-output-$_event_pub_sec.txt"
action 260 syslog priority emergencies msg "LOOP DETECTED -
Outputs captured - see $DISK:script-output-$_event_pub_sec.txt !"
action 270 else
action 280 file puts LOGS "$TIME : matches = $MATCHES < or = $THRESHOLD"
action 290 end
action 300 end
Die Schleifenerkennung und die PfR-Freigabe-/Statistiksammlung werden auf verschiedenen Geräten durchgeführt, die über eine EEM-Applet-Kommunikation zwischen den Geräten verfügen müssen. Die Kommunikation zwischen den Geräten erfolgt auf unterschiedliche Weise. Dieses Dokument beschreibt die Gerätekommunikation über verfolgte Objekte, um die Erreichbarkeit dedizierter Loopbacks zu prüfen, die im IGP angekündigt werden. Wenn ein Ereignis erkannt wird, wird der Loopback deaktiviert, sodass Applets auf Remote-Geräten gestartet werden können, wenn das verfolgte Objekt offline geht. Sie können verschiedene Loopbacks verwenden, wenn unterschiedliche Informationen ausgetauscht werden müssen.
Diese Applets und Kommunikationsmethoden werden verwendet:
Applet-Name | Dabei gilt? | Was? | Auslöser? | Kommunikation? |
LOOP-BR | BRs | ACL-Trefferzähler überprüfen, um Schleifen zu erkennen |
Periodisch | Loop100 schließen |
LOOP-MC | MC | - Sammeln von PfR-Informationen - Löscht PfR |
Track Reachability Loop100 | Loop200 schließen |
COLLECT-BR | BRs | Informationen sammeln | Track Reachability Loop200 | none |
Hier ist ein Bild, das dies veranschaulicht:
Dies ist der von den Applets verwendete Prozess:
In diesem Abschnitt wird beschrieben, wie Sie Loopbacks erstellen (sicherstellen, dass die IPs auf dem IGP angekündigt werden) und Objekte nachverfolgen.
Hier sind einige wichtige Punkte, die Sie beachten sollten, wenn Sie Trackobjekte erstellen:
BR-1
interface Loopback100
ip address 10.100.100.1 255.255.255.255
!
track timer ip route 1
track 1 ip route 10.100.100.200 255.255.255.255 reachability
BR-2
interface Loopback100
ip address 10.100.100.2 255.255.255.255
!
track timer ip route 1
track 1 ip route 10.100.100.200 255.255.255.255 reachability
MC
interface Loopback200
ip address 10.100.100.200 255.255.255.255
!
track timer ip route 1
track 1 ip route 10.100.100.1 255.255.255.255 reachability
track 2 ip route 10.100.100.2 255.255.255.255 reachability
track 11 ip route 10.116.100.1 255.255.255.255 reachability
track 12 ip route 10.116.100.2 255.255.255.255 reachability
track 20 list boolean and
object 11
object 12
LOOP-BR
In diesem Abschnitt wird beschrieben, wie Sie Loopbacks auf den BRs erstellen. Beachten Sie dabei folgende wichtige Hinweise:
event manager environment THRESHOLD_1 100event manager environment
THRESHOLD_2 500event manager environment DISK bootflash
!event manager applet LOOP-BR authorization bypass
event timer watchdog name LOOP time 30 maxrun 27
action 100 cli command "enable"
action 110 cli command "show ip access-list LOOP"
action 120 set regexp_substr 0
action 130 regexp "range 20 21 \(([0-9]+) matches\)"
$_cli_result _regexp_result regexp_substr
action 140 cli command "clear ip access-list counters LOOP"
action 150 if $regexp_substr gt 0
action 200 set MATCHES $regexp_substr
action 210 file open LOGS $DISK:script-detect-logs.txt a
action 220 cli command "enable"
action 230 cli command "show clock"
action 240 regexp "[0-9]+:[0-9]+:[0-9]+.[0-9]+
est [A-Za-z]+ [A-Za-z]+ [0-9]+ 201[0-9]"
$_cli_result _regexp_result
action 250 set TIME $_regexp_result
action 260 if $MATCHES gt $THRESHOLD_1
action 270 wait 15
action 280 cli command "show ip access-list LOOP"
action 290 set regexp_substr 0
action 300 regexp "range 20 21 \(([0-9]+) matches\)"
$_cli_result _regexp_result regexp_substr
action 310 if $regexp_substr gt $THRESHOLD_2
action 320 cli command "enable"
action 330 cli command "conf t"
action 340 cli command "interface loop100"
action 350 cli command "shut"
action 360 file puts LOGS "$TIME - LOOP DETECTED - Message sent to MC -
matches $MATCHES > $THRESHOLD_1 and $regexp_substr > $THRESHOLD_2"
action 370 wait 5
action 375 cli command "enable"
action 380 cli command "conf t"
action 390 cli command "interface loop100"
action 400 cli command "no shut"
action 410 else
action 420 file puts LOGS "$TIME - TEMPORARY LOOP : matches $MATCHES >
$THRESHOLD_1 and $regexp_substr < or = $THRESHOLD_2"
action 430 cli command "clear ip access-list counters LOOP-DETAIL"
action 440 end
action 450 else
action 460 cli command "en"
action 470 cli command "clear ip access-list counters LOOP-DETAIL"
action 480 file puts LOGS "$TIME - number of matches =
$MATCHES < $THRESHOLD_1"
action 490 end
action 500 else
action 510 cli command "clear ip access-list counters LOOP-DETAIL"
action 520 end
LOOP-MC
In diesem Abschnitt wird beschrieben, wie Sie Loopbacks auf dem MC erstellen. Beachten Sie dabei folgende wichtige Hinweise:
event manage environment DISK bootflash
event manager applet LOOP-MC authorization bypass
event syslog pattern "10.100.100.[0-9]/32 reachability Up->Dow" ratelimit 60
action 100 file open LOGS $DISK:script-logs.txt a
action 110 regexp "10.100.100.[0-9]" "$_syslog_msg" _regexp_result
action 120 set BR $_regexp_result
action 130 wait 2
action 140 track read 20
action 150 if $_track_state eq "up"
action 160 cli command "enable"
action 170 cli command "show clock"
action 180 regexp "[0-9]+:[0-9]+:[0-9]+.[0-9]+
est [A-Za-z]+ [A-Za-z]+ [0-9]+ 201[0-9]"
"$_cli_result" _regexp_result
action 190 set TIME "$_regexp_result"
action 200 cli command "show pfr master traffic-class perf det
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 210 cli command "conf t"
action 220 cli command "interface loop200"
action 230 cli command "shut"
action 240 wait 10
action 250 cli command "conf t"
action 260 cli command "interface loop200"
action 270 cli command "no shut"
action 280 cli command "end"
action 290 cli command "clear pfr master *"
action 300 file puts LOGS "$TIME - LOOP DETECTED by $BR -
PfR CLEARED - see $DISK:script-output-$_event_pub_sec.txt"
action 310 syslog priority emergencies msg "LOOP DETECTED by $BR -
PfR CLEARED - see $DISK:script-output-$_event_pub_sec.txt !"
action 320 else
action 330 file puts LOGS "$TIME - REACHABILITY LOST with
$BR - REACHABILITY TO ALL BRs NOT OK - NO ACTION"
action 340 end
COLLECT-BR
In diesem Abschnitt wird beschrieben, wie Sie die BR sammeln. Das Applet wird gestartet, wenn die Erreichbarkeit eines BR für Loopback200 (10.100.100.200) auf dem MC unterbrochen wird. Die zum Sammeln verwendeten Befehle sind in den Aktionen 120, 130 und 140 aufgeführt.
event manager environment DISK bootflash
event manager applet COLLECT-BR authorization bypass
event syslog pattern "10.100.100.200/32 reachability Up->Dow" ratelimit 45
action 100 file open LOGS $DISK:script-collect-logs.txt a
action 110 cli command "enable"
action 120 cli command "sh ip access-list LOOP-DETAIL |
tee /append $DISK:script-output-$_event_pub_sec.txt"
action 130 cli command "show route-map dynamic detail
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 140 cli command "show ip route | tee /append
$DISK:script-output-$_event_pub_sec.txt"
action 150 cli command "show clock"
action 160 regexp "[0-9]+:[0-9]+:[0-9]+.[0-9]+ CET [A-Za-z]+ [A-Za-z]+
[0-9]+ 201[0-9]" "$_cli_result" _regexp_result
action 170 set TIME "$_regexp_result"
action 180 file puts LOGS "$TIME - OUTPUTs COLLECTED -
see $DISK:script-output-$_event_pub_sec.txt"
SYSLOG-MC
Im Folgenden wird das Syslog des MC angezeigt, wenn eine Schleife erkannt wird:
MC#
*Mar 8 08:52:12.529: %TRACKING-5-STATE: 1 ip route 10.100.100.1/32
reachability Up->Down
MC#
*Mar 8 08:52:16.683: %LINEPROTO-5-UPDOWN:
Line protocol on Interface Loopback200, changed state to down
*Mar 8 08:52:16.683: %LINK-5-CHANGED: Interface Loopback200,
changed state to administratively down
MC#
*Mar 8 08:52:19.531: %TRACKING-5-STATE: 1
ip route 10.100.100.1/32 reachability Down->Up
MC#
*Mar 8 08:52:24.727: %SYS-5-CONFIG_I: Configured from console by
on vty0 (EEM:LOOP-MC)
*Mar 8 08:52:24.744: %PFR_MC-1-ALERT: MC is inactive due to PfR
minimum requirements not met;
Less than two external interfaces are operational
MC#
*Mar 8 08:52:24.757: %HA_EM-0-LOG: LOOP-MC:
LOOP DETECTED by 10.100.100.1 - PfR CLEARED
- see unix:script-output-1362732732.txt !
MC#
*Mar 8 08:52:26.723: %LINEPROTO-5-UPDOWN:
Line protocol on Interface Loopback200, changed state to up
MC#
*Mar 8 08:52:26.723: %LINK-3-UPDOWN: Interface Loopback200,
changed state to up
MC#
*Mar 8 08:52:29.840: %PFR_MC-5-MC_STATUS_CHANGE: MC is UP
*Mar 8 08:52:30.549: %TRACKING-5-STATE: 2
ip route 10.100.100.2/32 reachability Up->Down
MC#
*Mar 8 08:52:37.549: %TRACKING-5-STATE: 2
ip route 10.100.100.2/32 reachability Down->Up
MC#
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
27-May-2013 |
Erstveröffentlichung |