Dit document beschrijft ingesloten gebeurtenisbeheer (EEM) applets die worden gebruikt in netwerken waar Performance Routing (PfR) het verkeer optimaliseert via meerdere border relais (BRs). Er worden ook enkele doorschakellijnen waargenomen. De applets worden gebruikt om gegevens te verzamelen wanneer een lus wordt waargenomen en om het effect van een voorwaartse lus te verzachten.
Er zijn geen specifieke vereisten van toepassing op dit document.
De informatie in dit document is gebaseerd op Cisco IOS®-software die EEM versie 4.0 ondersteunt.
Gebruik deze opdracht om de EM-versie te controleren die door uw Cisco IOS-release wordt ondersteund:
Router#sh event manager version | i Embedded
Embedded Event Manager Version 4.00
Router#
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u de potentiële impact van elke opdracht begrijpen.
Wanneer PfR een Traffic Class (TC) controleert, maakt het een dynamische routekaart/toegangscontrolelijst (ACL) op de BRs. De routekaart op een BR met een geselecteerde exit wijst naar een geselecteerde exit, terwijl een routekaart op andere BRs naar een interne interface wijst (volgende hop = geselecteerde BR).
Er treedt een probleem op wanneer de dynamische ACL’s niet goed zijn gesynchroniseerd tussen de verschillende BR’s (bijvoorbeeld door bugs).
In dit beeld ligt de nadruk op TC die alle IP-pakketten die bestemd zijn voor 172.16.1.0/24 met DSCP EF matchen. In dit scenario wordt de bijbehorende ACL-ingang verwijderd uit de geselecteerde BR (BR-2), maar niet uit BR-1. Pakketten van die TC raakten op BR-2 met de prefixingang die alle IP pakketten aanpast die aan 172.16.1.0/24 worden bestemd. De geselecteerde exit voor de prefixvermeldingen is Exit-1, dus de gerelateerde route-map/ACL op BR-2 wijst naar BR-1.
De pakketten van die TC nu lopen tussen de BRs tot de Time To Live (TTL) 0 bereikt.
Dit document bevat de nodige EEM-applets die worden gebruikt om:
De applets die gebruikt worden in het geval van een Master Controller (MC) / BR combinatie zijn veel gemakkelijker (wanneer MC draait op een van de BRs). Het scenario met specifieke MCs wordt ook behandeld.
In deze sectie worden de toegangslijsten beschreven die voor dit proces worden gebruikt, evenals Applet Log-bestanden.
Om het doorsturen van lijnen te detecteren, maakt de applet gebruik van een ACL om pakketten met een laag TTL aan te passen.
Het wordt aanbevolen om ACE matching op 2x opeenvolgende, relatief lage TTL-waarden (20 en 21) te gebruiken om één (en slechts één) hit te krijgen voor elk pakket dat tussen BRs loopt. De gebruikte TTL-waarde mag niet te laag zijn om frequente hits van traceroute-pakketten te voorkomen.
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
ACL moet op de interne interface worden geplaatst die in de opdrachtoutput van de topologie van de voorbeeldgrens wordt gerapporteerd.
Het IP-bronbereik (hier 10.116.48.0/20) moet overeenkomen met het interne netwerk (prefixes te bereiken via interne interfaces).
Om te identificeren welke verre plaats/TC door de lijn wordt beïnvloed, kunt u tweede uitgaande ACL op de interface, met specifiekere Azen voor elke verre plaats/TC toevoegen.
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
Het IP-doelnetwerk komt overeen met het subnet in de verschillende externe sites:
10.116.132.0/24 -> site-1
10.116.128.0/24 -> site-2
U kunt ook meerdere lijnen per externe site toevoegen als u de exacte TC moet identificeren die door de lus wordt beïnvloed.
De applet controleert de hittellingen van de ACE-aanpassing op de TTL in de ACL-lus elke dertig seconden. Op basis van het resultaat van deze controles kan de applets deze taken uitvoeren:
De applet houdt een logbestand bij dat het aantal hitcounts bijhoudt (wanneer de telling groter is dan 0), en elke ontmoeting van tijdelijke loops (wanneer THRESHOLD_1 is overschreden maar niet THRESHOLD_2) of een echte lus (wanneer zowel THRESHOLD_1 als THRESHOLD_2 zijn overschreden).
Dit zijn de eenvoudigste scenario's die in dit document worden beschreven. Lusdetectie en PfR-clearing worden op hetzelfde apparaat uitgevoerd, zodat het niet nodig is om apparaat EEM applet communicatie in te voeren. Een afzonderlijke applet draait op een MC/BR combinatie en andere BRs.
Deze uitvoer geeft belangrijke informatie weer voor de applet die wordt gebruikt in MC/BR combo. Hier zijn een paar belangrijke opmerkingen voor deze specifieke output:
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 dit deel wordt het applet beschreven dat voor andere BR's wordt gebruikt. Hier zijn een paar belangrijke opmerkingen voor deze specifieke output:
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
De lusdetectie en PfR clearing/stats collectie is voltooid op verschillende apparaten die een inter-device EEM applet communicatie moeten hebben. De communicatie tussen de apparaten gebeurt op verschillende manieren. Dit document beschrijft apparaatcommunicatie via objecten die worden bijgehouden om de bereikbaarheid te controleren van speciale loopbacks die in IGP worden geadverteerd. Wanneer een gebeurtenis wordt gedetecteerd, wordt de loopback uitgeschakeld, waardoor applets op externe apparaten kunnen worden gestart wanneer het object dat wordt gevolgd, offline gaat. U kunt verschillende loopbacks gebruiken als er verschillende informatie moet worden uitgewisseld.
Deze applets en communicatiemethoden worden gebruikt:
Naam van applicatie | Waarbij? | Wat? | Trigger? | Communicatie? |
LUS-BR | BRs | Controleer ACL-hittellingen om loops te detecteren |
periodiek | Sluit Loop100 |
LUS-MC | MC | - PfR-gegevens verzamelen - ontruimt de PR |
Track bereikbaarheid Loop100 | Sluit Loop200 |
COLLECT-BR | BRs | Informatie verzamelen | Track bereikbaarheid Loop200 | none |
Hier is een afbeelding die dit illustreert:
Dit is het proces dat door de applets wordt gebruikt:
In deze sectie wordt beschreven hoe u loopbacks kunt maken (zorg ervoor dat de IP's op de IGP worden geadverteerd) en objecten kunt volgen.
Hier zijn enkele belangrijke punten die u in gedachten moet houden wanneer u spoorobjecten maakt:
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
LUS-BR
In deze sectie wordt beschreven hoe u loopbacks op de BR's kunt maken. Hier zijn een paar belangrijke opmerkingen die je in gedachten moet houden:
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
LUS-MC
In deze sectie wordt beschreven hoe u loopbacks op de MC kunt maken. Hier zijn een paar belangrijke opmerkingen die je in gedachten moet houden:
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 dit hoofdstuk wordt beschreven hoe u de BR kunt verzamelen. De applet wordt gelanceerd wanneer een BR de bereikbaarheid verliest van Loopback200 (10.100.100.200) op MC. De opdrachten die worden gebruikt om gegevens te verzamelen, worden vermeld in de acties 120, 130 en 140.
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
Hier is de syslog op MC wanneer een loop wordt gedetecteerd:
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#
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
1.0 |
27-May-2013 |
Eerste vrijgave |