# XCAST

La multi-unidifusión explícita (Xcast) es una variante de multicast que soporta un número muy grande de sesiones multicast pequeñas. Lo consigue añadiendo todas las direcciones IP de destino en el campo de direcciones del paquete IP, en vez de utilizar una dirección de grupo multicast. Los esquemas de difusión selectiva (en inglés multicast) tradicionales sobre IP son escalables para grupos multicast muy grandes, pero tienen problemas de escalabilidad para un número elevado de grupos diferentes. Los esquemas multicast se pueden utilizar para minimizar el consumo de ancho de banda. Xcast se puede utilizar para minimizar el consumo de ancho de banda para pequeños grupos y además, elimina la señalización y la información de estado para cada sesión de los esquemas multicast tradicionales, permitiéndole soportar un gran número de sesiones.

## Funcionamiento

En Xcast, el nodo fuente mantiene todos los destinos del canal multicast a través del cual se quieren enviar los paquetes. La fuente codifica la lista de destinos en la cabecera Xcast, y envía el paquete al enrutador. Cada enrutador hace una consulta a la tabla de rutas para determinar los siguientes saltos de cada paquete, analiza la cabecera, particiona el campo de los destinos basándose en el siguiente salto de cada destino y hace tantas copias de paquetes como caminos diferentes deban seguir. A continuación hace avanzar las copias del paquete con la cabecera Xcast adecuada a cada uno de los siguientes saltos. En el último salto, cuando no es necesario hacer ninguna copia y sólo hay una dirección en el apartado destinos de la cabecera del paquete se puede tratar como un paquete unicast normal y la red lo tratará como tal. Esto se llama X2U (Xcast to Unicast).

## Xcast respecto multicast

Los esquemas IP multicast tradicionales fueron diseñados para tratar con grupos multicast muy grandes. Funciona bien cuando se intenta hacer una distribución con canales similares a los de la radiodifusión, pero tiene problemas de escalabilidad cuando hay un número de grupos muy grande. En los protocolos multicast, los enrutadores mantienen información sobre el estado de la conexión, es decir, mantienen tablas de enrutamiento que relacionan la dirección de los grupos multicast con la de los nodos. En algunos casos estas tablas pueden ser muy grandes, por eso algunos esquemas alternativos intentan rebajar la cantidad de información a mantener. También hay protocolos que para anunciar la fuente o para encaminar entre dominios. Llevar a cabo todos estos protocolos tiene un coste que no sale a cuenta cuando se trata de grupos pequeños como es el caso de videoconferencias, juegos ... Es en estos casos cuando Xcast sale a cuenta.
Xcast mantiene uno de los principios que tan bien han funcionado en Internet y le han permitido crecer tanto: mantener el centro de la red simple y realizar operaciones complicadas en los extremos.

### Ventajas

* Los routers no deben mantener información por cada sesión o canal. Esto hace a Xcast muy escalable en cuanto al número de sesiones que puede soportar.
* No es necesario hacer ninguna asignación de ninguna dirección videoconferencias.
* No necesitan protocolos de enrutamiento multicast, se encaminan correctamente gracias a protocolos de unicast corrientes.
* No hay ningún nodo crítico. Xcast minimiza las latencias de la red y maximiza la eficiencia.
* No se requieren caminos simétricos. Los protocolos de enrutamiento IP multicast tradicionales crean árboles con caminos que no son los más cortos si los caminos no son simétricos. Un camino es simétrico entre dos nodos cuando este camino es el más corto en las dos direcciones. Esto es una ventaja pues se prevé un incremento de los caminos asimétricos.
* En los protocolos de enrutamiento IP multicast tradicionales, es necesario establecer una comunicación entre los protocolos de encaminamiento de unicast y multicast. Esto provoca una recuperación lenta a errores en enlaces. Xcast reacciona inmediatamente a cambios de ruta de unicast.
* Facilidades en seguridad y registro. En Xcast todas las fuentes conocen los miembros del canal y cualquier enrutador puede conocer los golpes que se ha duplicado cada paquete en su dominio.
* Los receptores pueden ser heterogéneos pues Xcast permite que cada receptor pueda tener diferentes requerimientos de servicio en un solo canal multicast.
* Simplicidad a la hora de implementar protocolos fiables por encima de Xcast.
* Flexibilidad: unicast, multicast y Xcast representan costes de ancho de banda, señalización y procesado respectivamente. Dependiendo de cómo esté construida o como se encuentre la red en un momento dado desee utilizar un sistema u otro. Xcast da otra alternativa.
* Fácil transición entre diferentes mecanismos.

### Inconvenientes

* Tienen cabeceras demasiado grandes. Cada paquete contiene todos los destinos restantes.
* Requiere un procesado de cabecera más complejo. Cada dirección necesita una consulta en la tabla de encaminamiento, por tanto, se necesita el mismo número de consultas que se necesitarían si la transmisión se hiciera con unicast, y además, debe generar una nueva cabecera después de cada salto . No obstante:
** Xcast está pensado para sesiones con pocos usuarios y en muchos routers las cabeceras sólo contendrán una dirección.
** La construcción de la cabecera se puede reducir a una operación muy sencilla, sobreescribir un mapa de bits.
** Cuando el paquete entra en una región donde el ancho de banda no está limitado, el paquete se puede transformar en un X2U prematuro.
* Limita a un pequeño número de usuarios cada sesión.

## Aplicaciones

Xcast es un complemento importante a los esquemas multicast existentes, pues aguanta un gran número de pequeñas sesiones. Permite aplicaciones eficientes como telefonía IP, videoconferencias, encuentros colaborativas ... Probablemente estas aplicaciones se podrían llevar a cabo utilizando sólo unicast, pero en algunos casos donde el ancho de banda es limitado resulta extremadamente útil. En general permite un mejor aprovechamiento de los recursos. No obstante, como Xcast no es viable para grandes grupos, no tiene posibilidades de sustituir los modelos tradicionales multicast.