Utilizando la utilería de captura de paquetes (EPC)

Cuando se necesita encontrar la causa de pérdida de paquetes en un  equipo remoto donde un sniffer no está disponible, es difícil de  identificar si es en la LAN o en la WAN. A partir del IOS 12.4(20)T hay  una utilería para capturar paquetes en el mismo equipo. Los filtros  pueden ser por interfaz, dirección de tráfico, ACL, y hasta tráfico que  es procesado por el CPU del equipo.

La guía de los comandos se encuentra en el siguiente link:

Embedded Packet Capture

Esta utilería está disponible para los routers ISR y 7200. Para  plataformas como 6500 y 7600 se tiene algo similar pero es llamado "Mini  Protocol Analyzer".

https://www.cisco.com/en/US/docs/routers/7600/ios/12.2SR/configuration/guide/mpa.html

Veamos un ejemplo donde podemos aplicar esto.

Topología

Topo.jpg

Direccionamiento:

RouterA Ethernet 0/0: 10.10.10.1/255.255.255.0
CaptureRouter Ethernet 0/0: 10.10.10.2/255.255.255.0
CaptureRouter Ethernet 1/0: 10.10.20.1/255.255.255.0
RouterB Ethernet 1/0: 10.10.20.2/255.255.255.0

Problema

Cuando se hace ping desde RouterA a RouterB con paquetes de  100 byte, no hay ninguna pérdida de paquetes. Sin embargo, utilizando  paquetes de 1000 bytes resulta en una pérdida de 50%.

Se muestra el ping de 100 bytes:


RouterA#ping 10.10.20.2 size 100 repeat 4 timeout 1

Type escape sequence to abort.
Sending 4, 100-byte ICMP Echos to 10.10.20.2, timeout is 1 seconds:
!!!!
Success rate is 100 percent (4/4), round-trip min/avg/max = 1/4/12 ms

Con 1000 bytes:


RouterA#ping 10.10.20.2 size 1000 repeat 4 timeout 1
Type escape sequence to abort.
Sending 4, 1000-byte ICMP Echos to 10.10.20.2, timeout is 1 seconds:
!.!.
Success rate is 50 percent (2/4), round-trip min/avg/max = 1/34/68 ms

Análisis

Supongamos que sólo tenemos acceso al router "CaptureRouter" y  necesitamos averiguar si es en este equipo donde ocurre la pérdida de  paquetes. El primer paso es determinar si los paquetes están llegando a  este equipo y lo haremos con EPC.

Todos los comandos son ingresados en nivel privilegiado. Estos son los pasos para configurar EPC:

  1. Definir un buffer de captura -> Aquí es donde se almacenan los paquetes una vez capturados
  2. Definir  un punto de captura -> Ayuda a especificar en qué interfaz y en qué  camino de procesamiento pueden ser capturados los paquetes (ya sea CEF o  procesados por el CPU)
  3. Asociar el punto de captura con el buffer de captura -> Se pueden asociar múltiples puntos de captura al mismo buffer
  4. Comenzar captura
  5. Ver la captura o exportarla en un archivo PCAP

Ejemplo

Veamos como se hará la configuración en el equipo CaptureRouter:

  • Se van a capturar los paquetes ICMP solamente con el origen y destino del ejemplo. Para esto se configura una ACL:

CaptureRouter#config t
Enter configuration commands, one per line.  End with CNTL/Z.
CaptureRouter(config)#access-list 144 permit icmp host 10.10.10.1 host 10.10.20.2
CaptureRouter(config)#access-list 144 permit icmp host 10.10.20.2 host 10.10.10.1
CaptureRouter(config)#end

Se crea el buffer de captura que se llamará "holdpackets":

CaptureRouter#monitor capture buffer holdpackets
CaptureRouter#monitor capture buffer holdpackets ?
  circular  Circular Buffer
  clear     Clear contents of capture buffer
  export    Export in Pcap format
  filter    Configure filters
  limit     Limit the packets dumped to the buffer
  linear    Linear Buffer(Default)
  max-size  Maximum size of element in the buffer (in bytes)
  size      Packet Dump buffer size (in Kbytes)
  <cr>
CaptureRouter#monitor capture buffer holdpackets filter access-list 144
Filter Association succeeded

CaptureRouter#

Se configura el punto de captura llamado "icmptrace":

CaptureRouter#monitor capture point ip cef icmptrace all both
CaptureRouter#
*Sep 11 15:51:06.395: %BUFCAP-6-CREATE: Capture Point icmptrace created.
CaptureRouter#

En el comando monitor capture point podemos ver diferentes opciones para filtrar (interfaz, dirección, etc):


CaptureRouter#monitor capture point ip cef icmptrace ?
  Serial             Serial
  Tunnel             Tunnel interface
  all                All interfaces
  drop               Drop on any interface
  punt               Punt on any interface

Este punto de captura fue configurado para capturar paquetes que son  conmutados en CEF en ambos sentidos de la interfaz con el filtro de sólo  paquetes ICMP.

Se asocia el punto de captura "icmptrace" con el buffer de captura "holdpackets":


CaptureRouter#monitor capture point associate icmptrace holdpackets

Iniciamos la captura:


CaptureRouter#monitor capture point start icmptrace

Ahora se mandan 4 paquetes para simular el problema:


RouterA#ping 10.10.20.2 size 1000 repeat 4 timeout 1

Type escape sequence to abort.
Sending 4, 1000-byte ICMP Echos to 10.10.20.2, timeout is 1 seconds:
!.!.
Success rate is 50 percent (2/4), round-trip min/avg/max = 1/14/28 ms

RouterA#

En el buffer vemos que 10 paquetes fueron almacenados:

CaptureRouter#show monitor capture buffer holdpackets parameters
Capture buffer holdpackets (linear buffer)
Buffer Size : 262144 bytes, Max Element Size : 68 bytes, Packets : 10
Allow-nth-pak : 0, Duration : 0 (seconds), Max packets : 0, pps : 0
Associated Capture Points:
Name : icmptrace, Status : Active
Configuration:
monitor capture buffer holdpackets
monitor capture point associate icmptrace holdpackets
monitor capture buffer holdpackets filter access-list 144

Si los 4 paquetes de ping hubieran sido exitosos, hubieramos visto 16  en el buffer porque configuramos el punto de captura para tráfico de  entrada como de salida. Por lo que por cada ping existe un ECHO y un  ECHO reply y se verían 4 paquetes en el buffer. Si los 4 hubieran sido  exitosos, hubieramos visto 16.

Se puede observar el contenido del buffer con el comando show monitor capture buffer holdpackets dump.

Aquí vemos los 4 paquetes por el primer ping exitoso:


CaptureRouter#show monitor capture buffer holdpackets dump
18:22:57.946 EST Sep 11 2008 : IPv4 LES CEF    : Et0/0 None
042F3400: AABBCC01 F600AABB CC01F500 08004500  *;L.v.*;L.u...E.
042F3410: 03E8006E 0000FE01 86900A0A 0A010A0A  .h.n..~.........
042F3420: 14020800 12130015 00000000 000000F6  ...............v
042F3430: 6BA4ABCD ABCDABCD ABCDABCD ABCDABCD  k$+M+M+M+M+M+M+M
042F3440: ABCDABCD 00                          +M+M.          
18:22:57.946 EST Sep 11 2008 : IPv4 LES CEF    : Et0/0 Et1/0
042F3400: AABBCC01 F701AABB CC01F601 08004500  *;L.w.*;L.v...E.
042F3410: 03E8006E 0000FE01 86900A0A 0A010A0A  .h.n..~.........
042F3420: 14020800 12130015 00000000 000000F6  ...............v
042F3430: 6BA4ABCD ABCDABCD ABCDABCD ABCDABCD  k$+M+M+M+M+M+M+M
042F3440: ABCDABCD 00                          +M+M.          
18:22:57.946 EST Sep 11 2008 : IPv4 LES CEF    : Et1/0 None
042F3400: AABBCC01 F601AABB CC01F701 08004500  *;L.v.*;L.w...E.
042F3410: 03E8006E 0000FE01 86900A0A 14020A0A  .h.n..~.........
042F3420: 0A010000 1A130015 00000000 000000F6  ...............v
042F3430: 6BA4ABCD ABCDABCD ABCDABCD ABCDABCD  k$+M+M+M+M+M+M+M
042F3440: ABCDABCD 00                          +M+M.          
18:22:57.946 EST Sep 11 2008 : IPv4 LES CEF    : Et1/0 Et0/0
042F3400: AABBCC01 F500AABB CC01F600 08004500  *;L.u.*;L.v...E.
042F3410: 03E8006E 0000FE01 86900A0A 14020A0A  .h.n..~.........
042F3420: 0A010000 1A130015 00000000 000000F6  ...............v
042F3430: 6BA4ABCD ABCDABCD ABCDABCD ABCDABCD  k$+M+M+M+M+M+M+M
042F3440: ABCDABCD 00                          +M+M.          

Esto tiene sentido ya que el primer frame viene por la interface E0/0  y lo manda a la interfaz E1/0. El ECHO reply viene de la interfaz E1/0,  y sale por la interfaz E0/0.

En los siguientes 2 paquetes vemos:

18:22:57.966 EST Sep 11 2008 : IPv4 LES CEF    : Et0/0 None
042F3400: AABBCC01 F600AABB CC01F500 08004500  *;L.v.*;L.u...E.
042F3410: 03E8006F 0000FE01 868F0A0A 0A010A0A  .h.o..~.........
042F3420: 14020800 11F20015 00010000 000000F6  .....r.........v
042F3430: 6BC4ABCD ABCDABCD ABCDABCD ABCDABCD  kD+M+M+M+M+M+M+M
042F3440: ABCDABCD 00                          +M+M.          
18:22:58.966 EST Sep 11 2008 : IPv4 LES CEF    : Et0/0 None
042F3400: AABBCC01 F600AABB CC01F500 08004500  *;L.v.*;L.u...E.
042F3410: 03E80070 0000FE01 868E0A0A 0A010A0A  .h.p..~.........
042F3420: 14020800 0E090015 00020000 000000F6  ...............v
042F3430: 6FACABCD ABCDABCD ABCDABCD ABCDABCD  o,+M+M+M+M+M+M+M
042F3440: ABCDABCD 00                          +M+M.          


En este caso vemos que el paquete llega pero por alguna razón CEF  no sabe qué hacer con el paquete y lo tira. Por lo tanto necesitamos  checar la configuración de la interfaz. Haciendo esto encontramos la  causa raíz del problema:

La interfaz E1/0 tiene una política de servicio de salida que limita  el tráfico, haciendo que con paquetes de mayor tamaño se exceda el  límite configurado:


CaptureRouter#show run int Ethernet1/0
Building configuration

interface Ethernet1/0
ip address 10.10.20.1 255.255.255.0
load-interval 30
service-policy output police
end

CaptureRouter#show policy-map interface Ethernet1/0
Ethernet1/0

  Service-policy output: police

    Class-map: class-default (match-any)
      69 packets, 10718 bytes
      30 second offered rate 0 bps, drop rate 0 bps
      Match: any
      police:
          cir 8000 bps, bc 1500 bytes
        conformed 2 packets, 2028 bytes; actions:
          transmit
        exceeded 2 packets, 2028 bytes; actions:
          drop
        conformed 0 bps, exceed 0 bps

Se puede observar la inconsistencia filtrando la salida del buffer de la siguiente manera:


CaptureRouter#show monitor capture buffer holdpackets dump | include LES
17:39:38.691 EST Sep 11 2008 : IPv4 LES CEF    : Et0/0 None
17:39:38.691 EST Sep 11 2008 : IPv4 LES CEF    : Et0/0 Et1/0
17:39:38.691 EST Sep 11 2008 : IPv4 LES CEF    : Et1/0 None
17:39:38.691 EST Sep 11 2008 : IPv4 LES CEF    : Et1/0 Et0/0
17:39:38.711 EST Sep 11 2008 : IPv4 LES CEF    : Et0/0 None
17:39:39.711 EST Sep 11 2008 : IPv4 LES CEF    : Et0/0 None
17:39:39.711 EST Sep 11 2008 : IPv4 LES CEF    : Et0/0 Et1/0
17:39:39.711 EST Sep 11 2008 : IPv4 LES CEF    : Et1/0 None
17:39:39.711 EST Sep 11 2008 : IPv4 LES CEF    : Et1/0 Et0/0
17:39:39.715 EST Sep 11 2008 : IPv4 LES CEF    : Et0/0 None

Esto muestra que el segundo ICMP ECHO (el quinto paquete) no era conmutado correctamente.

El buffer de  captura se puede exportar a un archivo PCAP para que pueda ser analizado  por Wireshark u otro sniffer con el comando:


CaptureRouter#monitor capture buffer holdpackets export tftp://10.10.10.1/captureut.pcap


10.10.10.1 es la dirección del servidor de TFTP y captureout.pcap es el archivo que va a tener el buffer en el servidor.

En resumen, estos fueron los comandos ingresados para resolver el problema:


CaptureRouter#config t
Enter configuration commands, one per line.  End with CNTL/Z.
CaptureRouter(config)#access-list 144 permit icmp host 10.10.10.1 host 10.10.20.2
CaptureRouter(config)#access-list 144 permit icmp host 10.10.20.2 host 10.10.10.1
CaptureRouter(config)#end
CaptureRouter#monitor capture buffer holdpackets
CaptureRouter#monitor capture buffer holdpackets filter access-list 144
CaptureRouter#monitor capture point ip cef icmptrace all both
CaptureRouter#monitor capture point associate icmptrace holdpackets
CaptureRouter#monitor capture point start icmptrace


Para ver todos los buffers de captura:


CaptureRouter#show monitor capture buffer all parameters
Capture buffer holdpackets (linear buffer)
Buffer Size : 262144 bytes, Max Element Size : 68 bytes, Packets : 10
Allow-nth-pak : 0, Duration : 0 (seconds), Max packets : 0, pps : 0
Associated Capture Points:
Name : icmptrace, Status : Inactive
Configuration:
monitor capture buffer holdpackets
monitor capture point associate icmptrace holdpackets

Para ver todos los puntos de captura:


CaptureRouter#show monitor capture point all
Status Information for Capture Point icmptrace
IPv4 CEF
Switch Path: IPv4 CEF            , Capture Buffer: holdpackets        
Status : Inactive

Configuration:
monitor capture point ip cef icmptrace all both

Para detener la captura de paquetes:

CaptureRouter#monitor capture point stop icmptrace       
CaptureRouter#
*Sep 12 17:35:54.121: %BUFCAP-6-DISABLE: Capture Point icmptrace disabled.

Para remover un punto de captura:

CaptureRouter#no monitor capture point ip cef icmptrace all both
CaptureRouter#
*Sep 12 17:37:14.417: %BUFCAP-6-DELETE: Capture Point icmptrace deleted.

Para remover un buffer de captura:

CaptureRouter#no monitor capture buffer holdpackets
Capture Buffer deleted

El crédito de este documento es de Rodney Dunn (TAC).

Documento original:

https://supportforums.cisco.com/docs/DOC-5799

Historial de versiones
Revisión n.º
1 de 1
Última actualización:
‎01-03-2011 03:33 PM
Actualizado por:
 
Etiquetas (1)
Etiquetas (1)