Linux – ssmping

por | 11 noviembre, 2011

Introducción

ssmping es una pequeña utilidad para probar la conectividad de tráfico multicast entre hosts. asmping es una simple variación de ssmping en la que le podemos indicar por línea de comandos el grupo (IP multicast) multicast en el que generar tráfico.

Funcionamiento

Ssmping es una utilidad que funciona en modo cliente-servidor. En un host debemos ejecutar ssmpingd, el cual permanecerá ejecutándose a la espera de conexiones. Ssmpingd no tiene opciones en línea de comandos.

Desde otra máquina actuando como cliente ssmping envía al servidor (identificado por su IP unicast) una petición ssmping (ssmping request). El servidor atiende a la petición y responde un paquete ssmping de repuesta (ssmping reply) unicast y otro multicast SSM (Source Specific Multicast). Las respuesta obtenidas en el cliente permiten obtener datos de retardo, paquetes perdidios, etc.

ssmping utiliza el grupo multicast identificado por la IP 232.43.211.234 y no permite cambiarlo.
assmping funciona exáctamente igual pero permite al cliente especificar el grupo multicast mediante ASM (Any Source Multicast) en el que enviará el servidor.

ssmping utiliza un intervalo de un segundo entre cada paquete no siendo una opción contemplada el poder cambiar ducho intervalo.

Opciones de ssmping:

ssmping [ -46v ] [ -I interface ] [ -c count ] [ -s size ] host
-4     Uso de IPv4 (por defecto)

-6     Uso de IPv6

-v     Visuliza la versión del cliente y el servidor

-I interface
Interface a usar (eth0, eth1, etc.)

-c n
Detención después de n peticiones enviadas y recibidas

-s size
Petición de respuestas que tienen un tamaño en bytes determinado

host  Dirección IP (unicast) del servidor ssmpingd
Opciones de asmping:
asmping [ -46v ] [ -I interface ] [ -c count ] [ -s size ] group host
group Identifica el grupo multicast que usará el servidor para emitir tráfico multicast

Todas las demás opciones de asmping son idénticas a ssmping exepto en que asmping dispone de la opción group.

Instalación

1. Descarga de ssmping/asmping:

http://www.venaas.no/multicast/ssmping/ssmping-0.9.1.tar.gz

2. Descomprimimos el archivo gz en un directorio de trabajo.

3. Instalamos. Para ello ejecutamos make install y el Makefile proporcionado se encargará
de compilar y copiar el sistema los archivos necesarios:

[root@localhost ssmping-0.9.1]# make install
cc    -c -o ssmpngcl.o ssmpngcl.c
cc    -c -o ssmpingc.o ssmpingc.c
cc    -c -o joinch.o joinch.c
cc     ssmping.c ssmpngcl.o ssmpingc.o joinch.o   -o ssmping
cc    -c -o joingrp.o joingrp.c
cc     asmping.c ssmpngcl.o ssmpingc.o joingrp.o   -o asmping
cc     ssmpingd.c ssmpngcl.o ssmpingc.o   -o ssmpingd
cc     mcfirst.c ssmpngcl.o ssmpingc.o joinch.o joingrp.o   -o mcfirst
install -D ssmping /usr/local/bin/ssmping
install -D asmping /usr/local/bin/asmping
install -D ssmpingd /usr/local/bin/ssmpingd
install -D mcfirst /usr/local/bin/mcfirst
install -D ssmping.1 /usr/local/man/man1/ssmping.1
install -D asmping.1 /usr/local/man/man1/asmping.1
install -D mcfirst.1 /usr/local/man/man1/mcfirst.1
[root@localhost ssmping-0.9.1]#

Esta instalación incluye los ejecutables ssmpingd, ssmping y asmpong. El servidor ssmpingd es el mismo para ambos clientes ssmping y asmping.

Esta instalación ha de hacerse en los dos host, cliente y servidor.

(El paquete contiene otra utilidad llamada mcfisrt la cual soporta IPv4 e IV4, paquetes SSM y ASM. La utilidad mcfirst se usa para verificar si puede recibir cualquier sesion multicast ASM/SSM.)

Ejemlos
1. Ejecutamos ssmpingd en el servidor:

[s80usr@s80sb ssmping-0.9.1]$ ssmpingd

Este servidor tiene en nuestro caso como direción IP unicast la 192.168.0.111.

Ahora ejecutamos el comando ssmping en el cliente indicandiole la IP del servidor:

[s80usr@localhost ~]$ ssmping 192.168.0.111
ssmping joined (S,G) = (192.168.0.111,232.43.211.234)
pinging S from 192.168.0.222
  unicast from 192.168.0.111, seq=1 dist=0 time=0.193 ms
multicast from 192.168.0.111, seq=1 dist=0 time=0.204 ms
  unicast from 192.168.0.111, seq=2 dist=0 time=0.160 ms
multicast from 192.168.0.111, seq=2 dist=0 time=0.165 ms
  unicast from 192.168.0.111, seq=3 dist=0 time=0.128 ms
multicast from 192.168.0.111, seq=3 dist=0 time=0.133 ms
  unicast from 192.168.0.111, seq=4 dist=0 time=0.215 ms
multicast from 192.168.0.111, seq=4 dist=0 time=0.220 ms
  unicast from 192.168.0.111, seq=5 dist=0 time=0.183 ms
multicast from 192.168.0.111, seq=5 dist=0 time=0.188 ms
  unicast from 192.168.0.111, seq=6 dist=0 time=0.148 ms
multicast from 192.168.0.111, seq=6 dist=0 time=0.153 ms

--- 192.168.0.111 statistics ---
6 packets transmitted, time 5459 ms
unicast:
   6 packets received, 0% packet loss
   rtt min/avg/max/std-dev = 0.128/0.171/0.215/0.030 ms
multicast:
   6 packets received, 0% packet loss since first mc packet (seq 1) recvd
   rtt min/avg/max/std-dev = 0.133/0.177/0.220/0.030 ms
[s80usr@localhost ~]$

Cortamos con ctrl+c el cliente.
El servidor registra las peticiones:

[s80usr@s80sb ssmping-0.9.1]$ ssmpingd
received request from 192.168.0.222
received request from 192.168.0.222
received request from 192.168.0.222
received request from 192.168.0.222
received request from 192.168.0.222
received request from 192.168.0.222

2. Sobre el mismo servidor efectuamos ssmping de cinco paquete con tamaño de 128 bytes y las respuestas multicas has de recibirse por el interfaz eth 0.

[s80usr@localhost ~]$ ssmping -c 5 -s 128 -I eth0 192.168.0.111
ssmping joined (S,G) = (192.168.0.111,232.43.211.234)
pinging S from 192.168.0.222
  unicast from 192.168.0.111, seq=1 dist=0 time=0.147 ms
multicast from 192.168.0.111, seq=1 dist=0 time=0.155 ms
  unicast from 192.168.0.111, seq=2 dist=0 time=0.173 ms
multicast from 192.168.0.111, seq=2 dist=0 time=0.177 ms
  unicast from 192.168.0.111, seq=3 dist=0 time=0.120 ms
multicast from 192.168.0.111, seq=3 dist=0 time=0.243 ms
  unicast from 192.168.0.111, seq=4 dist=0 time=0.191 ms
multicast from 192.168.0.111, seq=4 dist=0 time=0.196 ms
  unicast from 192.168.0.111, seq=5 dist=0 time=0.137 ms
multicast from 192.168.0.111, seq=5 dist=0 time=0.142 ms

--- 192.168.0.111 statistics ---
5 packets transmitted, time 5000 ms
unicast:
   5 packets received, 0% packet loss
   rtt min/avg/max/std-dev = 0.120/0.153/0.191/0.028 ms
multicast:
   5 packets received, 0% packet loss since first mc packet (seq 1) recvd
   rtt min/avg/max/std-dev = 0.142/0.182/0.243/0.038 ms
[s80usr@localhost ~]$

3. Efectuamos ssmping indicando grupo multicast 224.1.2.3:

[s80usr@localhost ~]$ asmping 224.1.2.3 192.168.0.111
asmping joined (S,G) = (*,224.1.2.234)
pinging 192.168.0.111 from 192.168.0.222
  unicast from 192.168.0.111, seq=1 dist=0 time=0.103 ms
multicast from 192.168.0.111, seq=1 dist=0 time=0.112 ms
  unicast from 192.168.0.111, seq=2 dist=0 time=0.114 ms
multicast from 192.168.0.111, seq=2 dist=0 time=0.121 ms
  unicast from 192.168.0.111, seq=3 dist=0 time=0.205 ms
multicast from 192.168.0.111, seq=3 dist=0 time=0.209 ms
  unicast from 192.168.0.111, seq=4 dist=0 time=0.172 ms
multicast from 192.168.0.111, seq=4 dist=0 time=0.177 ms
  unicast from 192.168.0.111, seq=5 dist=0 time=0.138 ms
multicast from 192.168.0.111, seq=5 dist=0 time=0.144 ms

--- 192.168.0.111 statistics ---
5 packets transmitted, time 4498 ms
unicast:
   5 packets received, 0% packet loss
   rtt min/avg/max/std-dev = 0.103/0.146/0.205/0.039 ms
multicast:
   5 packets received, 0% packet loss since first mc packet (seq 1) recvd
   rtt min/avg/max/std-dev = 0.112/0.152/0.209/0.038 ms
[s80usr@localhost ~]$

4. Efectuamos asmping sobre el mismo servidor indicando grupo multicast identificado por la IP 239.192.101.1 de siete paquete con tamaño de 64 bytes utilizando para multicast el interfaz eth 0.

[s80usr@localhost ~]$ asmping -c 7 -s 64 -I eth0 239.192.100.1 192.168.0.111
asmping joined (S,G) = (*,239.192.100.234)
pinging 192.168.0.111 from 192.168.0.222
  unicast from 192.168.0.111, seq=1 dist=0 time=0.136 ms
multicast from 192.168.0.111, seq=1 dist=0 time=0.143 ms
  unicast from 192.168.0.111, seq=2 dist=0 time=0.190 ms
multicast from 192.168.0.111, seq=2 dist=0 time=0.194 ms
  unicast from 192.168.0.111, seq=3 dist=0 time=0.139 ms
multicast from 192.168.0.111, seq=3 dist=0 time=0.145 ms
  unicast from 192.168.0.111, seq=4 dist=0 time=0.212 ms
multicast from 192.168.0.111, seq=4 dist=0 time=0.217 ms
  unicast from 192.168.0.111, seq=5 dist=0 time=0.153 ms
multicast from 192.168.0.111, seq=5 dist=0 time=0.157 ms
  unicast from 192.168.0.111, seq=6 dist=0 time=0.223 ms
multicast from 192.168.0.111, seq=6 dist=0 time=0.227 ms
  unicast from 192.168.0.111, seq=7 dist=0 time=0.171 ms
multicast from 192.168.0.111, seq=7 dist=0 time=0.175 ms

--- 192.168.0.111 statistics ---
7 packets transmitted, time 7000 ms
unicast:
   7 packets received, 0% packet loss
   rtt min/avg/max/std-dev = 0.136/0.174/0.223/0.036 ms
multicast:
   7 packets received, 0% packet loss since first mc packet (seq 1) recvd
   rtt min/avg/max/std-dev = 0.143/0.179/0.227/0.035 ms
[s80usr@localhost ~]$

5. Un ejemplo de mcfirst:

$ mcfirst -c 4 224.2.127.254 9875
mcfirst joined (*,G) = (*,224.2.127.254)
Received 255 bytes from 163.117.180.90 after 12.948 ms (ttl/hops 237)
Received 471 bytes from 130.104.10.139 after 52.974 ms (ttl/hops 240)
Received 294 bytes from 141.225.215.20 after 139.631 ms (ttl/hops 236)
Received 641 bytes from 193.190.113.20 after 243.353 ms (ttl/hops 242)
1661 bytes (payload) and 4 packets received in 0 seconds
Average rate: 48.818 kbits of payload per second
Estimated average rate including all headers: 51.735 kbits per second

mcfisrt hace que el equipo se suscriba a un grupo multicast determinado y se quede esperando respuestas. Al primer paquete recibido se detiene, a menos que se le indique un número de respuestas determinado (como en este caso 4).

Carencias encontradas

Como deficiencias detectadas existen tres principalmente:

1. No existe opción para permitir indicar el intervalo entre peticiones y éste debería de poder hacerse al menos en el rango de milisegundos.

2. No hay opción para mostrar los timestamp obsolutos entre cada paquete.

3. No hay opción para especificar el puerto UDP usado para multicast.

Referencias

[1] http://www.venaas.no/multicast/ssmping/

[2] http://tools.ietf.org/html/draft-ietf-mboned-ssmping-02

Deja un comentario

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