lunes, 28 de diciembre de 2009

Introducción al Multicast (Parte I)

Actualmente y debido a la nueva ola del video sobre IP algunas tecnologías se ponen de moda, incluso aquellas que siempre fueron conocidas por su nombre y se mencionan habitualmente sin que la mayoría de los involucrados tenga una idea más o menos clara de los conceptos fundamentales.

Puntualmente estoy hablando del afamado multicast, y la idea es que mediante un escueto post podamos explicar algunos de esos conceptos fundamentales que nos aclaren un poco el panorama.

Lamentablemente, la mejor manera que conozco para definir este concepto es mostrando primero que cosa no es, dado que ejemplificando se logra comprender rápidamente lo básico.

Conocemos la forma del paquete IP tradicional, en donde algunos de los campos más relevantes en los encabezados son la source address (dirección del dispositivo originante del paquete) y la destination address (dirección del destinatario del paquete). Ambos son de 32 bits y deben estar correctamente dispuestos para que se realice correctamente la entrega de los datos.


Ahora bien, seguramente conocemos a las dos formas estrella de la entrega de paquetes:

Unicast:

Un equipo quiere transmitir uno o varios paquetes a un único destino, por lo que completa los campos del encabezado de capa 3 con su dirección IP en el source address y la dirección IP del destinatario en el destination address. Con esto se logra una comunicación entre dos equipos en forma de un stream de datos en un solo sentido.
El ejemplo más claro de esto es cuando usamos el correo postal, en donde tenemos un único remitente y un único destinatario de la carta en cuestión.
Cuando el destinatario me quiera responder, utilizará otro sobre y cambiará las direcciones de remitente y destinatario de manera acorde para que el nuevo mensaje pueda volver al origen, creando finalmente la comunicación de dos vías.



Broadcast:


Demasiado hablamos en la academia de networking sobre este tema... el broadcast es una comunicación desde uno a todos, en donde los encabezados del paquete IP son completados con una serie de unos binarios en la parte de host (donde la máscara de red es 0 en formato binario) y los dispositivos intermediarios comprenden que deben reenviar dicho paquete a todos los puertos activos dentro del dominio de broadcast al que pertenece el remitente.

Esto tiene como contrapartida la necesidad de que todos los hosts que reciben el mensaje deban procesarlo debido a que en la dirección de destino no existe un único destinatario, sino una suerte de código que se interpreta como "A quien corresponda".
Un ejemplo de lo cotidiano sería una persona que quiere hacer publicidad y va por la calle arrojando panfletos que anuncian su negocio. Sus empleados van dejando copias en cada puerta de cada casa, y cualquier persona que ve un papel puede llegar a entender que es el destino del mensaje, por lo que deberá desdoblarlo, leerlo e interpretarlo y posiblemente eliminarlo al ver que es propaganda o bien interesarse por el aviso y llamar para pedir el producto o el servicio en cuestión.
Más allá de cualquiera de estos casos, debemos tener en cuenta que muchos papeles desperdigados en la calle o en las casas es basura, y aunque finalmente existan algunos interesados en recibir dicha información, generalmente muchos otros integrantes de la ciudad (el dominio de broadcast) tuvieron que perder tiempo agachándose a juntar el papel, leyéndolo, entendiéndolo y descartándolo.

Por esto queda claro que mientras menos broadcast exista en la red, mejor va a ser la performance, y cuando hablo de dominios de broadcast me refiero a la ciudad en el ejemplo real (a nadie le va a interesar una propaganda de un servicio que se ofrece solo en otra ciudad) y de los routers en el ejemplo de networking (los routers no transmiten broadcast entre sus interfases).



Ahora bien, ¿qué es multicast?...

Multicast:


Como se imaginarán, Multicast es una mezcla de los dos ejemplos anteriores, en donde un mensaje se transmite entre un origen y un grupo de destinos que activamente solicitaron recibir dicha información.

En su ejemplo más básico, un equipo que forma parte de una subred de n equipos en total quiere transmitir cierta información a un grupo de m equipos (m =< n-1) que utilizan un protocolo llamado IGMP para avisar a los equipos intermediarios que quieren unirse a ese grupo de escucha para recibir dicha información.

En un ejemplo muy malo se podría decir que ese grupo de m equipos se ponen la misma dirección IP (una dirección IP especial de clase D, llamada IP de grupo) y entonces logran recibir los datos destinados a esa dirección.

La ventaja de esto es que el host de origen envía una única copia de la información y son los dispositivos intermedios (routers, switches, etc) los que se encargan de copiar esos paquetes a todos los puertos en el camino de los dispositivos que enviaron mensajes de IGMP.

Con esto se logra que el emisor no deba mantener una conversación de dos vías con cada receptor, y se logra efectivamente una comunicación de tipo uno a muchos e incluso que podría ser de muchos a muchos donde (como siempre aclaramos) muchos pueden no ser todos.


En el próximo post vamos a ver como se logra este cometido más a fondo.

Saludos!

0 comentarios:

Publicar un comentario