Linux es, por supuesto (¿lo dudaba?), completamente capaz de hacer Multicast en el Nivel 2. Cumple todos los requisitos para enviar, recibir y actuar como un encaminador (mrouter) para datagramas multicast.
Si quiere sólo enviar y recibir debe decir «sí» a la pregunta
«IP: multicasting» cuando configure su kernel. Si también
quiere que su ordenador con Linux pueda actuar como un encaminador de
multicast (mrouter) debe activar también encaminamiento multicast en
el kernel seleccionando: «IP: forwarding/gatewaying»,
«IP: multicast routing» y «IP: tunneling»,
este último porque las nuevas versiones de mrouted
dependen
de túneles sobre IP para enviar los datagramas de multicast
encapsulados en datagramas de unicast. Es necesario cuando se
establecen túneles entre ordenadores con multicast separados por redes
y encaminadores capaces sólo de unicast (el demonio mrouted
implementa el algoritmo de encaminamiento multicast -la política de
encaminamiento- e indica al kernel cómo debe encaminar datagramas
multicast).
Algunas versiones del kernel marcan el encaminamiento de multicast como «EXPERIMENTAL», así que debe activar la opción «Prompt for development and/or incomplete code/drivers» (Preguntar por dispositivos/código incompleto o/y en desarrollo) en la sección «Code maturity level options» (Opciones de madurez del código n. del t.).
Si cuando se está ejecutando mrouted
, el tráfico generado en
la misma red que el ordenador al que su GNU/Linux está conectado se
reenvía correctamente a la otra red, pero no puedes ver el tráfico de
la otra red en su red local, compruebe si está recibiendo mensajes de
error de protocolo ICMP. Lo más posible es que olvidase activar los
túneles sobre IP en su encaminador GNU/Linux. Es un error algo
estúpido cuando lo conoces, pero, creame, lleva mucho tiempo
encontrarlo cuando no es así, y no hay razón aparente que indique qué
algo está funcionando mal. Un sniffer demuestra ser muy útil en estas
situaciones.
(Puede ver más sobre encaminamiento multicast en la sección
Políticas de encaminamiento y técnicas de reenvío; se explica también mrouted
y los túneles en las
secciones
El Mbone y
Aplicaciones Multicast).
Una vez que ha compilado e instalado su nuevo kernel, debe dar una ruta por defecto al tráfico multicast. El objetivo es añadir una ruta para la red 224.0.0.0.
El problema al que la mayor parte de la gente se enfrenta en este
punto de la configuración es la elección del valor de la máscara de
red. Si ha leído el excelente
NET-3-HOWTO de Terry Dawson
[aún no
traducida, n. del t.], no te debería ser difícil
adivinar el valor correcto. Como allí se explica, la máscara es un
número de 32 bits con todo unos en la parte de red de su dirección IP,
y con todo ceros en la parte de ordenadores. Recuerde de la sección
Direcciones Multicast que una dirección
multicast clase D no tiene parte de red ni ordenador. En su lugar
tiene un identificador de grupo de 28 bits y un identificador de clase
D de 4 bits. Pues bien, estos 4 bits son la parte de red y los
restantes 28 la parte de los ordenadores. Así que la máscara buscada
es 11110000000000000000000000000000 o, más fácilmente: 240.0.0.0.
Entonces el comando completo debería ser:
route add 224.0.0.0 netmask 240.0.0.0 dev eth0
Dependiendo de lo viejo que sea su programa route
, puedes
tener que poner el flag -net
después de add
.
Aquí suponemos que eth0
tiene capacidades multicast y que,
cuando no se indique lo contrario, queremos que se envíe el tráfico
multicast por allí. Si este no es su caso, cambie el parámetro
dev
al correspondiente.
El sistema de ficheros /proc
demuestra ser útil aquí una vez
más: puede comprobar /proc/net/igmp
para ver los grupos a los
que su ordenador está suscrito actualmente.