Una multidifusión confiable es cualquier protocolo de red informática que proporciona una secuencia confiable de paquetes a múltiples destinatarios simultáneamente, lo que lo hace adecuado para aplicaciones como la transferencia de archivos entre múltiples receptores .
La multidifusión es un método de direccionamiento de red para la entrega de información a un grupo de destinos simultáneamente utilizando la estrategia más eficiente para entregar los mensajes a través de cada enlace de la red solo una vez, creando copias solo cuando los enlaces a los múltiples destinos se dividen (típicamente conmutadores de red y enrutadores ). Sin embargo, al igual que el Protocolo de datagramas de usuario , la multidifusión no garantiza la entrega de un flujo de mensajes. Los mensajes pueden descartarse, entregarse varias veces o entregarse fuera de orden. Un protocolo de multidifusión confiable agrega la capacidad para que los receptores detecten mensajes perdidos y/o fuera de orden y tomen medidas correctivas (similar en principio a TCP ), lo que da como resultado un flujo de mensajes en orden y sin interrupciones.
El significado exacto de confiabilidad depende de la instancia de protocolo específica. Una definición mínima de multidifusión confiable es la entrega final de todos los datos a todos los miembros del grupo, sin imponer ningún orden de entrega en particular . [1] Sin embargo, no todos los protocolos de multidifusión confiables garantizan este nivel de confiabilidad; muchos de ellos intercambian eficiencia por confiabilidad, de diferentes maneras. Por ejemplo, mientras que TCP hace que el remitente sea responsable de la confiabilidad de la transmisión, los protocolos de multidifusión basados en NAK transfieren la responsabilidad a los receptores: el remitente nunca sabe con certeza si todos los receptores han recibido de hecho todos los datos. [2] RFC-2887 explora el espacio de diseño para la transferencia de datos en masa, con una breve discusión sobre los diversos problemas y algunas pistas sobre los posibles significados diferentes de confiable .
Reliable Group Data Delivery (RGDD) es una forma de multidifusión en la que un objeto se mueve desde una única fuente a un conjunto fijo de receptores conocidos antes de que comience la transmisión. [3] [4] Una variedad de aplicaciones pueden necesitar dicha entrega: Hadoop Distributed File System (HDFS) replica cualquier fragmento de datos dos veces más en servidores específicos, la replicación de VM a múltiples servidores puede ser necesaria para escalar aplicaciones y la replicación de datos a múltiples servidores puede ser necesaria para equilibrar la carga al permitir que varios servidores brinden los mismos datos desde sus copias en caché locales. Este tipo de entrega es frecuente dentro de los centros de datos debido a la gran cantidad de servidores que se comunican mientras ejecutan aplicaciones altamente distribuidas.
La RGDD también puede ocurrir entre centros de datos y a veces se la denomina transferencias punto a multipunto (P2MP) entre centros de datos. [5] Estas transferencias entregan enormes volúmenes de datos desde un centro de datos a múltiples centros de datos para varias aplicaciones: los motores de búsqueda distribuyen actualizaciones del índice de búsqueda periódicamente (por ejemplo, cada 24 horas), las aplicaciones de redes sociales envían contenido nuevo a muchas ubicaciones de caché en todo el mundo (por ejemplo, YouTube y Facebook) y los servicios de respaldo hacen varias copias geográficamente dispersas para una mayor tolerancia a fallas. Para maximizar la utilización del ancho de banda y reducir los tiempos de finalización de las transferencias masivas, se han propuesto diversas técnicas para la selección de árboles de reenvío de multidifusión. [5] [6]
Los sistemas modernos como Spread Toolkit , Quicksilver y Corosync pueden alcanzar velocidades de datos de 10 000 multidifusiones por segundo o más, y pueden escalar a redes grandes con enormes cantidades de grupos o procesos.
La mayoría de las plataformas informáticas distribuidas admiten uno o más de estos modelos. Por ejemplo, todas las plataformas CORBA orientadas a objetos, que cuentan con un amplio soporte, admiten transacciones y algunos productos CORBA admiten la replicación transaccional en el modelo de serialización de una copia. El "estándar de objetos tolerantes a fallos CORBA" se basa en el modelo de sincronía virtual. [7] La sincronía virtual también se utilizó en el desarrollo de la arquitectura de tolerancia a fallos de la Bolsa de Nueva York, el sistema de control del tráfico aéreo francés, el sistema AEGIS de la Armada de los EE. UU., la arquitectura de replicación de procesos empresariales de IBM para WebSphere y la arquitectura de clústeres de Windows de Microsoft para servidores empresariales Windows Longhorn . [8]
La Universidad de Cornell fue la primera en ofrecer soporte para Virtual Synchrony, que se denominó "Isis Toolkit". [9] La versión más actual de Cornell, Vsync, se lanzó en 2013 con el nombre de Isis2 (el nombre se cambió de Isis2 a Vsync en 2015 a raíz de un ataque terrorista en París por parte de una organización extremista llamada ISIS), con actualizaciones y revisiones periódicas desde entonces. La versión estable más actual es la V2.2.2020; se lanzó el 14 de noviembre de 2015; la versión V2.2.2048 está actualmente disponible en forma Beta. [10] Vsync está dirigido a los centros de datos masivos que admiten la computación en la nube .
Otros sistemas similares incluyen el sistema Horus [11] , el sistema Transis, el sistema Totem, un sistema IBM llamado Phoenix, un sistema distribuido de gestión de claves de seguridad llamado Rampart, el "sistema Ensemble", [12] el sistema Quicksilver , "el proyecto OpenAIS", [13] su derivado Corosync Cluster Engine y una serie de productos (incluidos los de IBM y Microsoft mencionados anteriormente).