lunes, 30 de enero de 2012

Multicast


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.  

No hay comentarios:

Publicar un comentario