Hoy escribo una entrada rápida en la que podemos ver diferentes formas de diagnosticar el estado del tráfico multicast en un servidor GNU/Linux. Básicamente utilizamos el comando netstat para visualizar los grupos de membresía multicast para IPv4 e IPv6, tcpdump para visualizar el tráfico a tiempo real y /proc para visualizar la información IGMP (Internet Group Management Protocol) multicast.
Empezamos por netstat, comando al cual podemos pasarle el parámetro «-g» o «–groups» para ver los grupos multicast en los que formamos parte, tanto para IPv4 como IPv6:
$ netstat -g IPv6/IPv4 Group Memberships Interface RefCnt Group --------------- ------ --------------------- lo 1 all-systems.mcast.net eth0 1 224.0.0.251 eth0 1 all-systems.mcast.net lo 1 ip6-allnodes eth0 1 ff02::fb eth0 1 ff02::1:ffd5:1899 eth0 1 ip6-allnodes eth2 1 ip6-allnodes
Otra forma de ver los grupos es a través de /proc (/proc/net/igmp):
$ cat /proc/net/igmp Idx Device : Count Querier Group Users Timer Reporter 1 lo : 1 V3 010000E0 1 0:00000000 0 2 eth0 : 2 V3 FB0000E0 1 0:00000000 0 010000E0 1 0:00000000 0
Como véis tenemos otra información interesante como la versión utilizada para la transmisión de mensajes IGMP, en este caso IGMPv3.
Una vez verificados los grupos multicast, podemos esnifar el tráfico de red filtrando únicamente el tráfico multicast gracias a tcpdump:
# tcpdump -n "multicast" tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes [...] [...]
Para saber la diferencia entre unicast, broadcast y multicast, revisad esta entrada: Broadcast, Multicast y Unicast.