Mecanismos de Difusión Masiva en Aplicaciones Distribuidas Diego Marcos Jorquera, Virgilio Gilart Iglesias, Francisco José Mora Gimeno y Francisco Maciá Pérez En la actualidad, y motivado entre otras cosas por la llegada de los servicios integrales por Internet, muchos de los presentes procesos de transmisión de información suelen estar marcados por dos características diferenciadoras: se transfieren grandes volúmenes de información y a un elevado número de destinatarios. Con la tecnología que venimos usando hasta el momento orientada a las comunicaciones uno a uno estas trasmisiones suponen un serio problema ya que saturan los canales de comunicación y se producen altos retardos en el proceso global de comunicación. En este sentido las nuevas tecnologías de comunicaciones uno a muchos o muchos a muchos aportan una solución mucho más escalable al problema de la difusión de información masiva. En el presente documento se analiza la incorporación de procesos de comunicación multicast en aplicaciones que requieren la transmisión confiable de grandes volúmenes de información de carácter genérico a través de redes de comunicación sobre las que no se tiene ningún control, proponiendo como caso de uso la incorporación de procesos de difusión en Gaia, un sistema de regeneración de nodos. 1 Introducción La comunicación y el uso de redes de computadores, así como su rápida y amplia expansión en la sociedad actual, han revolucionado la forma en la que nos relacionamos, trabajamos o nos divertimos. La aceptación de las nuevas tecnologías es cada vez mayor y su uso se ha incrementado de manera espectacular en los últimos años. Por ello las tecnologías e infraestructuras que hacen posible su uso han tenido que sufrir los efectos de este escalado, adaptándose en la medida de lo posible a las nuevas necesidades. En la actualidad muchos de los procesos de transmisión de información suelen estar marcados por dos características diferenciadoras: grandes volúmenes de información y elevado número de destinatarios. Con la tecnología que venimos usando hasta el momento estas trasmisiones suponen un serio problema ya que saturan los canales de comunicación y se producen altos retardos en el proceso global de comunicación. q Internet Servidor Fig. 1. Esquema del proceso de difusión de información masiva a múltiples destinatarios mediante redes heterogéneas El Grupo de Redes de la Unidad Singular de Investigación Redes de Computadores e Informática Industrial del Departamento de Tecnología Informática y Computación de la Universidad de Alicante centraliza mucha de su actividad en el estudio y realización de sistemas que faciliten la gestión y mantenimiento de las redes de computadores. En este ámbito, el grupo ha desarrollado un sistema, denominado Gaia [1], dedicado a la regeneración de nodos de red y que se enmarca dentro del desarrollo de grandes aplicaciones distribuidas. Este sistema debe realizar transferencias de información masiva, a través de redes de comunicaciones de área amplia, heterogéneas y sobre las que no se tiene control ni de los dispositivos de networking que la conforman, ni sobre su configuración. Esta información, tiene como destinatarios en multitud de ocasiones a más de un equipo al mismo tiempo. En concreto, el problema que se plantea es la distribución masiva de grandes volúmenes de información a través de redes de comunicación heterogéneas, sobre las que no se tiene ningún control, y dirigida a un también heterogéneo y variable conjunto de nodos destino. Las características que describen el problema y que se ilustran en la Fig. 1 son: • Desde el punto de vista del usuario final, la información a difundir se almacena en forma de paquetes software de información. Cada paquete supone una unidad funcional independiente y puede ser encapsulada en un único archivo. • Los paquetes software pueden residir en más de una ubicación (o nodo de red). Cada nodo que contiene información se denomina repositorio software. Es desde estos repositorios desde los que debe difundirse la información hacia los diferentes nodos. Estos nodos receptores de información representan los clientes del servicio de difusión. • Cada paquete contiene información de carácter genérico, en formato compactado y codificado. En general se debe asumir que son de gran tamaño, normalmente de cientos de megabytes, potencialmente pueden ser de cualquier tamaño. En una sesión de difusión pueden verse implicados un gran volumen de paquetes software de diferentes características. Puesto que la información es de carácter totalmente general, no puede hacerse uso de su estructura o contenido para mejorar las características de la difusión o de su compresión, como ocurre en otros casos; por ejemplo, en el streaming de vídeo. • Los clientes que demandan la información representan un conjunto heterogéneo de nodos. Esta diversidad se materializa en diversos aspectos: desde su arquitectura, sistema operativo y configuración tanto software como hardware; pasando por sus diferentes velocidades de transmisión; hasta su funcionalidad. La distancia entre el emisor y cada cliente podrá ser diferente. • Para una determinada sesión de difusión, el conjunto de receptores puede estar constituido desde por un único cliente hasta por un elevado número de nodos (siempre manteniendo su heterogeneidad). • La información comunicaciones debe trasladarse globales, a compuestas través por de redes dispositivos de de networking heterogéneos, sobre los que no se tiene, en general, control, ni capacidad de configuración o administración. Esta circunstancia impide que se pueda proporcionar calidad de servicio (QoS), realizar reservas de ancho de banda, utilizar canales fijos, o mantener las características de una comunicación a lo largo de todo el proceso. o La solución deberá ser independiente de la infraestructura de red sobre la que se opere. La información podrá viajar por diferentes tipos de arquitecturas y tecnologías de red. o La topología de la red de trabajo es variable, pudiéndose dar cualquier tipo de distribución entre las diferentes subredes que la compongan. o La velocidad de la red podrá variar en función de la carga de la misma, pudiéndose dar casos de elevado uso e incluso de saturación. • La distribución de la información se realizará en el ámbito del uso de protocolos de red normalizados, como puede ser TCP/IP. La solución que se ofrezca deberá estar acorde a los estándares establecidos, no requiriendo la modificación de elementos como routers o pasarelas. • La transferencia de un paquete software debe de ser confiable, de manera que se pueda determinar tanto la correcta recepción del mismo, como que dicha recepción se realiza dentro de unos límites de tiempo establecidos. • Cuando así se requiera, deberá poder garantizarse la privacidad de la comunicación. Puesto que la información debe viajar por medios sobre los que no se tiene control, se deben aplicar técnicas de codificación que aseguren: o Al emisor, que la información se dirige al destinatario deseado. o Al receptor, que dicha información proviene del emisor esperado. o A ambos, que la comunicación es privada. 2 Antecedentes La mayoría de los procesos y tecnologías de transferencia de información entre equipos utilizando redes de computadores han estado marcados por el principalmente, en técnicas uso de protocolos fundamentados, unicast, donde el traspaso de la información se realiza entre dos únicos nodos [2]. Otros protocolos, principalmente destinados a procesos de control de la red [3][4][5], utilizan técnicas de broadcast donde la información es enviada por un único nodo origen, siendo su destino todos los nodos de la red (normalmente en el ámbito de las redes locales). Estas tecnologías aprovechan las características que algunos medios tienen para la difusión de información, de manera que la información es enviada una sola vez, pudiendo llegar en una misma transacción a todos los componentes de la red y reduciendo así el trafico de red. Protocolos como TCP/IP [6] basan su filosofía de trabajo en estas técnicas, proporcionando a las aplicaciones una capa de servicios mediante la cual poder establecer transferencia de información entre nodos, con un esquema orientado a conexión (TCP) o no (UDP). Mediante estos protocolos se puede satisfacer la mayoría de los requerimientos de las aplicaciones que necesitan una comunicación bidireccional entre equipos. Sin embargo y motivado principalmente por la aparición e incremento del uso de los recursos multimedia, que comenzó a afianzarse en los años 90, surgen una serie de nuevos requerimientos en las comunicaciones que precisan de un cambio filosófico en la manera de transmitir la información [7]. Las características de estos nuevos sistemas de transferencia son, por una parte, la gran cantidad de información a transmitir y, por otra, el elevado numero de equipos a los que va destinada dicha información, en algunos casos del orden de miles o incluso millones de receptores. Mediante una transferencia unicast clásica obtendríamos resultados desfavorables ya que habría que repetir la transferencia de la información por cada uno de los destinatarios, con lo que el resultado sería un proceso global lento y sobre todo poco escalable. Se hace necesario pues introducir nuevos modelos de trabajo que permitan aprovechar mejor el uso de la red. Multicast es una tecnología que nos permite transferir la información desde un emisor a un conjunto determinado de destinatarios. El uso de técnicas multicast para la transmisión de archivos a más de un cliente mejora sustancialmente el rendimiento ya que el equipo origen emite la información una única vez, evitando la repetición de la información a transmitir. Estas técnicas son mucho más escalables a la hora de distribuir la información ya que el envío de los datos no es dependiente del número de destinatarios [8]. Una utilización clara del uso del multicast, y precursora en cierta manera de su desarrollo, es el streaming de audio o video. En este tipo de aplicaciones un servidor emite de manera continua un flujo de paquetes conteniendo la información multimedia que los clientes deben presentar. Los clientes, según van recibiendo estos paquetes, van reproduciendo la información en tiempo real en función de su tipo y el dispositivo final en el que se está presentando. En caso de que se pierda uno o más paquetes de la secuencia, el cliente lo refleja mediante una pausa puntual en la reproducción o un decremento de la calidad, resolución o frecuencia del contenido. Esto es posible ya que existen codificaciones de contenidos multimedia que nos permiten realizar su reproducción en condiciones de pérdida de información. En cualquier caso el cliente normalmente no necesita comunicarse con el equipo origen para informar de la pérdida de datos, es decir, se trata de una comunicación unidireccional y no confiable. Usando este tipo de comunicación el sistema es altamente escalable ya que la transmisión se realiza de manera independiente al número de destinatarios. Sin embargo, en otros escenarios necesitamos que el sistema sea confiable, es decir, tenemos que asegurar la total recepción de la información por parte de los destinatarios. Pongamos como ejemplo un servidor de software que necesita enviar la instalación de una aplicación a cientos o miles de clientes. Al final de la transmisión tenemos que asegurar que todos los clientes han recibido la totalidad del paquete software. En estos casos la escalabilidad del sistema está más cuestionada, ya que la simple confirmación de la recepción de la información se multiplica por el número de clientes, por lo que se pude saturar la red con los paquetes de control. La Tabla 1 muestra una distribución de los diferentes tipos de aplicaciones que nos podemos encontrar en función del tipo de datos y el tipo de transmisión. Tabla 1. Tipos de aplicaciones multicast. Multimedia Datos En tiempo real Sin tiempo real Streaming de video Descarga de video Videoconferencia Replicación de repositorios multimedia Streaming de audio Distribución de noticias Juegos interactivos Mensajería instantánea Descarga de música Descarga de archivos Bases de datos replicadas Distribución de software Redes de compartición de archivos 2.1 Multicast sobre IP En el caso del protocolo IP el soporte para multicast fue implementado por primera vez en el año 1993 mediante una ampliación de dicho protocolo. El funcionamiento del multicast sobre IP está fundamentado en la suscripción a grupos de difusión [9]. Cada grupo de difusión esta asociado a una dirección IP que lo identifica. Para ello se reservaron un conjunto de direcciones IP denominadas de ‘clase D’ destinadas a las comunicaciones en multicast. En concreto, estas direcciones son aquéllas que empiezan con el prefijo ‘1110’, es decir, las comprendidas en el rango de 224.0.0.0 a 239.255.255.255 (ver Tabla 2). De este conjunto, las comprendidas entre la dirección 224.0.0.0 y la 224.0.0.255 están reservadas para tareas administrativas y de mantenimiento multicast. Tabla 2. Distribución de direcciones IP Clase Prefijo Dirección inicial A 0 0.0.0.0 127.255.255.255 B 10 128.0.0.0 191.255.255.255 192.0.0.0 223.255.255.255 C D 110 1110 224.0.0.0 Dirección final 239.255.255.255 Un equipo que desea recibir paquetes difundidos por otro equipo se suscribe a una determinada dirección IP de multicast. A partir de ese momento el protocolo de red se encargará no sólo de hacer llegar a las aplicaciones del equipo los paquetes destinados a la propia dirección IP del equipo, sino que también hará llegar los paquetes destinados a las direcciones IP multicast a las que el equipo se ha suscrito. En cualquier momento el equipo podrá darse de baja de un grupo de difusión, con lo que dejaría de recibir los paquetes enviados a la dirección IP asociada. Por otra parte el equipo que desee enviar un paquete al grupo de difusión simplemente tendrá que enviar el paquete a la dirección IP asociada al grupo, como si la dirección se correspondiera a un nodo más de la red. El multicast para IP está disponible tanto para el envío de paquetes IP como para paquetes UDP. Evidentemente con TCP no se puede realizar multicast ya que se trata de un protocolo confiable orientado a la conexión entre principalmente dos dos nodos. ventajas Con el respecto uso a de usar UDP obtenemos simplemente IP: conseguimos una multiplexación por aplicación mediante el uso de los puertos de comunicaciones y podemos establecer un código de detección de errores (checksum) para los datos. Para conseguir que los paquetes emitidos desde un nodo lleguen a todos los nodos suscritos al grupo multicast, los nodos y routers que soportan multicast se comunican mediante un protocolo denominado Internet Group Management Protocol – IGMP [6]. Mediante IGMP se actualizan las tablas de enrutamiento de los routers, de manera que durante la transmisión multicast éstos pueden tener la información necesaria para difundir la información adecuadamente. Cada vez que un nodo se incorpora o abandona un grupo informa mediante este protocolo su interés o no en recibir paquetes destinados a la dirección IP asociada. Sin embargo en la actualidad ni todos los equipos ni todos los routers soportan el multicast ya que no es obligatorio en la especificación IPv4 (en IPv6 si es obligatorio), con lo que en un principio esto impediría el uso de esta tecnología entre algunos equipos. Para solucionarlo pude utilizarse MBONE (Multicast Backbone). Mediante MBONE [10], cuando un paquete multicast debe traspasar un router que no soporta multicast, el paquete es encapsulado en un paquete unicast (IP dentro de IP) de manera que puede transportarse sin problemas por cualquier ruta. Posteriormente, en el router destino, el paquete será recompuesto para obtener el paquete original. Los dos extremos que convierten de multicast a unicast y de nuevo a multicast definen lo que se denomina un túnel multicast. Los túneles enlazan lo que se podría denominar islas multicast, por lo que, en conjunto, MBONE establece una red virtual de comunicación multicast. 2.2 Confiabilidad En comunicaciones, la confiabilidad hace referencia a las transferencias en las que la información debe llegar de manera completa al destinatario para ser útil [11]. Cuando por cualquier motivo la información no ha sido entregada completamente, debe informarse del fallo a los componentes de la comunicación (normalmente al emisor). Si en el proceso de comunicación no se puede garantizar la entrega de la información, se considera que es una transmisión no confiable. Si nos fijamos en la Tabla 1 solamente la cuadrícula confiables. superior izquierda corresponde a aplicaciones no En una transmisión confiable clásica, para asegurar la recepción de la información, una de las técnicas más utilizadas es el uso de los paquetes de confirmación (ACK’s). En este esquema el emisor es el responsable de realizar la corrección de errores. Mediante el uso de los ACK’s no sólo conseguimos una transmisión confiable, también conseguimos una sincronización entre el emisor y el receptor, dado que el emisor no envía un nuevo paquete hasta que no ha confirmado la recepción del anterior. El uso de estas técnicas basadas en los paquetes de confirmación para conseguir una comunicación confiable trasladada al caso del multicast conlleva un gran problema: la falta de escalabilidad. Supongamos que un emisor envía un paquete a un conjunto de N receptores. Cuando el paquete es recibido por los receptores se generan N ACK’s informando al emisor de su correcta recepción. Esto, para un número de receptores elevado, provocaría que tanto la red como el emisor se saturasen con los paquetes de control. Es más, posiblemente, el alto número de paquetes haría que muchos de ellos se perdieran o fueran descartados por el emisor debido a dicha saturación, con lo que se generarían más reenvíos de paquetes, empeorando aún más, si cabe, la situación. Es necesario, pues, aplicar otro tipo de técnicas que aporten soluciones más escalables a la hora de transmitir información de forma confiable mediante multicast. 2.3 Protocolo de transporte multicast A la hora de resolver un problema mediante el uso de técnicas multicast confiable, los diseñadores optan por realizar una de las dos siguientes estrategias: crear una capa de transporte genérica que resuelva de manera general el problema de la comunicación multicast o crear un protocolo que resuelva las necesidades particulares que requiere cada aplicación [12]. Con la primera opción se pretende conseguir un protocolo lo suficientemente abierto como para poder ser utilizado por cualquier aplicación que requiera una comunicación multicast y confiable, de igual manera que TCP proporciona análogas características en unicast. Si TCP nos ofrece una capa de transporte que realiza una corrección de errores y una ordenación de los paquetes enviados, las características que debería aportar un protocolo genérico de multicast confiable serían: • Sincronización en la comunicación: control del ratio de envío en función de la velocidad de lectura de los receptores y la saturación de la red. • Escalabilidad: independencia respecto del número de receptores. • Corrección de errores: control de paquetes perdidos en la comunicación. • Ordenación de paquetes: mantenimiento en el destino del orden secuencial de los paquetes. • Independencia de la red: transparencia topologías y arquitecturas de red. ante las diferentes Fig 2. Esquema de capas de un protocolo de transporte multicast y conjunto de carácterísticas Con la segunda estrategia conseguimos un protocolo que, si bien no pude ser usado por cualquier aplicación, sí nos aporta una solución optimizada para cada problema. Se puede dar el caso de aplicaciones que, por ejemplo, no requieran una ordenación de paquetes, o que necesiten funcionar solamente para una determinada topología. En estos casos un protocolo específico podría dar mejores resultados que con una estrategia de carácter general. En otros casos se hace necesaria la utilización de protocolos específicos, ya que se dan condiciones determinantes para su uso, como podría ser el caso de comunicaciones donde no existe un canal de retorno. 2.4 Escalabilidad Como hemos visto, la principal causa de la falta de escalabilidad en la transmisión multicast confiable es el problema con la información de vuelta, es decir, de los paquetes de control que envían los receptores al emisor. Por muy poca que sea esta información, si el número de receptores llega a ser muy alto, el emisor terminaría por saturarse, con lo que no se podría garantizar la escalabilidad de la comunicación [13]. Para evitar esta saturación en el canal de retorno, una de las técnicas que suelen aplicarse es cambiar las confirmaciones por paquetes de información de pérdidas (NACK’s) [11]. En casos de pocas pérdidas en la comunicación, esta técnica reduce drásticamente la información de control en la comunicación e incluso, en casos óptimos, podría evitarse totalmente. Sin embargo la falta de confirmación por parte de los receptores produce una serie de inconvenientes. En el caso de que por ejemplo en todo el proceso de transmisión no se produzca la recepción por parte del emisor de ningún paquete NACK, no significa que todos los paquetes de datos hayan sido recibidos por todos los receptores; puede existir algún problema en el canal de vuelta que evite la recepción de dichos paquetes. Por lo tanto, con el simple uso de los paquetes NACK no se puede garantizar la confiabilidad de la comunicación. Una posible solución a este problema sería el envío de un único paquete de confirmación al final de toda la transmisión, de manera que el servidor tuviera la seguridad de la correcta recepción de la información. Esto implicaría una pérdida de escalabilidad por la dependencia que volveríamos a tener del número de receptores, si bien este envío sería único y localizado siempre al final de la transmisión. 2.5 Control de flujo Otro de los problemas que se plantea con el cambio de ACK’s por NACK’s es la pérdida de la sincronización en la comunicación. Si bien mediante el uso de las confirmaciones el emisor y el receptor se encuentran siempre acompasados en el flujo de la transmisión ya que el emisor no envía el siguiente paquete hasta no tener confirmado el anterior, con el uso de NACK’s esto no puede realizarse. Mientras el emisor difunde los paquetes de datos no tiene información sobre el estado ni la cantidad de paquetes recibidos por cada receptor. El principal problema que se deriva de esta situación es una falta en el control de flujo o ratio de transmisión, es decir, el emisor podría estar difundiendo los paquetes a una velocidad superior a la que algunos receptores podrían estar leyendo, o por el contrario, el canal podría estar desaprovechado al usar un ratio muy bajo. Este inconveniente también ocurriría si alguno de los routers intermedios sufriera un problema parecido y descartara algunos de los paquetes de datos por falta de capacidad. Las consecuencias de estas pérdidas (ya sea en el destino como en los routers intermedios) son nefastas: algunos destinatarios detectarían de manera sistemática huecos en la secuencia de recepción y saturarían al servidor con paquetes NACK. Este ciclo de continuas pérdidas y solicitudes de reenvío producirían una clara inestabilidad en la comunicación [14]. Utilizando ratios de envío muy bajos o al menos tan bajos como el ratio de recepción del destinatario más lento tampoco solucionaría el problema. Tengamos en cuenta que la red por la que viajan los paquetes es un medio variable con periodos de mucho uso o saturación y donde normalmente no se puede garantizar un determinado ancho de banda. Por lo tanto es necesario plantear técnicas que se adapten a las necesidades puntuales de la red, en las que el emisor ajuste automáticamente el ratio de envío según las circunstancias y las características de los destinatarios. 2.6 Seguridad La seguridad en la comunicación es un aspecto que se complica aun más con el uso de las técnicas multicast. En una comunicación unicast donde los paquetes tienen un origen y un único destino, para que un tercer elemento pueda tener acceso a la información, se requiere el uso de técnicas de espionaje como pueden ser la suplantación de identidad (suplantación IP) o la escucha promiscua del medio físico (sniffer). Sin embargo, con multicast, esto mismo se puede realizar de manera mucho más sencilla ya que bastaría con incorporarse al grupo de difusión para tener acceso a los paquetes enviados por el emisor. Se trata pues de una transmisión pública donde el emisor no establece los receptores de sus paquetes, al estilo de cómo ocurre, por ejemplo, en la transmisión de las señales de televisión. Al igual que en este último caso, si queremos tener canales privados o de pago (transmisión de información segura), necesitamos aplicar algoritmos de codificación de la señal transmitida (procesos de cifrado de los datos) [8]. Para el establecimiento de unos niveles de seguridad adecuados en la transmisión multicast siguientes aspectos: • Cifrado: la se debe información contemplar emitida debe principalmente de protegerse los con mecanismos de cifrado que eviten su tratamiento por destinatarios no permitidos. • Autenticidad: evitar que elementos externos o no permitidos de la comunicación puedan sustituir parte de la información emitida sin que los miembros de la transmisión lo detecten. • Autenticación: los miembros de la comunicación tienen que ser debidamente identificados para evitar su suplantación 2.7 Tipos de distribuciones Uno de los aspectos que más condicionan el modelo de comunicación tiene que ver con el rol con el que actúa cada uno de sus miembros. Algunas de las configuraciones que se pueden dar son: • Un emisor y varios receptores. En estos casos el papel de emisor y de receptor está totalmente definido. Hay un único origen de datos que se centraliza en el emisor y los receptores simplemente tienen capacidad de enviar paquetes de control. • Varios emisores y varios receptores. En este modelo son varios los elementos capaces de emitir información. Normalmente existe un emisor principal que manda inicialmente la información y un conjunto de nodos con capacidad de reemitirla para, por ejemplo, realizar labores de corrección de errores. • Todos emiten y reciben. Se trata de redes de cooperación donde todos los miembros son capaces de actuar como emisor y receptor. La función de corrección de errores está distribuida al conjunto total de los miembros [11]. 2.8 Conocimiento de los destinatarios Según la información que tiene el emisor sobre los receptores a los que van destinados los paquetes de datos, podríamos clasificar las comunicaciones multicast en tres grupos diferentes [12]: • Grupo de destinatarios indeterminado. En este primer modelo el emisor no conocería ni el número ni la identidad de los destinatarios a los que va dirigida la información que está emitiendo. Un ejemplo claro de este tipo de comunicación sería la transmisión de audio o vídeo por internet, donde el emisor difundiría los paquetes de información sin tener en cuenta los destinatarios de los mismos. A su vez, los receptores, podrían incorporarse y abandonar el grupo de difusión sin tener que informar ni realizar ningún tipo de proceso de conexión con el emisor. Suele tratarse de comunicaciones donde no se requiere un canal de retorno, situaciones éstas comunes en caso de infraestructuras altamente asimétricas, como por ejemplo, la transmisión vía satélite, donde el canal de bajada tiene un ancho de banda muy superior al de subida y una latencia muy alta [15]. • Grupo de destinatarios abierto. En este tipo de comunicación el emisor dispone de información sobre los receptores a los que está dando cobertura, si bien este grupo no está determinado antes del inicio de la comunicación. Según se va desarrollando el proceso de comunicación, el emisor va actualizando la lista de receptores, bien al recibir un primer paquete de un receptor (por ejemplo un NACK), bien mediante el uso de procesos de control, como los de conexión y desconexión, que utilizarían los receptores para informar al emisor. En este último caso se pueden realizar también operaciones de validación para permitir el acceso o no al grupo. Para evitar que equipos no validados tengan acceso a la información, en el proceso de conexión el emisor podría aportar elementos como claves de cifrado o filtros de datos, sin los cuales no sería posible procesar los datos emitidos por el servidor. • Grupo de destinatarios cerrado. Por último, en este modelo, el emisor conoce a priori los receptores de los datos, y solamente permitiría la comunicación con estos receptores, ignorando cualquier paquete enviado por otros equipos. Durante todo el proceso de comunicación el conjunto de receptores no varía, de manera que el emisor puede utilizar esta información para prefijar algunos parámetros del proceso de transferencia en función de la cantidad o características de los destinatarios: ratio de envío, tamaño de los paquetes, etc. 2.9 Corrección preventiva Como hemos visto, el principal problema que se plantea en la comunicación multicast es la falta de escalabilidad: cuanto mayor es el número de receptores más alto es el volumen de paquetes de control. Para conseguir que el modelo de transmisión sea escalable, la solución más evidente que se puede plantear es la reducción, idealmente la eliminación total, de los paquetes de control. Para ello se utilizan técnicas de corrección preventiva (Forward Error Correction o FEC). La idea principal de estas técnicas es la siguiente. Supongamos que el total de la información a trasmitir se fragmenta en n paquetes de datos. En función de esos paquetes se generan r paquetes de recuperación, conteniendo información redundante de los paquetes de datos originales. El emisor manda tanto los paquetes de datos como los paquetes redundantes. Si un destinatario no recibe uno de los paquetes de datos enviados, podrá regenerarlo a partir de uno o más paquetes de recuperación, sin tener así que solicitar el reenvío del paquete perdido. Idealmente la codificación de los paquetes de recuperación se realizaría de manera que, para regenerar un conjunto de paquetes perdidos, se necesiten la misma cantidad de paquetes correctores. Una de las codificaciones más utilizadas y que cumple esta última característica es la de Reed-Solomon [11]. Si embargo estas codificaciones conllevan un alta complejidad temporal para su cálculo (aumenta exponencialmente con el número de paquetes), con lo que se penaliza su uso en la mayoría de los casos. Para evitarlo, la información se agrupa en bloques de paquetes de datos sobre los que se computan localmente los paquetes de recuperación. Por lo tanto los paquetes generados solamente sirven para recuperar pérdidas dentro del bloque de paquetes de datos que se utilizó para su generación. El tamaño de los bloques se decide en función de los límites que se quieran establecer, dependiendo de la capacidad de cómputo que se disponga. En la actualidad también se están aplicando FEC’s basados en la primitiva XOR, donde los tiempos de computo de los paquetes de recuperación son bajos y de coste lineal. Por contra, con estas técnicas se requieren más paquetes de recuperación para regenerar un paquete de datos, con lo que se incrementa el volumen de información trasmitida. Incorporando FEC a la comunicación se logra una disminución, tanto en la cantidad de retransmisión de paquetes, como en la cantidad de paquetes de control, con lo que se suele justificar el ancho de banda extra que se utiliza en la emisión de los paquetes de recuperación y, en el caso de las trasmisiones multicast, se consigue una mayor escalabilidad. Otra de las ventajas que aporta estas técnicas es la reducción de reenvíos en el caso de pérdidas simultáneas en diversos destinos. Si por ejemplo un receptor pierde un paquete de datos p1 y otro equipo pierde un segundo paquete p2 el emisor solamente tendría que retransmitir un único paquete r1 con el que ambos destinatarios podrían recuperarse de su pérdida. En el caso de un esquema basado en XOR tendríamos que el paquete de recuperación sería r1 = p1 con lo que el primer receptor calcularía p1 con r1 realizaría r1 XOR p1 para calcular p2. XOR XOR p2, p2 y el segundo Además del tiempo de computo necesario, el uso de FEC’s también conlleva normalmente la utilización de un buffer de trabajo sobre el que se van componiendo los paquetes redundantes. 2.10 Uso de representantes Otra de las técnicas utilizadas para la disminución del tráfico de control y conseguir de esta manera una mayor escalabilidad es el uso de nodos representantes [16]. Un representante es un componente de la comunicación, normalmente uno de los destinatarios, que se encarga de centralizar la información de vuelta de un conjunto de receptores, agrupándola en un bloque de información compacto, normalmente un único paquete, y reduciendo así la cantidad de paquetes que recibiría el emisor. Estas técnicas se aprovechan de la jerarquía establecida por la topología de red, de manera que la información de vuelta se va agrupando según se acerca al emisor; facilitando, de esta forma, la escalabilidad. En algunos casos interesa que el nodo representativo pueda realizar también labores de corrección de errores, con lo que se reduciría aun más el envío de paquetes de control hacía el emisor, pudiendo incluso llegar a evitarse. En estos casos el nodo designado almacena la información recibida para poder actuar como un emisor secundario. Si bien el nodo representante suele ser uno de los destinatarios de la información, en algunos casos se puden utilizar nodos habilitados explícitamente para esta función o bien se delega a los routers, ya que estos se sitúan en los puntos de confluencia de los paquetes de control. 2.11 Trabajos relacionados En la actualidad existen multitud de protocolos multicast que resuelven de manera general o más o menos condicionada el problema de la difusión de información a multiples destinatarios. Algunos de estos protocolos son: SRM [11] un protocolo orientado a la distribución compartida de información dentro de un grupo de participantes con la corrección de errores también distribuida; MTFP [12] es un protocolo de transporte multicast que centra su objetivo en conseguir una comunicación altamente escalable y con un soporte universal para todo tipo de redes, incluyendo las altamente asimétricas; Digital Fountain [17] un protocolo totalmente escalable para la distribución de información masiva a múltiples destinatarios fundamentado en un FEC orientado a XOR denominado Tornado Codes. 3 Streaming de Archivos Como se ha descrito el problema de la difusión de información masiva a diferentes destinatarios es bastante complejo, y al respecto ya existen diferentes soluciones en menor o mayor medida. Sin embargo en otro tipo de escenarios nos encontramos con una serie de restricciones que complican aun más si cabe el problema anteriormente descrito. Se trata de los casos en los que los destinatarios no disponen de memoria intermedia para almacenar toda la información, antes de pasar a la fase de reconstrucción del paquete de información software, por lo que ésta deberá ir reconstruyéndose a medida que se recibe. En caso de necesitar almacenamiento temporal el proceso de recepción tendrá que poder adaptarse a cantidades de memoria pequeñas (para el caso de equipos con pocas prestaciones). Este proceso sería similar al streaming de audio o video pero en este caso considerando que la información es de carácter general y que requerimos una confiabilidad total en la comunicación. En estos tipos de transmisiones los procesos de sincronización emisor-receptores, la reordenación de paquetes y la recuperación de paquetes perdidos se ven muy condicionadas ya que los protocolos de transporte multicast se valen precisamente de memoria intermedia para realizar u optimizar estas labores. 4 Propuesta de solución Se propone un modelo de transmisión para la difusión masiva de información a través de redes heterogéneas, que contemple los requerimientos establecidos en el planteamiento del problema. A partir de este modelo se ha diseñado una arquitectura que plasma funcionalmente dicho modelo. Finalmente, y para validar la corrección del modelo y arquitectura propuestos, se ha implementado un protocolo de transporte de red basado en la tecnología IP multicast. El protocolo permite distribuir una serie de paquetes software de información desde un repositorio a un conjunto de receptores, incrementando el aprovechamiento de la infraestructura de red. El protocolo es lo suficientemente genérico como para poder ser usado por diversas aplicaciones, aportando una capa de servicios para la difusión confiable de información. Como protocolo base, sobre el que residiría la capa de transporte a implementar, se utilizará IP con soporte para multicast, debido a su alta aceptación en la actualidad. Dado que en los destinatarios no podemos contar con memoria intermedia éstos irán procesando la información según la van recibiendo, con lo que la capa de transporte multicast proporciona a los receptores un flujo de información ordenado y acompasado con el emisor. En la Fig. 3 se muestra un esquema de los diferentes módulos que componen el emisor y el receptor del modelo multicast propuesto. El emisor tras realizar una serialización de la información que desea transmitir, realiza un proceso de cifrado para proteger los datos. Posteriormente la información cifrada es fraccionada en paquetes de datos. Estos paquetes son almacenados en un buffer (B1) para que queden disponibles en el momento en que sea necesaria su retransmisión. Fig 3. Diagrama de bloques del proceso de difusión de información A los paquetes de datos se les aplica un FEC para reducir los problemas de escalabilidad, reduciendo la solicitud de paquetes perdidos. Dada la heterogeneidad de los destinatarios se propone el uso de FEC’s con bajo coste computacional, como los basados en XOR, para evitar grandes retardos en la recepción en clientes lentos o saturados. En la retransmisión de los paquetes solicitados por los destinatarios, también se incorpora el uso de FEC’s que reduzcan la cantidad de información retransmitida. Los buffers de trabajo de los FEC (B2 y B4), especialmente el del destinatario, serán de tamaño limitado, debido a las condiciones impuestas en el problema. El receptor irá obteniendo un conjunto de paquetes de datos desordenados, bien sea por recepción directa del emisor, por una retransmisión o por una recuperación realizada por el FEC. Para suministrar una secuencia ordenada de los datos a las capas superiores el receptor usará un buffer de paquetes (B3), que también tendrá una capacidad limitada y reducida. Por ello el proceso de solicitud y entrega de paquetes perdidos deberá ser lo más eficiente posible, de manera que la recepción en cada destinatario esté lo más acompasada posible con el emisor. 5 Un caso práctico El entorno de pruebas en el que se va ha poner en marcha inicialmente el sistema de transferencia masiva que se propone es Gaia, un sistema de regeneración de equipos que permite restaurar completamente la información contenida en los equipos que componen una red. El objetivo principal de Gaia es automatizar muchas de las tareas de mantenimiento de las redes de computadores, para conseguir una gestión desatendida de dicha red. El proceso de regeneración se gestiona mediante un sistema que opera en el equipo de manera independiente al hardware y software instalado, y que de manera automatizada y desatendida realiza básicamente los siguientes procesos: • Analizar el hardware del equipo, examinando principalmente los diferentes discos y particiones con los que cuenta • Obtener la configuración establecida para ese equipo, la cual reside en un sistema de inventario que gestiona el administrador. En él se indica las particiones que debe tener el equipo tras la reinstalación, los sistemas de archivos que debe contener, así como los sistemas operativos, aplicaciones y otros datos que deben residir en estos sistemas de archivos. • Preparar el equipo física y lógicamente para recibir loa información a instalar. • Obtener y almacenar los datos que deben residir en el equipo desde un repositorio previamente configurado por el administrador. La información instalación, se ofrece como en podrían forma ser de de paquetes sistemas software operativos, de de aplicaciones, de datos, etc. La información almacenada en los paquetes esta comprimida para optimizar el almacenamiento y agilizar su transmisión por la red. espacio de Por lo tanto con este sistema para mantener una red de computadores simplemente hay que indicar la secuencia ordenada de paquetes que hay que instalar por cada equipo, agilizando de esta manera las costosas tareas de instalación y configuración del software. En algunos casos, cuando la información que hay que instalar en un equipo no pueda fraccionarse en diversos paquetes, existirá un único paquete que describe la totalidad del contenido del equipo, es decir el paquete es una copia exacta del contenido físico de las unidades de dicho equipo. Este modo de trabajo se utiliza cuando el sistema de reinstalación no entiende la estructura interna del sistema de archivos del equipo. Mediante el uso de un sistema de transferencia tradicional de información, cuando un paquete va dirigido a más de un equipo, la transmisión se realiza de manera individual entre el repositorio y los equipos, repitiéndose esta operación tantas veces como destinatarios diferentes tenga el paquete. Nivel de Aplicación Servidor GAIA DHCP HTTP NFS MySQL Transferencia de archivos TCP/IP FS Proc Mem. Virtual NIC I/O CPU MEM NIC I/O CPU MEM Nivel de Nivel de Sistema Operativo Nivel Hardware Cliente GAIA Transferencia de archivos NFS MySQL TCP/IP FS Proc Mem. Virtual NIC I/O CPU MEM NIC I/O CPU MEM RED Fig 4. Arquitectura del sistema de regeneración GAIA Por norma general, el mantenimiento de los equipos se puede agrupar en grupos que comparten una misma configuración. Estos grupos estarían formados por equipos de características similares que comparten un mismo perfil software, como suele ocurrir en aulas o laboratorios informáticos. Mediante el uso de un sistema de transferencia tradicional de información, cuando un paquete va dirigido a más de un equipo, la transmisión se realiza de manera individual entre el repositorio y los equipos, repitiéndose esta operación tantas veces como destinatarios diferentes tenga el paquete. Esto produce una disminución en el rendimiento global del proceso, ya que se satura tanto el repositorio con solicitudes repetidas de paquetes, como la red con la transferencia de dichos paquetes. Por todo esto, se propone sustituir el sistema de transferencia de archivos actual (ver Fig.4 y Fig. 5) por el sistema de transmisión propuesto, de forma que la distribución de los paquetes software se realice de manera mucho más eficiente. Con ello se pretende conseguir mejorar la transferencia en los siguientes aspectos: • Conseguir una independencia del número de clientes que se regeneren simultáneamente con la mismo paquete software. • Mejorar la transmisión incluso cuando los clientes se encuentran a largas distancias, asegurando su finalización en tiempos acotados. • Favorecer la transmisión de información masiva al reducir el trafico de control, de manera que incluso sea factible el uso de comunicaciones asimétricas como podría ser una conexión ADSL o una transmisión vía satélite. Control de acceso mediante tarjetas inteligentes (Smart Card) Cliente Administració Servidor de Autenticación Entorno de Almacenamiento y repositorio software Directorio, Perfiles y Certificados Dir DB Router/ Proxy/ Firewall DB Navegador Web Cliente Regeneración DB DB Servidor Web HTML Sistema de Información Internet Interfaz Agente Regeneración Servidor de Aplicaciones Cliente ubicuo de regeneración (PDA, portátil, Móvil, ...) Lógica de Negocio Agente Regeneración Fig. 5. Escenario de desarrollo del Sistema de Regeneración de Nodos 6 Conclusiones El problema de la difusión masiva de información genérica es en la actualidad un problema abierto y objeto de numerosas investigaciones. La escalabilidad es el principal factor a tener en cuenta en el desarrollo de un protocolo de transferencia multicast confiable. No existe un protocolo general de transporte multicast que de solución a todos los problemas de difusión, principalmente en el caso del streaming de archivos. En este documento se aporta una solución al problema, estableciendo un marco formal sobre el que ir desarrollando un modelo y una arquitectura para la difusión de información masiva. Como proyectos futuros estamos trabajando en la incorporación de mecanismos de corrección de errores de forma local mediante una estructuración jerárquica de los componentes de la comunicación en forma de grafos, especialmente en forma de árboles. En este sentido se está trabajando en heurísticas de vecindad entre los diferentes destinatarios que nos permitan optimizar los canales de vuelta en los procesos de corrección de errores. También se están realizando estudios que permitan incorporar mecanismos de seguridad en la difusión de la información a transmitir. 7 Referencias 1. Marcos Jorquera, D.; Maciá Pérez, F.; Monllor Pérez, J.C: Sistema de regeneración de nodos de red. GAIA. Desarrollo De Grandes Aplicaciones Distribuidas Sobre Internet. Servicio de Publicaciones de la Universidad de Alicante, Cap. 10, pp. 275-298. (2004) 2. Tanenbaum, A. S.:. Redes de computadoras. Tercera edición. Prentice Hall. (1997) 3. Forouzan, B. A.: Transmisión de datos y redes de comunicaciones. Segunda edición. McGraw-Hill. (2002) 4. Halsall, F.: Comunicación de datos, redes de computadores y sistemas abiertos. Cuarta edición. Addison Wesley Longman. (1998) 5. García Tomas, J.: Sistemas y redes teleinformáticas. Sociedad para Estudios Pedagógicos Argentinos (SEPA). (1989) 6. Comer D. E.: Redes globales de información con internet y TCP/IP. Principios básicos, protocolos y arquitectura. Tercera Edición. PrenticeHall Hispanoamericana. (1996) 7. Mack, s.: Streaming Media Bible. Hungry Minds. (2002) 8. Stallings, W.: Comunicaciones y redes de computadores. Sexta edición. Prentice Hall. (2000) 9. Deering. S. E.: Host Extensions for IP Multicasting. Request for Comments (RFC) 988. (1986) 10. Handley, M.:. An Examination of Mbone Performance. Technical Report RR-97-450, USC/ISI. (1997) 11. Floyd, S., Jacobson, V., Liu, C., McCanne , S. y Zhang, L.: A Reliable Multicast Framework for Light-weight Sessions and Application Level Framing. IEEE/ACM Transactions on Networking. (1996) 12. Miller, K., Robertson, K., Tweedly, A. y White M.: StarBusrt Multicast File Transfer Protocol (MFTP) Specification”. Internet Draft. (1997) 13. Bolot, J., Turletti, T. y Wakeman., I.: Scalable Feedback Control for Multicast video Distribution in the Internet. ACM SIGCOMM Computer Communication Review. Vol 24, pp. 58-67. (1994) 14. Mankin, A., Romanow, A., Bradner, S. y Paxson., V.: IETF Criteria For Evaluating Reliable Multicast Transport and Application Protocols. Request for Comments 2357 (RFC 2357). (1998) 15. Tunpan, A. y Corson, M. S.: Bulk Data Multicast Rate Scheduling For Hybrid Het-erogeneous Satellite-Terrestrial Networks. Proceedings of the Fifth IEEE Symposium on Computers and Communications (ISCC 2000). pp. 238. (2000) 16. DeLucia, D. y Obraczka, K.: Multicast Feedback Suppression Using Representatives. Proceedings of the IEEE INFOCOM 1997. pp. 463-470. (1997) 17. Byers, J. W. y Luby M.: A Digital Fountain Approach to Reliable Distribution of Bulk Data. Proceedings of ACM SIGCOMM’98. pp. 56–67. (1998)