sábado, 21 de abril de 2012

Encaminamiento Multicast


"Una revisión rápida de algunos de los protocolos de
encaminamiento dinámico de tráfico multicast

El motivo de la utilización de multicast es bastante obvio, pero a la hora de diseñar una solución de encaminamiento multicast escalable que se adapte a las necesidades reales es difícil elegir cuál es la mejor arquitectura de las posibles, por ello se van a repasar algunas de las opciones.

Métodos multicast

Existen dos modelos de cursar el tráfico multicast:

  •  Anycast Source Multicast (ASM): Este es el modelo multicast “tradicional”, en el que se tienen varios orígenes multicast dentro de un mismo grupo multicast.
  •  Source Specific Multicast (SSM): Por el contrario a ASM, en el nuevo modelo SSM el receptor (receiver) puede seleccionar el origen multicast, mejorando la eficiencia en la red y aumentando la seguridad. Para realizar esta selección, el receptor debe valerse de la última versión IGMP, el protocolo IGMPv3.

  
Esquemas de enrutamiento multicast ASM

Aquí se van a discutir algunos de los protocolos utilizados para solventan la problemática de direccionar tráfico multicast según el modelo ASM:

  •  Esquema "Source-tree"
La idea es sencilla, inicialmente los orígenes envían los datos en todas las direcciones posibles y son los routers quien deciden si ese flujo debe ser recibido o no (lo que es llamado pruning) según las peticiones IGMP de los diferentes receivers. 


Debido a que este comportamiento envía el tráfico multicast en todas las direcciones, es muy posible que los routers reciban el mismo flujo por varias interfaces. Para solventar esto el router rechaza todo tráfico que no sea recibido por la interfaz que utilizaría al enviar tráfico unicast al origen del tráfico multicast.
           
Dos protocolos que utilizan esta técnica son:

o    Distance Vector Multicast Routing Protocol (DVMRP)
o    Protocol Independent Multicast Dense-Mode (PIM-DM)

Estos protocolos son similares, con la salvedad de que el primero (más antiguo) utiliza una tabla de enrutamiento destinada solo al tráfico multicast, mientras que PIM-DM se vale de la tabla de enrutamiento unicast.

  • Esquema “Shared-tree"
Esta arquitectura redistribuye la información de enrutamiento mediante la centralización de esta en uno de los routers de la topología. Esto genera otra serie de puntos de diseño, como es la redistribución de rutas entre estos routers así como la prestación de alta disponibilidad del servicio que ofrecen.

Algunos de los protocolos que se pueden englobar en esta clasificación son:

o    Core-Based Tree (CBT)
o    Protocol Independent Multicast Sparce-Mode (PIM-SM)
o    Bidirectional Protocol Independent Multicast (Bidir-PIM)


Comparativa de protocolos Shared-tree

Existen diferencias de funcionamiento entre los protocolos shared-tree mencionados antes:

  •  Core-Based Tree (CBT)

    El router que centraliza las rutas es llamado “Core”.  Cuando el origen de datos multicast comienza a transmitir, su router local reenviará dicho tráfico hasta este router Core.

    Cuando el receiver se une a un grupo multicast el router de su segmento de red direcciona el mensaje de Join hacia el router Core. Ese mismo camino es el que seguirá el flujo de datos Multicast ya       que el router Core centralizará no solo las tablas de enrutamiento, si no también el tráfico multicast.

    Este comportamiento tiene el inconveniente de que es muy posible que, a no ser que el router Core se encuentre muy cerca del origen del tráfico multicast, las rutas entre el origen y el receiver no sean las óptimas, como se puede ver en este ejemplo encontrado en http://www.cl.cam.ac.uk/~jac22/books/mm/book/node78.html




           Ilustración 1 – Rutas no optimas con CBT 


  • Protocol Independent Multicast Sparce-Mode (PIM-SM)
Este protocolo solventa el problema de que el tráfico multicast esté obligado a transcurrir por el router Core (en PIM-SM se denomina Rendezvous Point (RP) ), de tal manera que si la ruta que pasa a través del RP no es la optima no será la utilizada.

Los RP utilizan el modelo source-tree para llegar a los orígenes multicast pero, cada router cliente  genera lo que se llaman unidirectional trees gracias a los mensajes de Join de los receivers. Estos caminos son utilizados en el momento en que se detecta que son mejores que el utilizado por el RP.

Dicho procedimiento viene bien reflejado en el siguiente esquema que aparece en http://www.cisco.com/web/about/ac123/ac147/ac174/ac198/about_cisco_ipj_archive_article09186a00800c851e.html



Ilustración 2 – Elección del camino óptimo en PIM-SM 

En la configuración del RP se pueden optar por dos opciones, configurar los RP manualmente en todos los routers o utilizar alguno de los métodos de auto descubrimiento: Auto-RP y BSR, siendo el primero de ellos el que más versatilidad proporciona, ya que en el es posible la modificación de parámetros (como los temporizadores) y puede ser utilizado en el modo híbrido también llamado "PIM-sparse-dense mode".

Al ser el RP un punto crítico en la arquitectura PIM-SM, es necesario proporcionar algún método de redundancia. La alta disponibilidad del RP se consigue utilizando más de un RP al mismo tiempo (Anycast-RP) y gestionar su utilización mediante el protocolo Multicast Source Discovery Protocol (MSDP). Este protocolo permite que los RP compartan información sobre el estado de los orígenes multicast.

MSDP también es utilizado cuando, por causas de escalabilidad, o por la existencia de varios dominios de gestión (por ejemplo varios ISPs), se hace necesaria la creación de múltiples "dominios" o "zonas" multicast, los cuales pueden ser regidos por diferentes RPs. Estos dominios necesitan el protocolo MSDP para poder comunicarse los orígenes que residen en cada uno de ellos respectivamente.


  • Bidirectional Protocol Independent Multicast (Bidir-PIM)

El protocolo Bidir-PIM está basado en PIM-SM pero con algunas diferencias. PIM-SM utiliza el RP (Rendez-Vous Point) para gestionar el envío de datos a cada uno de los grupos multicast mediante el shared-tree desde los RP hasta los receptores (recivers o clientes) y source-tree desde el origen hasta el RP. Esto puede llegar a ser un problema si se tiene un alto número de orígenes, ya que puede llegar a sobrecargar la máquina RP.

En el protocolo Bidirectional PIM no existe el source-tree entre el origen y el RP, si no que esta comunicación se realiza mediante un shared-tree lo que lo hace un protocolo muy escalable en cuanto al número de orígenes multicast se refiere.

La mayor escalabilidad se gana a costa de que todo el tráfico se dirige hacia el RP. Esto hace que exista posibilidad de conmutar a una ruta obtenida por source-tree (como sucedía en PIM-SM).
Debido a que este protocolo solo utiliza shared-trees necesita un método adicional para enviar el tráfico hasta el RP. El método consiste en disponer un nuevo rol, el Designated Forwarder (DF), el cual decide los paquetes que tienen que ser enviados hacia el RP.

Este protocolo tiene el nombre de bidireccional ya que tiene la peculiaridad de que las redes de los orígenes de tráfico también pueden ser receptores, lo que puede ser necesario en algún diseño en el que existan aplicaciones que requieran muchos orígenes y muchos destinos simultáneamente.

Este comportamiento bidireccional conlleva que el protocolo Reverse Path Forwarding (RPF) no puede ser utilizado conjuntamente con este protocolo, ya que se utiliza un mismo shared-tree para llevar el tráfico desde el origen al RP como el tráfico desde el RP a los recivers.

En la siguiente imagen se muestran las diferencias entre Source-tree, Shared-tree y Bidir-PIM. En el último caso existen dos orígenes (S1 y S2) y se observa como se crea un camino bidireccional: 




Ilustración 3 – Diferencias entre Source-tree, Shared-tree y Bidir-PIM 

Al igual que en PIM-SM, en Bidir-PIM el RP también es un punto crítico (incluso más en este último caso) que aporta un servicio que debe ser redundado. En este caso no se puede utilizar la misma metodología que con PIM-SM, ya que no pueden utilizarse varios RP a la vez, como se hacía con Anycast-RP, debido a que no utiliza un source-tree para la comunicación con el origen y todo el tráfico fluirá por el RP. En el caso de Bidir-PIM se hace uso del llamado Phantom-RP, un procedimiento parecido al VRRP o HSRP en el que se crea una "instancia virtual del RP".

Esquemas de enrutamiento multicast SSM


El protocolo que se basa en el esquema SSM es el llamado Protocol Independent Multicast-Source-Specific Multicast mode (PIM-SSM) el cual hace uso de la lógica SSM mediante la cual un grupo multicast ya no está solo definido por un grupo de receptores, si no que también lo está por el origen al que quieren vincularse.

Este protocolo está pensado para arquitecturas uno-a-muchos y puede verse como una modificación del protocolo PIM-SM, aunque tiene una gran diferencia, y es que PIM-SSM no hace uso de los RPs, ya que se conoce el origen multicast de antemano (al haber sido elegido explícitamente por el receptor), siendo el camino elegido mediante el protocolo de direccionamiento unicast.