En este documento se describen los applets de Embedded Event Manager (EEM) que se utilizan en redes en las que Performance Routing (PfR) optimiza el tráfico a través de varios Border Relays (BR). También se observan algunos loops de reenvío. Los applets se utilizan para recopilar datos cuando se observa un loop y mitigar el impacto de un loop de reenvío.
No hay requisitos específicos para este documento.
La información de este documento se basa en el software Cisco IOS® que es compatible con la versión 4.0 de EEM.
Para verificar la versión de EEM soportada por su versión de Cisco IOS, utilice este comando:
Router#sh event manager version | i Embedded
Embedded Event Manager Version 4.00
Router#
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). If your network is live, make sure that you understand the potential impact of any command.
Cuando PfR controla una clase de tráfico (TC), crea una lista de control de acceso (ACL)/mapa de ruta dinámica en los BR. El route map en un BR con una salida seleccionada apunta a una salida seleccionada, mientras que un route map en otros BRs apunta a una interfaz interna (next-hop = BR seleccionada).
Un problema ocurre cuando las ACL dinámicas no se sincronizan correctamente entre los diferentes BR (debido a errores, por ejemplo).
En esta imagen, el foco está en TC que hace coincidir cualquier paquete IP destinado a 172.16.1.0/24 con DSCP EF. En este escenario, la entrada de ACL relacionada se quita de la BR seleccionada (BR-2), pero no de la BR-1. Los paquetes de ese TC llegan al BR-2 con la entrada de prefijo que coincide con todos los paquetes IP destinados a 172.16.1.0/24. La salida seleccionada para la entrada de prefijo es Exit-1, por lo que el route-map/ACL relacionado en BR-2 apunta a BR-1.
Los paquetes de ese TC ahora se repiten entre los BR hasta que el tiempo de vida (TTL) llega a 0.
Este documento proporciona los applets EEM necesarios utilizados para:
Los applets utilizados en el caso de un combo controlador principal (MC)/BR son mucho más fáciles (cuando MC se ejecuta en uno de los BR). También se trata el escenario con MC dedicados.
En esta sección se describen las listas de acceso utilizadas para este proceso, así como los archivos de registro de applets.
Para detectar loops de reenvío, el applet depende de una ACL para hacer coincidir los paquetes con un TTL bajo.
Se recomienda utilizar la coincidencia ACE en valores TTL (20 y 21) 2 veces consecutivos y relativamente bajos para obtener un resultado (y solo uno) por cada paquete que se repite entre los BR. El valor TTL utilizado no debe ser demasiado bajo para evitar los aciertos frecuentes de los paquetes de traceroute.
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
La ACL debe ubicarse en la interfaz interna informada en el resultado del comando show pfr master border topology.
El rango de IP de origen (aquí 10.116.48.0/20) debe coincidir con las redes internas (prefijos accesibles a través de interfaces internas).
Para identificar qué sitio remoto/TC se ve afectado por el loop, puede agregar una segunda ACL saliente en la interfaz, con ACE más específicas para cada sitio remoto/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
La IP de destino coincide con la subred de los diferentes sitios remotos:
10.116.132.0/24 -> site-1
10.116.128.0/24 -> site-2
También puede agregar varias líneas por sitio remoto si necesita identificar el TC exacto afectado por el bucle.
El applet verifica los recuentos de aciertos de la coincidencia ACE en el TTL en el loop ACL cada treinta segundos. En función del resultado de estas comprobaciones, el applet puede realizar las siguientes tareas:
El applet mantiene un archivo de registro que realiza un seguimiento del número de recuentos de visitas (cuando el recuento es mayor que 0) y cualquier encuentro de bucles temporales (cuando se supera THRESHOLD_1 pero no THRESHOLD_2) o un bucle real (cuando se superan THRESHOLD_1 y THRESHOLD_2).
Estas son las situaciones más sencillas descritas en este documento. La detección de loop y la limpieza de PfR se realizan en el mismo dispositivo, por lo que no hay necesidad de entrar en la comunicación del applet EEM del dispositivo. Un applet independiente se ejecuta en un combo MC/BR y otros BR.
Este resultado muestra información importante para el applet utilizado en el combo de MC/BR. A continuación, se incluyen algunas notas importantes para este resultado específico:
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
Esta sección describe el applet utilizado para otros BR. A continuación, se incluyen algunas notas importantes para este resultado específico:
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
La detección de loop y la recolección de estadísticas/borrado de PfR se completa en diferentes dispositivos que deben tener comunicación de applet EEM entre dispositivos. La comunicación entre los dispositivos se produce de formas diferentes. Este documento describe la comunicación del dispositivo a través de los objetos rastreados para verificar la disponibilidad de los loopbacks dedicados anunciados en IGP. Cuando se detecta un evento, se apaga el bucle invertido, lo que permite que los applets de los dispositivos remotos se inicien cuando el objeto del que se realiza el seguimiento se desconecta. Puede utilizar diferentes loopbacks si necesita intercambiar información diferente.
Estos applets y métodos de comunicación se utilizan:
Nombre de subprograma | Where? | ¿Qué? | Activador? | Comunicación? |
LOOP-BR | BR | Verifique los recuentos de visitas de ACL para detectar loops |
Periódico | shut Loop100 |
LOOP-MC | MC | - Recopilar información de PfR - Borra PfR |
Seguimiento del bucle de disponibilidad100 | shut Loop200 |
COLLECT-BR | BR | Obtenga información | Seguimiento del bucle de disponibilidad200 | ninguno |
Esta es una imagen que ilustra esto:
Este es el proceso que utilizan los applets:
Esta sección describe cómo crear loopbacks (asegurarse de que las IP se anuncian en el IGP) y rastrear objetos.
Estos son algunos puntos importantes que debe tener en cuenta al crear objetos de seguimiento:
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
Esta sección describe cómo crear loopbacks en los BR. Estas son algunas notas importantes que debe tener en cuenta:
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
Esta sección describe cómo crear loopbacks en el MC. Estas son algunas notas importantes que debe tener en cuenta:
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
Esta sección describe cómo recolectar el BR. El applet se inicia en cuando un BR pierde la disponibilidad a Loopback200 (10.100.100.200) en MC. Los comandos utilizados para recolectar se enumeran en las acciones 120, 130 y 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
Este es el syslog en MC cuando se detecta un loop:
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#
Revisión | Fecha de publicación | Comentarios |
---|---|---|
1.0 |
27-May-2013 |
Versión inicial |