50
Sockets broadcasting y multicasting

Sockets broadcasting y multicasting - Páginas Personalesprofesores.fi-b.unam.mx/yasmine/Tema_4_1.pdf · Pueden provocarse tormentas de mensajes Routers: deben tener una opción para

  • Upload
    dodang

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Sockets broadcasting y multicasting

Broadcast. ◦ Definición de Broadcast. ◦ Funcionamiento Broadcast. ◦ Creación del socket Broadcast.

Multicast. ◦ Definición de Multicast. ◦ Funcionamiento Multicast (IGMP). ◦ Creación del socket Multicast.

Servidor SNTP (Simple Network Time Protocol).

Hasta ahora hemos revisado las conexiones punto a punto por medio de Sockets.

Sin embargo hay una gran colección de aplicaciones que requieren enviar tráfico a múltiples destinos como son:

◦ Difusión de vídeo

◦ Difusión de audio

◦ Difusión de noticias

◦ e-learning

◦ Entre otras

Pero enviar la información a muchos destinos replicando la misma información en la red es muy ineficiente y crea varios retrasos especialmente si el número de receptores es muy grande.

D1

D2

D3

D4

S

En Unicast los routersreenvían (encaminan)un paquete recibidosolo a través de unade sus interfaces

DefiniciónServicio de envío a todos los miembros de una

(sub) red.

D1

D2

D3

D4

S

Todos los receptores de la red deben recibir una copia del mensaje.

Utiliza UDP

◦ Existen tecnologías que soportan la difusión de información de forma natural

Topologías tipo bus: Ethernet

Topologías en anillo

Redes por satélite o cable

◦ Por otro lado hay tecnologías donde es costoso construir servicios de difusión

Conmutadores, routers, bridges…

Utilidad: Cuando se desconoce la red◦ Buscar algún servidor que atiende terminales sin disco

(BOOTP)

◦ Conocer los servidores activos: daytime, echo…

◦ Búsqueda de usuarios en la red: finger

Desventajas◦ Mucha carga a ancho de banda Todos los host deben recibir el paquete

◦ Es necesario realizar múltiples copias

◦ Pueden provocarse tormentas de mensajes

◦ Routers: deben tener una opción para inhibir la difusión de mensajes.

Cuatro tipos diferentes de direcciones broadcast:

◦ Broadcast limitado

Dirección: 255.255.255.255 Nunca es redirigido por un router hacia la red exterior. Se utiliza en el proceso de configuración de host (p. e.

DHCP).

◦ Broadcast dirigido a red

Dirección : Identificador de red + Identificador de host a 1. <id de red>.255.255.255

Puede ser redirigido por los routers al exterior pero esta opción puede ser deshabilitada.

◦ Broadcast dirigido a subred

Dirección: Identificador de red + Identificador de subred + Identificador de host a 1

<id de red>. <id de red>.255.255

◦ Broadcast dirigido a todas las subredes

Dirección: Identificador de red + Identificador de subred y de host a 1.

<id de red>. <id de red>.<id de red>.255

Para la red 210.25.23.0, con máscara de subred 255.255.255.192, las direcciones broadcast para todas las subredes sería 210.25.23.255

Si una red no tiene subnetting es lo mismo que un broadcast dirigido a red

Red Ethernet

◦ Subred de clase B Dirección de una red de clase B: 138.4.0.0

◦ Dirección de subred: 0.0.23.0

◦ Máscara de red 255.255.255.0

◦ Dirección de difusión a subred: 138.4.23.255 Dirección de difusión a todas las

subredes:138.4.255.255

Envío de paquetes◦ Envío a dirección de difusión y a un puerto

Recepción de paquetes◦ El paquete se recibe en la cola del puerto

◦ El paquete se distingue por la dirección de envío

Envío a: dir = 138.4.23.255, puerto = 13

◦ Se envía el paquete UDP al servidor de echo de los ordenares de la subred

Envío a: dir = 138.4.23.255, puerto = 79 Datos = “tfigueroa”

◦ Se envía el paquete UDP de búsqueda del usuario tfigueroa al servidor finger de todos los host de la subred

public class DayTimeClient{

public static final int port = 13;

public static void main(String args[]) {

Socket s = null;

String timestamp;

try {

s = new Socket( args[0], port);

InputStream in = s.getInputStream();

BufferedReader buff = new BufferedReader(new InputStreamReader(in));

System.out.println("Conectado a : " +

s.getInetAddress() + “en puerto " + s.getPort()) ;

while (true) {

timestamp = buff.readLine();

if (timestamp == null) {

System.out.println(“Conexión del servidor cerrada");

break;

}

System.out.println("Daytime : " + timestamp);

}

} catch (IOException e) { System.out.println(e);}

finally {

try {

if (s != null) s.close(); } catch (IOException e2) { }

}

}}

Salida:◦ Connected to : /132.248.51.208 on port 13

◦ Daytime : Tue Apr 15 22:43:38 2008

◦ Daytime :

◦ Server closed connection

Para broadcast:◦ java DayTimeClient 132.248.23.255

En Internet no es posible hacer un envío broadcast. Si utilizamos la dirección 255.255.255.255 el envío se difunde en la red local únicamente, no pasa más allá.

Dicho de otro modo, el paquete broadcast es tratado como si tuviera TTL=1, cualquiera que sea el valor de TTL que realmente tenga

Esto se hace para preservar la „salud‟ de la red. De lo contrario cualquier usuario desaprensivo o despistado podría saturar la red

En Internet cuando se define una red automáticamente se define una dirección broadcast en dicha red. Dicha dirección es la más alta existente en esa red (parte host toda a unos).

Por ejemplo si definimos la red 130.206.4.0/23 su dirección de broadcast es 130.206.5.255

En principio cualquier host puede hacer un envío broadcast a una red remota utilizando dicha dirección esto se conoce como „broadcastdirigido‟

A finales de los 90 se produjeron diversos ataques utilizando broadcast dirigido. La técnica consistía en enviar un paquete a la dirección broadcast de una red grande poniendo una dirección de origen falsa (la del host a atacar). Cuando ese host recibía las respuestas de los pings su consumo de CPU crecía enormemente.

Por tanto no se permite el broadcast dirigido. Si se recibe un ping broadcast dirigido solo lo responde el router que da acceso a esa red.

En los routers cisco el broadcast dirigido se controla con el comando ‘ip directed-broadcast‟ a nivel de interfaz. Por defecto este comando está puesto a ‘no’ en todas las

interface.

IGMP

Se utiliza en las comunicaciones uno a varios

Con Multicast los routers pueden reenviar (encaminar) un paquete recibido a través de más de una (varias) de sus interfaces

Servicio eficaz de comunicación en grupo◦ Comunicación de N a N Evita la multiplicación de tráfico

◦ Normalmente basado en el envío de datagramas

Se puede simular con unicast◦ Creando una malla entre todos los miembros Muy ineficaz (n-plica tráfico)

Es un caso particular de difusión◦ Grupo:Todos los host de una (sub) red El grupo es fijo

Grupo dinámico◦ Operaciones de conexión y desconexión explícitas Miembro del grupo = conectado al grupo

◦ Acceso libre: cualquiera puede conectarse◦ Tamaño ilimitado Un grupo puede abarcar toda la Internet

Grupo de recepción◦ Envío sin restricciones: para enviar a un grupo no

es necesario ser miembro del grupo◦ Mensajes enviados al grupo son recibidos por

todos los miembros del grupo

Un grupo de multicast se identifica con ◦ dirección IP de clase D Formato: 1110xxxxx....xxxx Una comunicación utiliza además una dirección de puerto

Identifican grupos globales en Internet

Grupos permanentes:◦ direcciones asignadas administrativamente por IANA Internet Assignment Number Authority ftp://ftp.isi.edu/in-notes/iana/assignments/multicast-

addresses

MBONE:◦ red para distribución de audio y vídeo por internet Direcciones reservadas: 224.2.*.*

BASE-Address.mcast.net: 224.0.0.0: reservada

All-Systems.mcast.net: 224.0.0.1◦ Todos los sistemas en la subred (local), IGMP

All-Routers.mcast.net: 224.0.0.2◦ Todos los routers en la subred (local)

DVRMP.mcast.net: 224.0.0.4◦ Routers con “Distance Vector Multicast Routing

Prot.”

PIM-ROUTERS.mcast.net: 224.0.0.13◦ 4Routers con “Protocol Indpendent Multicasting”

El Multicast trabaja bajo el protocolo UDP, debido a que no se envían confirmaciones (ACK) que podrían saturar la red.

Un paquete multicast es entonces un datagrama convencional dirigido a una dirección multicast.

El mecanismo de trabajo general es elsiguiente: ◦ se guardan los datos en un datagrama◦ se envía el datagrama◦ los ruteadores se encargan de todo el trabajo

intermedio(IGMP, ingreso del host al grupo, reenvío por sus interfaces, tablas de ruteo)

◦ se entrega una copia del datagrama a cada miembro del grupo correspondiente.

Para recibir los datos, cada miembro del grupo debe estar escuchando en un puerto adecuado y debe estar listo para procesar el datagrama; el anfitrión reconoce el paquete porque pertenece al grupo.

La única diferencia que se presenta en multicast respecto al manejo de datagramas en UDP se refiere a un campo de la trama IP, el byte llamado TTL (time tolive).

En multicast el programador debe asignar este byte (que puede tomar valores desde 0 hasta 255).

El TTL fue diseñado para prevenir la ocurrencia de loops infinitos entre ruteadores mal configurados y da una estimación del número de ruteadores que un datagrama puede atravesar antes de ser descartado.

Por lo tanto en multicast el TTL proporciona un método ad hoc para limitar qué tan lejos puede llegar un datagrama en un envío multicast.

Cada vez que un datagrama pasa por un ruteadorsu TTL se decrementa en al menos uno y se descarta cuando su TTL es cero.

La correspondencia entre el valor del TTL y la distancia geográfica que alcanzará un datagrama en multicast no es precisa, una TTL de 127 puede llegar a miembros de un grupo en todo el mundo, mientras que un TTL de 1 se entregará solo a anfitriones que pertenezcan al grupo y estén en la subred local.

El paquete IP tiene un campo TTL (Time ToLive)◦ Limita la vida de los paquetes IP

◦ Limita el máximo número de routers a cruzar

En multicast se utiliza para limitar la alcanzabilidad◦ Típicamente: campus => 4-16, pais => 32-64,

....

Red de la

Universidad

Autónoma de

Aguascalientes

Red de la UNAM

Mexico America

TTL-Threshold = 16

TTL-Threshold = 48

TTL-Threshold = 0

Máximo 15 saltos

Máximo 32 saltos

Máximo 64 saltos

Ámbito TTL

LAN 1

Organización 15

País 47

Continente 63

Global 127

Mundo

TTL-Threshold = 64

Se asigna un significado especial a determinados rangos de direcciones multicast.

Similar a la delimitación por TTL, pero el filtro en el router se realiza por la dirección. Devuelve al TTL su auténtico significado y suprime la restricción de número de saltos máximo.

Rango Ámbito

224.0.0.0/24

(224.0.0.0-224.0.0.255)

Nivel de enlace (LAN)

224.0.1.0-238.255.255.255 Global.

239.0.0.0 – 239.191.255.255 Reservado para usos futuros

239.192.0.0/14

(239.192.0.0-239.195.255.255)

Organización

239.196.0.0 – 239.254.255.255 Reservado para usos futuros

239.255.0.0/16

(239.255.0.0-239.255.255.255)

Nivel de enlace (LAN)

Red de la UNAM

Mexico

239.255.0.0/16

239.192.0.0/14

224.0.1.0-238.255.255.255

Red de la UAM

America

Mundo

Filtra 239.192.0.0/14

Filtra 239.255.0.0/16

Es necesario contar con routers multidifusión (mrouters) que puedan procesar estos datagramas de modo que una copia de los mismos alcance cada uno de los equipos miembros del grupo multidifusión.

Esto se consigue mediante un árbol de entrada multicast (multicast delivery tree) que se construye a través de los routers y que tiene por ramas todos los equipos que forman parte del grupo multicast.

Este árbol de entrega es dinámico, en función de la conexión/desconexión de los miembros del grupo.

Conecta los miembros del grupo

Ejemplo:◦ Grupo = {P3, P4, P8,.., P12}

◦ P1, P2, P5, P6 y P7 no están en el grupo

Routers:◦ Realizan copias a los host conectados al grupo

◦ Se comunican con IGMP con los host

IGMP (Internet Group Management Protocol):

Ejemplo:

Protocolo de suscripción del host al grupo El router sondea periódicamente a los host de su red

Los host responden con los grupos a los que se han suscrito los usuarios

No respuesta implica desconexión

Protocolo que permite a los hosts comunicar su interés, o no, en pertenecer a grupos multicast, dinámicamente.

Los mensajes IGMP van encapsulados dentro de datagramas IP, con número de protocolo IP = 2, TTL = 1 y con la opción IP Router Alert en la cabecera IP.

Existen 3 versiones incrementales. La más usada es la versión 2.

IGMP (Internet Group Management Protocol), está descrito en los RFC 1112, 2236 y 3376 de sus versiones 1, 2 y 3, respectivamente.

Gestiona la membrecía de las terminales a los distintos grupos multicast.

Proporciona a los routers multicast información acerca del estado de membrecía del host de una red.

Le permite a los mrouters saber en todo momento los grupos multicast que están activos en cada una de las interfaces.

IGMP NO es un protocolo de encaminamiento multicast

Tipo Emitido

por

Función Dirección

de destino

Consulta General

(General Query)

Routers Preguntar a los hosts si están

interesados en algún grupo

multicast

224.0.0.1

Consulta específica de

grupo (Group-Specific

Query)

Routers Preguntar a los hosts si están

interesados en un determinado

grupo multicast

La del

grupo en

cuestión

Consulta específica de

grupo y fuente (Group-

and-Source-Specific

Query)

Routers Preguntar a los hosts si están

interesados en un determinado

grupo multicast de una serie de

fuentes determinada

La del

grupo en

cuestión

Informe de Pertenencia

(Membership Report)

Hosts Informar a los routers que el

host está interesado en un

determinado grupo multicast

(indicando una serie de fuentes

a incluir o a excluir)

224.0.0.22

Versión Acciones Tipo Mensajes

IGMP 1 •Unirse a un grupo•Pregunta-Respuesta•Abandonar un grupo

•Membership Query.•Membership Report.

IGMP 2 •Unirse a un grupo•Pregunta-Respuesta General •Pregunta-Respuesta Específica•Abandonar un grupo•Elección del router multicast

•Membership Query•General Query•Group-Specific Query

•Membership Report versión 1•Membership Report versión 2•Membership Leave Group

IGMP 3 •Las propias de las versiones 1 y 2•Unirse a un grupo. Igual que en versiones anteriores.

•Membership Query•General Query•Group-Specific Query•Group-and-Source-SpecificQuery

•Membership Report versión 3 •Membership Report versión 1 •Membership Report versión 2 •Membership Leave Groupversión 2

40

◦ El host H que se quiera a un grupo G debe mandar un Membership Report a la dirección del grupo al que quiere unirse. Ej.: Host 2 quiere unirse al Grupo 1.

Host A : Grupos 1 y 3 Host B Host C: Grupo 2 Router Multicasting

MemberShip Report

Grupo 1

CBA

A decide unirse a

224.2.2.2

B decide unirse a

224.1.1.1

Envía un IGMP

‘Membership Report’

a 224.1.1.12 3

Cuando un host quiere entrar a formar parte de un grupo multicast

envía un mensaje IGMP de ‘saludo’ llamado Membership Report.

Estos mensajes se envían al mismo grupo multicast al que se quiere

unir el host

1

Envía un IGMP

‘Membership Report’

a 224.2.2.2

C decide unirse a

224.2.2.2

Envía un IGMP

‘Membership Report’

a 224.2.2.2

El mensaje no

lo recibe nadie

El mensaje no

lo recibe nadieEste mensaje

lo recibe A

◦ Si el router no recibe ningún mensaje Report de algún grupo, entonces considera que ese grupo ya no existe.

◦ Sólo un host de cada grupo responde al router. Si un host en espera de contestar a una Query escucha un Report de otro host del mismo grupo, interrumpe su temporizador y cancela la respuesta.

Host A: Grupos 1 y 3 Host B: Grupo 1 Host C: Grupo 2 Router Multicasting

MemberShip Report

Grupo 1

Timer Grupo 1 Timer Grupo 2

Timer Grupo 3

Timer Grupo 1 MemberShip Query

MemberShip Report

Grupo 3

MemberShip Report

Grupo 2

CBA

X Y

Router multicast

Es el ‘Query’ Router

Miembro de 224.2.2.2 Miembro de 224.1.1.1 Miembro de 224.2.2.2

1: Cada 60 seg. X

envía un mensaje

query a 224.0.0.1

1

2: B se reporta

(mensaje a

224.1.1.1)

2

3: C se reporta

(mensaje a

224.2.2.2)

3

4: A no se

reporta (sabe que

ya lo ha hecho C)

4

5: X sabe que en la LAN hay

miembros de 224.1.1.1 y de

224.2.2.2, pero no sabe cuantos

ni quienes

6: Y tiene la misma

información que X pues

recibe todos los mensajes

Los routers multicast son siempre miembros

de todos los grupos multicast de su LAN

Router multicast

(no es ‘Query’ Router)

Grupos de X Grupos de Y

224.1.1.1 224.1.1.1

224.2.2.2 224.2.2.2

◦ Cuando un host quiere abandonar un grupo simplemente deja de responder como miembro de ese grupo a los mensajes Membership Querydel router.

◦ Ejemplo: Host C abandona el grupo 2.Host A: Grupos 1 y 3 Host B: Grupo 1 Host C: Grupo2 Router Multicasting

MemberShip Query

Timer Grupo 1No responde

Timer Grupo 3

Timer Grupo 1

MemberShip Report

Grupo 1

MemberShip Report

Grupo 3

Miembro de

224.3.3.3

CBA

X Y

Router multicast

Query router

Miembro de

224.2.2.2

Miembro de

224.1.1.1

Miembro de

224.2.2.2

Router multicast

D

1: D decide

abandonar 224.3.3.3

2: X envía el query una vez por

minuto y no recibe respuesta de

224.3.3.3. Cuando esto ocurre tres

veces seguidas decide borrar

224.3.3.3 de sus tablas

3: Al pasar 3 minutos sin oír

informes de 224.3.3.3 Y

también le borra de sus

tablas

Grupos de X

224.1.1.1

224.2.2.2

Grupos de Y

224.1.1.1

224.2.2.2

224.3.3.3 224.3.3.3

222

◦ El router pregunta por la existencia de miembros de un grupo concreto. Los host responden igual que a una Query general. Usando un tiempo de respuesta máximo menor(=1s) se reduce la latencia de abandono de grupo. Ej.:

Host A : Grupos 1 y 3 Host B: Grupo 1 Host C: Grupo 2 Router Multicasting

MemberShip Group

Specific Query

Grupo 1

Timer Grupo 1 Timer Grupo 1

MemberShip Report

Grupo 1

47

◦ Ej.: Host A abandona el grupo 1. Si algún host contesta con un Report, entonces el router

mantiene el grupo.

Host A: Grupos 1 y 3 Host B: Grupo 1 Host C: Grupo 2 Router Multicasting

Timer Grupo 1

MemberShip Report

Grupo 1

MemberShip Group-

Specific Query Grupo

1

MemberShip Leave

Group - Grupo 1

No responde

Timer Eliminar Grupo 1

48

◦ Ej.: Host C abandona el grupo 2.

Host A: Grupos 1 y 3 Host B: Grupo 1 Host C: Grupo 2 Router Multicasting

MemberShip Group-

Specific Query

Grupo 2

MemberShip Leave

Group - Grupo 2

No responde

Timer Eliminar Grupo 2

Grupo 2 eliminado

CBA

X Y

Router multicast

Query router

Miembro de

224.2.2.2

Miembro de

224.1.1.1

Miembro de

224.2.2.2

Router multicast

1: La aplicación de C decide

abandonar 224.2.2.2

3: X envía un Group-

Specific Query a

224.2.2.2

3

4: A envía

Membership

Report a

224.2.2.2

4

5: X decide mantener activo

el grupo 224.2.2.2 ya que aun

tiene miembros

6: Y, que lo ha oido todo,

decide también mantener

activo el grupo 224.2.2.2

Grupos de X

224.1.1.1

224.2.2.2

Grupos de Y

224.1.1.1

224.2.2.2

2: C envía Leave

Group a

224.0.0.2

2

CBA

X Y

Router multicast

Query router

Miembro de

224.2.2.2

Miembro de

224.1.1.1

Router multicast

1: La aplicación de A decide

abandonar 224.2.2.2

3: X envía un Group-

Specific Query a

224.2.2.2

34: como no recibe respuesta

X decide eliminar el grupo

224.2.2.2 de esa interfaz

5: Y, que lo ha oido todo,

decide también eliminar el

grupo 224.2.2.2

Grupos de X

224.1.1.1

224.2.2.2

Grupos de Y

224.1.1.1

224.2.2.2

2: A envía Leave

Group a

224.0.0.2

2