Ping DUP

por | 15 diciembre, 2011

Observación:

# ping example
PING example (192.168.1.19) 56(84) bytes of data.
64 bytes from example (192.168.1.19): icmp_seq=0 ttl=64 time=0.999 ms
64 bytes from example (192.168.1.19): icmp_seq=0 ttl=64 time=1.12 ms (DUP!)
64 bytes from example (192.168.1.19): icmp_seq=1 ttl=64 time=0.668 ms
64 bytes from example (192.168.1.19): icmp_seq=1 ttl=64 time=0.676 ms (DUP!)
64 bytes from example (192.168.1.19): icmp_seq=2 ttl=64 time=0.559 ms
64 bytes from example (192.168.1.19): icmp_seq=2 ttl=64 time=0.683 ms (DUP!)
64 bytes from example (192.168.1.19): icmp_seq=3 ttl=64 time=0.528 ms
64 bytes from example (192.168.1.19): icmp_seq=3 ttl=64 time=0.653 ms (DUP!)

 

Motivo:

Este problema se produce cuando se realiza un ping Echo Request y recibimos dos Echo replies  desde el destino con el mismo número de secuencia, es dedir dos contestaciones duplicadas a un mismo ping.  Es decir la respuesta al ping se duplica en algún punto de la red.

Esto puede suceder por tres motivos:

1. La trama se duplica en algún punto de la red y le llega repetida al destino.  Es posible que algún switch tenga la MAC duplicada hacia dos interfaces distindos. Esto se podría provocar con  direcciones MAC localmnete administradas cundo se duplican por error o cuando un bonding funciona mal y se anuncia  la misma MAC hacia dos interfaces distintos.

2. Equipo destino procesa mal y duplica la respuesta lanzandolas por un mismo interfaz o por dos interfaces distintos. Es el motivo típico cuando solo una máquina da respuestas ping DUP haciéndole ping desde varias máquinas distintas.  Esto es fácil de verificar en el equipo destino con un tcpdump y filtrando por tráfico icmp:.

# tcpdump ip proto \\icmp

 08:31:09.928187 IP nnsc1sbc1 > nnsc1sbc6: ICMP echo reply, id 895, seq 7, length 64
 08:31:09.928201 IP nnsc1sbc1 > nnsc1sbc6: ICMP echo reply, id 895, seq 7, length 64
 08:31:10.930735 IP nnsc1sbc1 > nnsc1sbc6: ICMP echo reply, id 895, seq 8, length 64
 08:31:10.930746 IP nnsc1sbc1 > nnsc1sbc6: ICMP echo reply, id 895, seq 8, length 64
 08:31:11.933296 IP nnsc1sbc1 > nnsc1sbc6: ICMP echo reply, id 895, seq 9, length 64
 08:31:11.933308 IP nnsc1sbc1 > nnsc1sbc6: ICMP echo reply, id 895, seq 9, length 64

Vemos que en el echo con ID 895 (cada ping que iniciamos se identificará con ID distinto y  cada pareja request-reply de ese ping llevará un número de secuencia deterninado) se están  duplicando los echo replies pues parecen dos respuestas idénticas con secuancia 7 repetida,  secuencia 8 reperida, etc.. El equipo destino origina respuestas repetidas.

Una consecución de respuestas correctas sería:

 08:41:39.235828 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 0, length 64
 08:41:40.238392 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 1, length 64
 08:41:41.240955 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 2, length 64
 08:41:42.243516 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 3, length 64
 08:41:43.246079 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 4, length 64
 08:41:44.248519 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 5, length 64
 08:41:45.251099 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 6, length 64
 08:41:46.253519 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 7, length 64
 08:41:47.256206 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 8, length 64
 08:41:48.258643 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 9, length 64
 08:41:49.261084 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 10, length 64
 08:41:50.263648 IP nnsc1sbc2 > nnsc1sbc6: ICMP echo reply, id 901, seq 11, length 64

donde podemos ver que el equipo nnsc1sbc2 contesta al ping con id 901 secuenciando correctamente cada echo reply con un número de secuencia creciente y distinto: seq 0, seq 1, etc… (el número de secuancia no tiene porqué ser consecutivo, de hecho no so será cuando el destino están contestando a distintos pings hechos desde otras máquinas).

3. El equipo origen funciona mal y lanza el mismo echo request por dos interfaces distinto. Lo podemos verificar con el mismo comando «tcpdump ip proto \\icmp» en el equipo dede donde se lanza el ping. Tiene sendito cuando el problema se produce desde un equipo origen determinado y contra varios clientes.

Acciones

Normalmente hay que reiniciar el servivio de red en el equipo PC que provoca el problema:

# service network restart

En el caso de los switches debemos asegurarnos de que no existe algún bug al respecto en la versión en que está trabajado.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *