Comunicación en Sistemas Distribuidos

Anuncio
Sistemas de Operación II
Comunicación en Sistemas
Distribuidos
Prof. Carlos Figueira
Basado en material de
Yudith Cardinale (USB)
Andrew Tanembaum y Marteen van Steen
Contenido
●
Protocolos de Comunicación
●
Propiedades Fundamentales de los Protocolos
●
Tipos de Protocolos de Transporte
●
Construcción de Bloques para la Comunicación
●
Modelo Cliente-Servidor (Operaciones
Remotas)
●
RPC (Remote Procedure Call)
●
Comunicación en grupo
Carlos Figueira/USB
2
Protocolos de Comunicación
●
Comunicación en Sistemas Distribuidos: pase
de mensajes
●
●
memoria distribuida, múltiples elementos que
pueden fallar independientemente
Funciones de mecanismos de comunicación:
●
Permitir com. entre procesos en máquinas diferentes
●
Protección contra fallas
●
Soporte para estructurar modularmente aplic. distr.
●
Esconde distinción entre comunicación remota y
local, permite reconfiguración estática y dinámica
Carlos Figueira/USB
3
Protocolos de comunicación
●
Especificación de mecanismos de
comunicación. Ejemplos
●
●
●
Modelo OSI de ISO. Marco para definir estándares
de comunicación de computadores heterogéneos.
Modelo ATM (Asynchronous Transfer Mode)
Especifica la forma como debe desarrollarse la
comunicación (formato, contenido y significado
de los mensajes intercambiados)
Carlos Figueira/USB
4
Protocolos en capas (OSI)
Carlos Figueira/USB
5
Protocolos por capas
●
Aplicación (ftp, correo-e, ssh)
●
Presentación (tipología del mensaje)
●
Sesión (facilidades de sincronización)
●
Transporte (TCP, UDP)
●
Red (X.25, IP, ATM)
●
Enlace de datos (control de errores, IEEE 802)
●
Físico (RS-232, 802.3)
Carlos Figueira/USB
6
Componentes de mensaje
Carlos Figueira/USB
7
Propiedades fundamentales de los
protocolos
●
●
●
Las redes pueden fallar, los mensajes se
pierden
Si un mensaje se pierde, se puede corregir
retransmitiéndolo (necesita temporizadores,
confirmación del receptor)
Si todos los mensajes se pierden ...
Carlos Figueira/USB
8
Protocolos: fallas del servidor
●
●
●
Si el cliente no recibe respuesta, reenvía
solicitud
El servidor puede recordar por donde iba
●
Si no recuerda, puede realizarlo dos veces!
●
¿Qué debemos hacer, solicitar otra vez o no?
Tipos de protocolo:
●
Entregan mensaje “al menos una vez”
●
Entregan mensaje “a lo sumo una vez”
Carlos Figueira/USB
9
Protocolos “al menos una vez”
●
●
●
Si no hay falla, entregan mensaje una sola vez
Ante fallas, pueden entregar un mensaje más
de una vez (por retransmisión)
Se usan cuando la operación es idem-potente
(realizarla una vez o varias da el mismo
resultado)
●
Esconden fallas de comunicación y servidores
●
Ejemplo: NFS
Carlos Figueira/USB
10
Protocolos “a lo sumo una vez”
●
●
●
●
●
Detectan si la red o el servidor fallan y lo reportan.
Operan en un contexto de sesión – una asociación
entre dos procesos durante la cual ambos mantienen
el estado del protocolo.
Cuando se pierde el estado del protocolo, se termina la
sesión.
No se reciben mensajes en una sesión diferente a la
sesión en la que se envió.
Las sesiones tienen identificadores únicos: etiqueta de
tiempo (timestamps), número aleatorio (nonce)
Carlos Figueira/USB
11
Tipos de protocolos de transporte
●
●
Un único protocolo de comunicación no es
suficiente para la diversidad de aplicaciones.
Cuatro clases:
●
●
●
●
Operaciones remotas (cliente-servidor, o solicitudrespuesta). Ej: RPC, RMI
Protocolos de transferencia de datos en masa. Ej:
protocolos de transferencia de archivos
Comunicación uno a muchos: difusión (broadcast),
comunicación multi-puntos (multicast)
Comunicación de medios continuos (streaming)
Carlos Figueira/USB
12
Heterogeneidad
●
●
●
●
Los protocolos deben tomar en cuenta que las
máquinas pueden tener diferentes arquitecturas
Se requiere traducir estructuras de datos de una
máquina a representaciones independientes de
la máquina (universales)
El emisor traduce a representación universal; el
receptor traduce de ésta a su esquema propio.
Si máquinas son iguales, puede omitirse.
Puede negociarse antes de transmitir, o enviar
datos junto con id. de arquitectura
Carlos Figueira/USB
13
Operaciones remotas
●
●
Forma más básica y utilizada en sistemas
distribuidos. Se hace una solicitud (desde el
cliente) y se recibe la respuesta (desde el
servidor)
Ejemplos:
●
RPC: llamada a procedimientos remotos
●
RMI: Invocación de métodos remotos
Carlos Figueira/USB
14
Diseño primitivas de comunicación
●
●
●
Bloqueantes (síncronas) vs. no bloqueantes
(asíncronas)
Bloqueante: el proceso emisor se bloquea
hasta que el receptor ejecuta primitiva de
recepción. Idem para el receptor
No bloqueante: el emisor continúa una vez que
el núcleo copia mensaje a su espacio.
Carlos Figueira/USB
15
Diseño primitivas de comunicación
●
●
Bloqueante:
●
Ventajas: programación más sencilla
●
Desventajas: bloqueo, no aprovecha paralelismo
No bloqueante:
●
●
●
Ventajas: paralelismo ejecución/transmisión
Desventajas: programador debe verificar si mensaje
ha llegado (receptor) o ha sido enviado por núcleo
(emisor)
Primitivas: wait, test, conditional-receive (espera un
tiempo o falla), interrupción
Carlos Figueira/USB
16
Diseño primitivas de comunicación
●
●
¿Cómo resolver el problema de la pérdida de
mensajes?. ¿Qué garantía tiene un proceso de
que el mensaje fue entregado?
Primitivas confiables vs. no confiables. Cuatro
enfoques:
●
●
Send no confiable. Es responsabilidad del usuario
ACK (confirmaciones) a nivel de núcleo entre emisor
y receptor
●
Un ACK sólo
●
Temporizadores: para retransmitir, para enviar ACK
Carlos Figueira/USB
17
Llamada a procedimiento remoto
●
●
Consiste en protocolo de comunicación (usa
protocolo de
transporte y rutinas para
ensamblar datos a transferir) que permite que
los programas llamen a procedimientos en
otras máquinas, de manera transparente
Requiere rutinas de emulación (Stubs) en
cliente
y
el
servidor,
procesos
de
empaquetamiento
(marshall)
y
desempaquetamiento
(unmarshall)
de
parámetros y resultado
Carlos Figueira/USB
18
Ej. count = read (fd, buf, nbytes)
Carlos Figueira/USB
19
Extremos (stubs) cliente/servidor
Carlos Figueira/USB
20
Secuencia RPC
●
●
●
●
●
El procedimiento en el cliente llama al extremo
cliente de la manera usual
El extremo cliente construye un mensaje y
llama al SO local
El SO del cliente envía mensaje al SO remoto
El SO remoto entrega mensaje al extremo
servidor
El extremo servidor desempaca parámetros y
llama al servidor
Carlos Figueira/USB
21
Secuencia RPC
●
●
(cont.) El servidor realiza la operación y retorna
resultado al extremo servidor
El extremo servidor lo empaca en un mensaje y
llama al SO local
●
El SO del servidor envía mensaje al SO del cliente
●
SO de cliente entrega mensaje a extremo cliente
●
El extremo cliente desempaca el resultado y
retorna al procedimiento cliente
Carlos Figueira/USB
22
Heterogeneidad: big vs. little endian
Carlos Figueira/USB
23
Pase de parámetros RPC
●
●
●
●
Por valor, no hay problema
Por referencia: prohibirlas o copiar-enviarrestituir (se sustituye copia local por copia
recibida desde servidor)
Apuntadores a estructuras complejas: pasar
estructura completa, o pasar datos a medida
que servidor requiera
Tipos definidos por el usuario: descomponer en
tipos básicos
Carlos Figueira/USB
24
Soporte de RPC
●
●
●
Procesamiento de interfaz: integrar
mecanismos RPC en lenguaje convencional
Manejo de comunicaciones
Asociación (binding): localizar servidor
apropiado para un servicio
Carlos Figueira/USB
25
Procesamiento de interfaz
●
Existen lenguajes especializados para interfaces: IDL
(Interface Definition Languages). Ej: SUN RPC, DCE
Ejemplo de una especificación para un servidor de archivos:
# include <header.h>
●
specification of file_server, version 3.1:
long read(in char name[MAX_PATH], out char
buf[BUF_SIZE], in long bytes, in long position);
Carlos Figueira/USB
26
Compilador de IDL
●
●
●
●
Genera un procedimiento extremo cliente para
cada procedimiento especificado en interfaz
Genera procedimiento extremo servidor
Genera operaciones de empaquetamiento y
desempaquetamiento en cada extremo
Provee esqueleto de servicio, el cuerpo es
desarrollado por programador
Carlos Figueira/USB
27
Carlos Figueira/USB
28
Asociación en RPC
●
●
●
●
Especifica cómo se establece relación entre
procedimiento remoto y el que lo llama
Se forma cuando dos aplicaciones han hecho
conexión lógica y están preparadas para
intercambiar comandos y datos
El servidor se registra con el conector con su
interfaz (nombre, parámetros, versión, etc.)
El conector está en un puerto conocido
Carlos Figueira/USB
29
RPC: Semántica ante fallas
CLIENTE
call read
SERVIDOR
B
STUB
Call
STUB
A
read
C
E
return
return
D
return
kernel
kernel
RED
Carlos Figueira/USB
30
RPC: Semántica ante fallas
●
●
Cliente no puede localizar servidor (reporta
falla)
Mensaje solicitud se pierde: Expira
temporizador antes que llegue respuesta o
ACK
●
●
Núcleo retransmite hasta que haya confirmación (al
menos una vez)
Núcleo reporta falla (a lo sumo una vez)
Carlos Figueira/USB
31
RPC: Semántica ante fallas
●
Se pierde respuesta:
●
●
●
Expira temporizador y no se recibe ACK (en
servidor). Se retransmite ACK
¿Se perdió el mensaje o es lento el servidor? Si la
operación no es idem-potente, puede traer
problema (ej. Transacción bancaria)
Solución: enumerar mensajes
Carlos Figueira/USB
32
RPC: Semántica ante fallas
●
Se cae el servidor (en B, C o D)
●
●
●
●
El cliente no recibe respuesta, retransmite solicitud
En casos 1 (B) y 3 (D, se reenvía respuesta) no hay
problema
En caso 2 (C), puede haber problemas si servidor
no puede recuperar (rollback)
Se cae el cliente: se pierden las respuestas, se
deben manejar los cálculos huérfanos
Carlos Figueira/USB
33
Interfaces de Comunicación: socket
●
Librería de sockets
Carlos Figueira/USB
34
Interfaces de Comunicación: socket
Carlos Figueira/USB
35
Interfaces de Comunicación: MPI
Carlos Figueira/USB
36
Comunicación en grupo
●
●
Un mensaje puede ser enviado a múltiples
receptores en una sola operación
Grupo: colección de procesos que actúan
juntos en algún sistema o forma especificada
por usario
●
●
Son dinámicos
R
Implementación depende del
hardware
R
S
R
Carlos Figueira/USB
R
R
37
Comunicación en grupo
●
Se requieren mecanismos par administrar grupos
y miembros de grupos
●
●
●
Se utilizan direcciones especiales para Difusión y
Multipunto
Alternativa: transmitir mensajes por separado
Es útil para construir sistemas
●
Tolerantes a fallas en servidores replicados
●
Localizar objetos en servicios distribuidos
●
Mejor desempeño a través de datos replicados
●
Actualización múltiple
Carlos Figueira/USB
38
Comunicación en grupo: aspectos
de diseño
●
Grupos cerrados vs Grupos abiertos
●
Grupos jerárquicos vs Grupos de amigos
●
Miembros del grupo
●
Direccionamiento de grupos
●
Primitivas send y receive
●
Atomicidad
●
Ordenamiento de mensajes
●
Solapamiento de grupos
Carlos Figueira/USB
39
Descargar