x
1

Multicast



La multidifusión o difusión múltiple (en inglés: multicast) es el envío de la información en múltiples redes a múltiples destinos simultáneamente.

Antes del envío de la información, deben establecerse una serie de parámetros. Para poder recibirla, es necesario establecer lo que se denomina "grupo multicast". Este grupo multicast tiene asociada una dirección de Internet, de esta forma el emisor del mensaje multicast lo envía a uno o varios grupos y, posteriormente, el mensaje llega a los procesos que están suscritos a dicho grupo, pudiendo estar un proceso suscrito a varios a la vez. La versión actual del protocolo de Internet (Internet Protocol o IP), conocida como IPv4, reserva las direcciones de tipo D para la multidifusión. Las direcciones IP tienen 32 bits, y las de tipo D son aquellas en las cuales los 4 bits más significativos son '1110' (224.0.0.0 a 239.255.255.255).

Encaminamiento

Cast.svg

Única difusión
(unicast)

Unicast.svg

Alguna difusión
(anycast)

Anycast.svg

Amplia difusión
(broadcast)

Broadcast.svg

Múltiple difusión
(multicast)

Multicast.svg

Geodifusión
(geocast)

Geocast.svg

Algunos ejemplos de multidifusión en internet son:

El direccionamiento grupal antes mencionado es una de las propiedades clave de la multidifusión IP, ya que es fundamental para el funcionamiento de este concepto de comunicación. Además, existe la posibilidad de asignar un direccionamiento estático en el que, por ejemplo, se puede configurar una conexión a un servidor multicast para que este ofrezca el servicio correspondiente.

Bormann[1]​ define el concepto de fiabilidad desde el punto de vista del emisor y del receptor del mensaje. Desde el punto de vista del segundo, se considera que el protocolo es fiable si este puede determinar cuándo está fallando. Por otro lado, desde el punto de vista del emisor, se considera que es fiable si se asegura (con suficiente probabilidad) que todos los mensajes llegan dentro de un tiempo límite a todos los receptores no fallidos. Es decir, el término de fiabilidad está ampliamente relacionado con los mecanismos de recuperación y detección de errores.

En cuanto al concepto de fiabilidad en multicast, se puede dar la siguiente definición: El término fiabilidad en multicast corresponde con la entrega finalmente de todos los datos a todos los miembros del grupo, sin cumplir ningún orden de entrega particular.[2]

Se distinguen dos tipos de multidifusión dependiendo del método de recuperación de errores que se utilice: sender-initiated o receiver-initiated.[3]

En la multidifusión básica consideramos que la comunicación es fiable uno a uno. En este tipo de multidifusión planteamos un protocolo en el que se usa un método de recuperación de errores del tipo sender-initiated, es decir, aquel en el cual es el emisor el responsable de la recuperación del error, consistiendo en que cada receptor envía un acuse de recibo (ACK) al emisor cuando les llega un mensaje del mismo.

Este método es problemático en entornos donde existen varios grupos multicast ya que llegarán al remitente una gran cantidad de ACK, provocando lo que conocemos como implosión de ACK, en la que se produce una saturación del emisor.

En este tipo de multidifusión el mensaje se entrega al menos una vez, por lo que pueden producirse problemas de duplicación. Además, decimos que es fiable uno a uno ya que no cumple con el concepto de acuerdo o atomicidad: si un proceso recibe un mensaje entonces todo el grupo lo recibe; o todos o ninguno.

La multidifusión se utiliza ampliamente para tráfico multimedia, por lo que la pérdida ocasional de paquetes no es un problema. Sumando esto con que la multidifusión IP es muy fiable y con los problemas mencionados en la multidifusión básica, se utiliza frecuentemente multidifusión IP sobre UDP.

En este tipo se usa el segundo método mencionado anteriormente de recuperación de errores, el receiver-initiated, en el que el responsable de la recuperación del error es el receptor. Es decir, no se envían acuses de recibo (ACK) por separado si no que el emisor los manda adjuntos en otros mensajes que envíe al grupo confirmando la recepción de mensajes anteriores, lo que se conoce como piggiebacked (p. ej. el emisor envía un mensaje X a un proceso p y confirma mediante un ACK adjunto que recibió correctamente un mensaje de p anteriormente). Además, los receptores enviarán acuses de recibo negativos (NACK) por separado cuando se detecte la pérdida de algún mensaje.

En este método también se puede producir una implosión, pero de NACK. Para evitarlo, si un determinado número de receptores no recibe el mensaje actual pero recibe el siguiente, entonces estos comienzan un tiempo de espera aleatorio y el NACK se mandará al emisor solamente una vez por el receptor cuyo tiempo aleatorio termine antes. De este modo se consigue minimizar los NACK duplicados. Este tipo de mecanismos son conocidos como RINA (Receiver-Initiated with NACK Avoidance).[4]

En la multidifusión fiable, un proceso emisor entrega un mensaje como mucho una vez y sí que se cumple el concepto de acuerdo.

Planteamos un ejemplo con un grupo formado por 3 procesos {p, q, r}.

Consideraciones previas:

En cuanto al envío del mensaje multicast, el proceso emisor manda dicho mensaje al grupo adjuntando el número de secuencia correspondiente y los acuses de recibo necesarios. Además, se aumenta el número de secuencia ( = + 1) cuando el mensaje sea entregado por los procesos receptores.

Por otro lado, en cuanto a la recepción, para explicar el concepto se plantea la siguiente situación: recepción en q de un mensaje de p para el grupo g, con un número de secuencia y acuses de recibo <q, > adjuntos. Tenemos tres escenarios:

Como se ve en la imagen de la derecha, el mensaje actual es entregado por q y por r aunque queden mensajes anteriores por llegar, es decir, los mensajes llegan en distinto orden para los diferentes procesos. Este aspecto se soluciona utilizando otro tipo de multidifusión conocida como multidifusión ordenada.

En el caso de que sea el proceso emisor el que ha perdido mensajes, será notificado por el proceso correspondiente con un NACK.

El algoritmo de multidifusión fiable sobre IP-multicast no garantiza que los mensajes lleguen siempre en el mismo orden y esto puede ser un problema para las aplicaciones que requieren un orden.

Los tipos de ordenación más frecuentes son la ordenación total, causal y la ordenación FIFO.

Tipos de ordenación

Una multidifusión con ordenación FIFO tiene dos operaciones: OF-Multicast y OF-Entrega.

Se utilizarán las siguientes variables en el proceso P:

Cuando se realiza la operación OF-multicast de p para el grupo g

Cuando p recibe un mensaje de q:

Este algoritmo tiene en cuenta la relación “sucedió antes que" y se emplean las operaciones de ordenamiento causal: OC-multicast y OC-entrega, cada proceso pi tiene su propio vector de marcas temporales.

Variables en el proceso p

Vpg vector con el no de mensajes recibidos de cada proceso

Para enviar un mensaje mediante OC-multicast al grupo g, el proceso suma 1 a su entrada en el vector de marcas temporales y envía el mensaje mediante B-multicast a g junto con su marca de tiempo.

Cuando un proceso pi B-entrega un mensaje pj, tiene que colocarlo en la cola de retención antes de realizar la OC-entrega: primero debe asegurarse de haber entregado todos los mensajes que sucedieron antes, esto se comprueba de las siguientes maneras:

La manera básica de implementar la ordenación total es asignar identificadores totalmente ordenados a los mensajes que se multidifunden de tal forma que todo proceso realice la misma ordenación basada en esos identificadores.

Existen dos métodos para asignar identificadores a los mensajes:

El proceso elegido como secuenciador es el encargado de ordenar los mensajes.

Cuando un proceso desea enviar un mensaje m con OT-multicast este se envía al secuenciador.

El secuenciador le asigna un número de secuencia de forma creciente y consecutiva a los mensajes que B-entrega y lo envía a todos los procesos del grupo.

El secuenciador anuncia la secuencia de números mediante B-multicast al grupo g de mensajes con el ordenamiento.

Un mensaje permanecerá retenido en la cola indefinidamente hasta que pueda efectuarse OT-entrega de acuerdo con el correspondiente número de secuencia.

Fue originariamente desarrollado para la herramientas ISIS (la empresa que comercializaba esta herramienta ya no existe, pero ISIS operó en la bolsa de valores de NY y sigue usándose en el sistema de control de tráfico aéreo francés o en el navío de guerra americano AEGIS[1]. Actualmente, ISIS ha evolucionado hacia una nueva versión más centrada en replicación llamada VSync[2]). Teniendo n procesos, las variables para el proceso qson:

Agq: mayor número de secuencia acordado para el grupo g del proceso q

Pgq: mayor número de secuencia propuesto para el grupo g del proceso q

Implementación

A la hora de implementar este acuerdo tenemos tres partes (teniendo n procesos):

Ejemplo práctico

● Si se busca un desempeño optimizado de la red.

● Cuando se desea soporte para aplicaciones distribuidas.

● En caso de querer economizar en recursos.

● Si se quiere hallar facilidad de crecimiento en escala.



Escribe un comentario o lo que quieras sobre Multicast (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!