sockets broadcasting y multicasting - páginas...
TRANSCRIPT
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.
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