# IP Multicast

Multidifusión IP, en inglés IP Multicast, es un método para transmitir datagramas IP a un grupo de receptores interesados.

## Implementaciones de multidifusión IP

Los operadores de Pay-TV y algunas instituciones educativas con grandes redes de ordenadores han usado la multidifusión IP para ofrecer streaming de vídeo y audio a alta velocidad a un gran grupo de receptores. También hay algunos casos en que se ha utilizado para transmitir videoconferencias. De todas formas se ha relegado a ámbitos de investigación y educación que tienen más posibilidades de ofrecer las grandes necesidades de redes que precisa este método.
Otro uso que se le ha dado, también a nivel comercial, es el de distribuir archivos. Particularmente para ofrecer imágenes de arranque de sistemas operativos. Respecto a los sistemas tradicionales permite un menor uso del ancho de banda de la red.
Multicast IP es una prestación muy poderosa de las redes IP que permite, al mismo tiempo, que múltiples operadores de CCTV puedan visionar y grabar, de manera eficiente, secuencias de vídeo de CCTV captadas por la misma cámara. Las redes multidifusión aseguran que el flujo de vídeo solamente llegue a los usuarios que necesitan verlo. De este modo se consiguen importantes ahorros en el consumo de ancho de banda de la red. Para poder utilizar la tecnología multicast IP es preciso que los switches y routers de red sean compatibles con los protocolos multidifusión y los tengan correctamente configurados.
Fuera de esas áreas no ha tenido mucho éxito. Fundamentalmente por dos factores, cada uno referido al otro. Por una parte el tráfico generado por la multidifusión IP es realmente complejo, sobre todo cuando tiene que ver con la comunicación a dos vías. Además este método tiene la desventaja de que su implementación a gran escala puede venir acompañado de puntos adicionales de fallo. Particularmente de ataques de denegación de servicio.

## Historia

En 1992 se hizo un intento experimental llamado MBONE de crear una red multidifusión a través de Internet usando túneles. De esta forma se conseguiría un ahorro importante de ancho de banda para las aplicaciones multimedia. El experimento quedó solo en eso. Motivado, entre otras cosas, por las dificultades que representaba para los ISP ofertar redes con soporte de multidifusión IP.

## Direccionamiento

Existen cuatro formas de direccionamiento IP. Cada una de ellas con sus propiedades únicas.
* Unicast: el concepto más común de una dirección IP es una dirección unidifusión. Se refiere normalmente a un único emisor o receptor y puede ser usada tanto para enviar como para recibir. Este tipo de dirección suele estar asociada a un único dispositivo o computadora pero no implica una correspondencia uno a uno. Algunas PC individuales tienen varias direcciones unicast cada una para un propósito diferente. Para enviar la misma información a diferentes direcciones unidifusión el emisor debe enviar dichos datos una vez por cada receptor.
* Broadcast: enviar los datos a todos los destinos posibles (un "broadcast a todos los hosts") permite al emisor enviar los datos una única vez a todos los receptores. En el protocolo IP, la dirección 255.255.255.255 representa un broadcast limitado localmente. También se puede hacer un broadcast directo (y limitado) combinando el prefijo de red con el sufijo de hosts compuesto únicamente de 1 binarios. Por ejemplo para una red con el prefijo 192.0.2 la dirección IP a usar será la 192.0.2.255 (asumiendo que la máscara de red es la 255.255.255.0).
* Multicast: una dirección multidifusión está asociada con un grupo de receptores interesados. De acuerdo al RFC 3171, las direcciones desde la 224.0.0.0 a la 239.255.255.255 están destinadas para ser direcciones de multidifusión. Este rango se llama formalmente "Clase D". El emisor envía un único datagrama (desde la dirección unicast del emisor) a la dirección multidifusión y el router se encargará de hacer copias y enviarlas a todos los receptores que hayan informado de su interés por los datos de ese emisor.
* Anycast: como el broadcast y el multicast, con anycast se representa una topología de uno a muchos. Sin embargo, el flujo de datos no es transmitido a todos los receptores. El router lo enviará únicamente al que considere que esté más cerca en la red. Este método es muy útil para conseguir balancear las cargas de datos. Es el método usado por los sistemas DNS.

## Protocolos y aplicaciones

Dado que las transmisiones multicast y unicast son diferentes, únicamente los protocolos diseñados para multidifusión pueden ser usados efectivamente con este.
La mayoría de los protocolos de aplicaciones existentes que usan multidifusión lo hacen sobre UDP. Otras aplicaciones, sobre todo aquellas que tienen que transmitir contenidos multimedia, lo hacen usando el protocolo RTP; además del protocolo RSVP para reservar el ancho de banda necesario para la distribución del contenido.
La distribución en una red local está controlada por el protocolo IGMP (en una red IPv4) y por MLD (en una red IPv6). Dentro de un dominio de enrutamiento se usa el protocolo PIM y entre dominios se debe usar algún protocolo de enrutamiento multidifusión entre dominios como el MBGP.
Se pueden encontrar muchos errores si un paquete destinado a una dirección unicast es encaminado accidentalmente a una dirección multidifusión. Concretamente se ha usado el envío de paquetes ICMP a una dirección multidifusión como una forma de conseguir la amplificación de paquetes a través de un Ataque de denegación de servicio.

## Asignaciones de direcciones IPv4 multicast

El rango de direcciones de clase D, que está asociado incluso con direcciones de multicast, no se asignan a direcciones unicast tradicionales. De hecho la reserva de grupos de direcciones de multidifusión solía ser una fuente de problemas y puede llevar a múltiples e insatisfactorias soluciones.
Existen varias estrategias para lograr solventar el problema. Estas son solo algunas de ellas. Para más información deberá leer el documento RFC 3171.
El bloque 224.0.0.0/24 es solo para enlaces multidifusión locales. Aquí solo pueden encontrar cosas como protocolos de enrutado. Los datagramas a estas direcciones no deberían ser reenviadas por los routers.
Gran parte del resto del espacio de direcciones entre 224/8 ha sido asignado y usado por diversidad de aplicaciones a lo largo de los años o, simplemente, ha sido reservado por la IANA. Este bloque ha sido denominado despectivamente como el pantano multidifusión.
El bloque 232.0.0.0/8 está reservado para usarse por el protocolo de SSM.
239.0.0.0/8 es actualmente un espacio para uso administrativo. El uso de este bloque se especifica en el documento RFC 1918. Sin embargo en otro, el RFC 2365, indica que parte de este segmento tiene un uso parecido a un espacio de direcciones unicast privadas. Sin embargo la mayoría de operadores lo tratan como dice el primer documento.
El resto de la Clase D está marcado actualmente como reservado por la IANA.

## Asignaciones de direcciones IPv6 multicast

Según la RFC4291 en su sección 2.7, una dirección multidifusión en IPV6 es un identificador para un grupo de interfaces, (típicamente en diferentes nodos). Una interfaz puede pertenecer a varios grupos multidifusión. A continuación se muestra el formato de direccionamiento multidifusión para IPV6:
Los primeros dos dígitos hexadecimales son FF, esto es lo que caracteriza a las direcciones multidifusión en IPV6.
flgs es una serie de 4 flags:
    El primero bit siempre es 0.
    Si T=0, quiere decir que la dirección es permanente, y es asignada por IANA.
    Si T=1, es una dirección dinámica.
    El bit P es definido en la RFC3306, el cual está orientado a redes multidifusión IPV6 basadas en prefijos unicast; el nuevo formato es el siguiente:
    Si P=0 indica que significa que la dirección asignada no está basada en un prefijo de red.
    Si P=1 indica una dirección multidifusión asignada bajo un prefijo de red.
    Si P=1, T debe ser 1.
    La función de R está descrita en el RFC3956, y enuncia redes multidifusión IPV6 basadas en prefijos unidifusión modificada; el diagrama es el siguiente:
    Si R=1 indica una dirección multidifusión que incluya la dirección en la RP.
    Si R=1, P y T tienen que ser igual a 1.
    Si R=0, significa que el RP no está incluido en la dirección.
    scop es una serie de 4 bits que se utilizan para limitar el alcance en las redes multidifusión IPV6; los valores son los siguientes:

## Protocolos IP multidifusión

* Shortest Path Bridging (SPB)
* Internet Group Management Protocol (IGMP)
* Protocol Independent Multicast (PIM)
* Distance Vector Multicast Routing Protocol (DVMRP)
* Multicast Open Shortest Path First (MOSPF)
* Multicast BGP (MBGP)
* Multicast Source Discovery Protocol (MSDP)
* Multicast Listener Discovery (MLD)
* GARP Multicast Registration Protocol (GMRP)
* Multicast DNS (mDNS)

## Software IP multidifusión

* Media Tools Repository - colección de herramientas para MBone
* VideoLAN - aplicación de Software libre para realizar streaming de vídeo usando multicast
* Xorp Archivado el 13 de mayo de 2011 en Wayback Machine. - router por software que tiene soporte para multicast (IGMP, PIM)
* Smcroute - utilidad simple para manipular rutas multicast en el núcleo Linux
* SSM-ping - herramienta para comprobar la conectividad multicast
* Implementación de IGMPv3 en FreeBSD
* Software de IP multicast (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). de Xerox
* Java Reliable Multicast Service
* PIM implementation - una implementación, ahora obsoleta, del protocolo PIM
* GateD - implementación UNIX de protocolos de enrutamiento, incluyendo el multicast
* PIM-DM code for GateD
* NORM Archivado el 24 de junio de 2008 en Wayback Machine. - implementación en C++ de un multicast fiable orientado a NACK realizado por el laboratorio de investigación naval U.S.
* iptvprobe - software de código abierto para monitoreo de flujos IPTV multicast