In dit document wordt Embedded Event Manager (EEM) applets beschreven die worden gebruikt in netwerken waar Performance Routing (PfR) verkeer optimaliseert door meerdere Border Relay (BR’s). Ook worden enkele uitzettingslijnen waargenomen. De applets worden gebruikt om gegevens te verzamelen wanneer een lus wordt waargenomen en de impact van een doorvoerlus te verminderen.
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.
Om de EEM versie te controleren die door uw Cisco IOS release wordt ondersteund, gebruikt u deze opdracht:
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, creëert het een dynamische routekaart/toegangscontrolelijst (ACL’s) op de BR’s. De routekaart op een BR met een geselecteerde exit punten naar een geselecteerde uitgang, terwijl een routekaart op andere BRs punten naar een interne interface (volgende-hop = geselecteerde BR) wijst.
Een probleem doet zich voor wanneer de dynamische ACL's niet goed tussen de verschillende BR's (door beugels, bijvoorbeeld) worden gesynchroon.
In dit beeld ligt de nadruk op het koppelen van IP-pakketten die bestemd zijn om in 172.16.1.0/24 te worden voorzien met DSCP EF. In dit scenario wordt de verwante ACL-ingang uit de geselecteerde BR (BR-2) maar niet uit BR-1 verwijderd. Packets van die TC op BR-2 met de prefix-ingang die alle IP-pakketten overeenkomt die bestemd zijn voor 172.16.1.0/24. De geselecteerde uitgang voor het prefix-punt is Exit-1, dus de verwante route-kaart/ACL op BR-2 punten naar BR-1.
De pakketten van die TC lus nu tussen de BR's tot de tijd om te leven (TTL) 0 bereikt.
Dit document bevat de nodige EEM-applaus die worden gebruikt om:
De applets die worden gebruikt in het geval van een Master Controller (MC)/BR-combinatie zijn veel gemakkelijker (wanneer MC op een van de BR's draait). Ook het scenario met speciale MC's wordt behandeld.
In deze sectie worden de toegangslijsten beschreven die voor dit proces worden gebruikt, evenals de Applet-logbestanden.
Om uitgangen te detecteren, maakt de applet gebruik van een ACL-schijf om pakketten met een lage 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 BR's loopt. De TTL-waarde moet niet te laag zijn om frequente hits uit rackpakketten 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 hoofdgrens van de topologie van de show wordt gemeld.
Het IP-bronbereik (hier 10.116.48.0/20) moet overeenkomen met het interne netwerk(s) (prefixes bereikbaar via interne interfaces).
Om te identificeren welke verre plaats/TC door de lijn wordt beïnvloed kunt u een tweede ACL op de interface toevoegen, met meer specifieke ACEs voor elke verre plaats/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
De bestemming IP komt overeen met Subnet in de verschillende verre plaatsen:
10.116.132.0/24 -> site-1
10.116.128.0/24 -> site-2
U kunt ook meerdere regels per afgelegen site toevoegen als u de exacte TC moet identificeren die door de lus wordt beïnvloed.
Het applet controleert de hittelingen van de ACE die bij de TTL worden gezocht in de ACL lus elke dertig seconden. Op basis van het resultaat van deze controles kan de applicatie deze taken uitvoeren:
De applet houdt een logbestand bij dat het aantal liften bijhoudt (wanneer de telling groter is dan 0), en elke samenkomst van tijdelijke loops (wanneer THRESHOLD_1 wordt overschreden maar niet THRESHOLD_2) of een echte lus (wanneer zowel THRESHOLD_1 als THRESHOLD_2 worden overschreden).
Dit zijn de eenvoudigste scenario's die in dit document worden beschreven. Loop detectie en PfR-clearing worden uitgevoerd op hetzelfde apparaat, zodat het apparaat niet met de EEM-applet-communicatie hoeft te worden ingevoerd. Een afzonderlijk applet werkt op een MC/BR combinatie en andere BR's.
Deze uitvoer geeft belangrijke informatie weer voor de toepassing die in de MC/BR-combinatie wordt gebruikt. 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 de applet beschreven die 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 stroomdetectie en PfR-clearing/stats-verzameling wordt voltooid op verschillende apparaten die een EEM-applet-communicatie tussen apparaten moeten hebben. De communicatie tussen de apparaten gebeurt op verschillende manieren. Dit document beschrijft apparaatcommunicatie via getraceerde objecten om de bereikbaarheid te controleren van specifieke, in IGP geadverteerde loopbacks. Wanneer een gebeurtenis wordt gedetecteerd, wordt de loopback gesloten, wat applets op verre apparaten toelaat om te lanceren wanneer het object dat wordt gevolgd offline gaat. U kunt verschillende achtergronden gebruiken als er verschillende informatie moet worden uitgewisseld.
Deze apparaten en communicatiemethoden worden gebruikt:
Toepassingsnaam | Waar? | Wat? | Trigger? | Communicatie? |
LOOP-BR | BR’s | Controleer ACL-liften om lijnen te detecteren |
periodiek | Loop100 sluiten |
LOOP-MC | MC | - PfR-infos verzamelen - Clears PfR |
Trainingsbereikbaarheidsregel LOP100 | Loop200 sluiten |
COLLECT-BR | BR’s | Verzamelen van informatie | Trainingsbereikbaarheidsdatum200 | none |
Dit is een plaatje dat het volgende illustreert:
Dit is het proces dat door de applets wordt gebruikt:
In dit deel wordt beschreven hoe u loopbacks kunt maken (om er zeker van te zijn dat IPs op het IGP worden geadverteerd) en objecten kunt opsporen.
Hier zijn een paar belangrijke punten om in gedachten te 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
LOOP-BR
In deze paragraaf wordt beschreven hoe er loopbacks op de BR's moeten worden gemaakt. Dit zijn een paar belangrijke opmerkingen die in gedachten moeten worden gehouden:
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 deze paragraaf wordt beschreven hoe u op de MC loopbacks kunt maken. Dit zijn een paar belangrijke opmerkingen die in gedachten moeten worden gehouden:
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 deel wordt beschreven hoe de BR wordt verzameld. Het applet begint wanneer een BR de bereikbaarheid van Loopback200 (10.100.100.200) op MC verliest. De opdrachten die gebruikt worden om te verzamelen, worden weergegeven 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
Dit is de syslog op MC wanneer een lus 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#