1. ¿Qué es una Tormenta de Red?
Una tormenta de red es uno de los fallos más catastróficos que pueden ocurrir en una red de Capa 2. Se produce cuando un paquete de difusión (broadcast o multicast) entra en una red con un bucle físico no gestionado (sin STP/MRP). El primer switch inunda el paquete por todos sus puertos. El segundo switch lo recibe y lo vuelve a inundar, devolviéndolo al primero, que lo vuelve a inundar. Este proceso se repite exponencialmente, y en menos de un segundo, la red se satura al 100% con copias del mismo paquete. Las CPUs de todos los dispositivos (PLCs, HMIs, switches) se colapsan intentando procesar este diluvio de datos inútiles, y la comunicación útil se detiene por completo.
2. Tormenta de Broadcast vs. Tormenta de Multicast
Para un técnico de UF1794, es crucial diferenciar el origen de la tormenta:
- Tormenta de Broadcast: Es la más común. Es causada por paquetes enviados a la dirección MAC de difusión universal:
ff:ff:ff:ff:ff:ff. El protocolo ARP es el principal culpable. Si un dispositivo busca una IP y la red tiene un bucle, su petición ARP puede tumbar la planta. - Tormenta de Multicast: Es más sutil y específica de entornos OT. El tráfico de E/S de EtherNet/IP, por defecto, utiliza direcciones multicast. Si los switches de la red no tienen activada y bien configurada la función IGMP Snooping, tratarán ese tráfico multicast como si fuera broadcast, inundándolo por todos los puertos y creando una tormenta si existe un bucle.
3. Detectando Tormentas con Filtros de Wireshark
El primer síntoma de una tormenta es que la captura de Wireshark se llena de miles de paquetes idénticos en un instante. Para confirmar la sospecha, usamos filtros de visualización:
- Para tormentas de Broadcast:
eth.dst == ff:ff:ff:ff:ff:ff. Este filtro te mostrará únicamente los paquetes enviados a la dirección de difusión. Si la lista se sigue llenando a una velocidad endiablada, has encontrado el problema. A menudo, se combina conarp(arp and eth.dst == ff:ff:ff:ff:ff:ff) para confirmar que es una tormenta ARP. - Para tormentas de Multicast:
eth.dst[0] & 1. Este es un filtro de máscara de bits muy potente. Le dice a Wireshark que muestre cualquier trama cuyo primer bit del primer byte de la MAC de destino sea '1', que es la definición técnica de una dirección multicast.
4. Cuantificando el Daño: IO Graphs y Endpoints
Una vez aplicado el filtro, podemos usar las herramientas estadísticas de Wireshark para visualizar la magnitud del desastre:
- Gráficos de E/S (Statistics > IO Graph): Esta es la herramienta más visual. En el eje Y, selecciona "Packets/Tick" y en el eje X, ajusta el intervalo a 0.1 segundos. Una red sana puede tener 100-500 paquetes por segundo. Una red bajo una tormenta de broadcast mostrará un pico vertical y sostenido de decenas de miles de paquetes por segundo.
- Puntos Finales (Statistics > Endpoints): Abre la pestaña "Ethernet". Esta ventana te muestra una lista de todas las direcciones MAC que han enviado o recibido tráfico, y cuenta el número de paquetes para cada una. En una tormenta de broadcast, verás la dirección
ff:ff:ff:ff:ff:ffen la parte superior de la lista con un contador de paquetes astronómico.
Estas herramientas no solo confirman la tormenta, sino que te permiten crear un informe técnico con datos objetivos para justificar la parada de la máquina y la corrección del bucle de red.
Fuente: Elaboración propia / Licencia: CC BY-NC 4.0.
📝 Evaluación Técnica: Diagnóstico de Tormentas
1. ¿Cuál es la causa raíz de una tormenta de broadcast en una red Ethernet de Capa 2?
2. Sospechas que hay una tormenta de broadcast en tu red. ¿Qué filtro de visualización de Wireshark es el más directo y eficaz para aislar y confirmar este tipo de tráfico?
3. En una red EtherNet/IP, ¿qué función de los switches gestionables es absolutamente crítica para prevenir las tormentas de multicast generadas por el tráfico de E/S?
🤖 Ejercicio Práctico 6: Detector de Tormentas con Scapy
Objetivo: Programar un sistema de alerta temprana que detecte una tormenta de broadcast en tiempo real.
Copia el siguiente *prompt* y pégalo en un modelo de IA (como ChatGPT, Gemini o Claude).