La tecnología multicast representa un servicio de
red en el cual un único flujo de datos, proveniente de una determinada fuente,
se puede enviar simultáneamente a diversos receptores interesados. Cabe a la
infraestructura de red transportar este flujo de datos, replicándolo cuando sea
necesario, para todos los receptores que registren interés en recibir estos
datos.
En redes TCP/IP, estos receptores son representados por una
dirección de grupo o dirección multicast. Esta dirección de grupo
corresponde a una dirección IP que pertenece a la antigua clase D, es decir, en
la franja entre 224.0.0.0 y 239.255.255.255. Cada fuente envía paquetes hacia
una dirección de grupo (por ejemplo: 233.7.124.1), en el cual estarán asociados
diversos receptores. Estos receptores, a su vez se pueden vincular y
desvincular en forma dinámica. Cabe a los dispositivos de la red y en
particular a los enrutadores, determinar cuáles de sus interfaces poseen
receptores interesados en un grupo multicast y cuáles deberán recibir
una copia de los paquetes enviados para ese grupo.
El multicast está orientado hacia aplicaciones del
tipo "uno para muchos" y "muchos para muchos". En estos
casos, presenta claras ventajas cuando se lo compara con los mecanismos de
transmisión unicast y broadcast. En unicast, es necesario
que la fuente replique varios flujos de datos idénticos con el objeto de
transmitirlos a cada uno de los receptores, generando desperdicio de banda. Por
otro lado, el sistema broadcast envía los datos a toda la red de
forma indiscriminada. Esto también da como resultado el desperdicio de
recursos, pues implica en transporte de datos para todas las estaciones de la
red, aunque el número de receptores deseosos de que ese contenido sea reducido.
Con multicast, la fuente de tránsito envía una única copia de los paquetes
hacia una dirección de grupo multicast. La infraestructura de red replica
estos paquetes de forma inteligente, encaminando los datos de acuerdo con la
topología de receptores interesados en esa información.
Entre las diversas aplicaciones que pueden obtener ganancias
con el uso de multicast están: videoconferencia; aprendizaje a
distancia; distribución de software, noticias e informaciones de mercado;
conciertos al vivo; actualización de bases de datos; juegos distribuidos;
procesamiento competidor; simulacros distribuidos etc...
Como el lector ya sabrá, el espacio de direccionamiento IP
se distribuye en tres grupos o clases de direcciones, las direcciones de clase
A, B y C. Hay una cuarta clase, la clase D, reservada para las direcciones
multicast. La clase D tiene reservado el rango de direcciones IPv4 entre la
224.0.0.0 y la 239.255.255.255.
Los 4 bits de mayor peso de la dirección IP permiten
direccionar entre el valor 224 y el 239. Los 28 bits restantes de menor peso,
están reservados para el identificador del grupo multicast, tal y como se
muestra en el siguiente gráfico:
Las direcciones multicast IPv4 a nivel de red, deben
mapearse sobre las direcciones físicas correspondientes al tipo de red con el
se esté trabajando. Si se estuviese trabajando con direcciones a nivel de red
unicast, se obtendría la dirección física asociada haciendo uso del protocolo
ARP, en el caso de direcciones de red multicast, no se puede usar ARP y habrá
que obtener la dirección física asociada mediante un procedimiento diferente.
Se han definido varios documentos RFC (Request For Comments) que
especifican la forma de realizar este mapeo:
Correspondencia de direcciones multicast IPv4 a direcciones
físicas Ethernet: RFC 1112.
Correspondencia a redes FDDI: RFC 1390.
Correspondencia a redes Token-Ring: RFC 1469.
En las redes Ethernet, que son las redes más comunes, el
mapeo se realiza colocando en los 24 bits de mayor peso de la dirección
Ethernet los valores 01:00:5E. El siguiente bit siempre tiene un valor de 0 y
los 23 bits de menor peso restantes contienen el valor de los 23 bits de menor
peso de la dirección
multicast IPv4. Este proceso se muestra en el siguiente gráfico:
Por ejemplo, la dirección multicast IPv4 224.0.0.5 se
correspondería con la dirección física Ethernet 01:00:5E:00:00:05.
Hay algunas direcciones multicast IPv4 especiales:
La dirección 224.0.0.1 identifica a todos los hosts de una
subred. Cualquier host con capacidades multicast que se encuentre en una subred
deberá unirse a este grupo.
La dirección 224.0.0.2 identifica a todos los routers con
capacidades multicast de una subred.
El rango de direcciones 224.0.0.0 - 224.0.0.255 está
reservado para protocolos de bajo nivel. Los datagramas destinados a
direcciones dentro de este rango nunca serán encaminados por routers multicast.
El rango de direcciones 239.0.0.0 - 239.255.255.255 está reservado
para usos administrativos. Las direcciones en este rango se asignan de forma
local por cada organización pero no se asegura que no existan otras direcciones
como esas fuera de la red de la organización. Los routers de la organización no
deberán encaminar los datagramas destinados a direcciones dentro de este rango
fuera de la red corporativa.
Hay más direcciones multicast reservadas que las aquí
mostradas, para una referencia completa consultar la última versión disponible
del RFC "Assigned Numbers".
La siguiente tabla muestra el espacio de direccionamiento
multicast completo, junto con las denominaciones comunes para cada rango y el
TTL asociado a cada uno de ellos. El TTL en el multicast IPv4 tiene un doble
significado. Por un lado controla el tiempo de vida de un datagrama en la red,
como el lector ya sabrá, para evitar que un datagrama entre en un bucle
infinito, en caso de que exista una mala configuración de las tablas de
encaminamiento. Si además estamos trabajando con multicast, el TTL define el
ámbito del datagrama, es decir, cómo de lejos llegará. De esta forma se
puedan definir varios ámbitos de alcance de los datagramas según la categoria a
la que pertenezcan:
|
Ambito
|
TTL
|
Rango de Direcciones
|
Descripción
|
|
Nodo
|
0
|
|
El datagrama está restringido al propio host. No saldrá
por ninguno de sus interfaces de red.
|
|
Enlace
|
1
|
224.0.0.0 - 224.0.0.255
|
El datagrama está restringido a la subred local al host
que lo envía, no será encaminado por ningún router.
|
|
Departamento
|
< 32
|
239.255.0.0 - 239.255.255.255
|
Restringido a un departamento concreto dentro de la
organización.
|
|
Organización
|
< 64
|
239.192.0.0 - 239.195.255.255
|
Restringido a una organización concreta.
|
|
Global
|
< 255
|
224.0.1.0 - 238.255.255.255
|
Sin restricción. Su ámbito es global.
|
Funcionamiento del Multicast
En una LAN, un interface de red de un host subirá a niveles
superiores todas aquellas tramas que considere que van destinadas a él. Estas
tramas serán aquellas que tengan como dirección de destino la dirección física
asociada al interface, o aquellas tramas cuya dirección de destino sea la
dirección de broadcast.
Si el host se ha unido a un grupo multicast, el interface de
red deberá reconocer también como tramas destinadas a él, todas aquellas cuya
dirección de destino sea la correspondiente al grupo de multicast al cual
se haya unido el host.
Por tanto, si un host de una red tiene un interface cuya
dirección física es 80:C0:F6:A0:4A:B1 y además se ha unido al grupo 224.0.1.10,
las tramas que reconocerá como destinadas a él serán aquellas cuya dirección de
destino sea alguna de las siguientes:
La dirección del interface: 80:C0:F6:A0:4A:B1
La dirección de broadcast: FF:FF:FF:FF:FF:FF
La dirección asociada al grupo: 01:00:5E:00:01:0A
En el caso de querer trabajar con multicast en WAN, se
necesitan routers con soporte multicast que se comuniquen entre ellos mediante
algún protocolo de encaminamiento que contemple el multicast. Cuando un proceso
en un host de una subred se asocia a un grupo multicast, este host envia un
mensaje IGMP a todos los routers multicast de su subred, informándoles que
cuando reciban un mensaje multicast destinado al grupo al cual él se ha
asociado, lo envíen a la subred para que pueda recibirlo. Estos routers le
comunicarán esta información al resto de routers multicast de tal forma que todos
los routers sepan a quién deberán encaminar los mensajes multicast que le
lleguen.
Los routers además envían de forma periódica mensajes IGMP
al grupo 224.0.0.1 solicitando a los hosts información sobre los grupos a los
cuales están asociados. Un host, al recibir este mensaje inicializa un
temporizador con un valor aleatorio, y no contestará hasta que este
temporizador llegue a cero. Con esto se evita que todos los hosts contesten a
la vez, produciendo una sobrecarga innecesaria en la red. Cuando el temporizador
de alguno de los hosts llegue a cero, enviará su contestación a la dirección
del grupo multicast concreto del cual esté informando, por lo que el resto de
hosts asociado a ese grupo verán la contestación, y anularán su temporizador no
generando por tanto su respuesta. Esto se hace porque con un host que conteste
es suficiente, al router únicamente le hace falta saber que hay un host
interesado en determinado grupo en esa subred, con eso le basta para redirigir
los mensajes multicast destinados al grupo, el resto de hosts los recibirán y
no es necesario por tanto que también contesten ellos.
Si todos los hosts que estaban en un determinado grupo, se
quitan del mismo, entonces ninguno contestará a los mensajes del router, quién
al ver que ya no hay nadie interesado en determinado grupo en una subred,
dejará de encaminar a la misma los mensajes destinados a ese grupo. Otra
opción, implementada en IGMPv2, es que el propio host indique a los routers que
ha abandonado un determinado grupo, enviando para ello un mensaje a la
dirección 224.0.0.2.