SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
RPC - Llamadas a procedimientos
remotos
René Guamán-Quinche
Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables
Carrera de Ingeniería en Sistemas/Computación
Noviembre, 2021
Loja, Ecuador
2
1. RPC
2. Estructura
3. Compilación
Contenido
3
RPC
Las RPCs ofrecen una interfaz sencilla para construir aplicaciones distribuidas
sobre TCP/IP
4
RPC
RPCs en la pila de protocolos
• En el nivel de sesión en OSI
• En el nivel de aplicación en
• TCP/IP
• Independientes del protocolo de
transporte
• TCP
• UDP
• Fiabilidad no garantizada
• Depende del protocolo de transporte
5
RPC
• Se ocupa:
• Especificación e interpretación de mensajes
• NO se ocupa:
• Cómo se realiza el intercambio de mensajes entre los procesos
• Restricciones de la capa de transporte utilizado
• Binding entre un cliente a un servicio
• La sintaxis y el formato de los mensajes se define mediante IDL (Interface
Definition Language):
• Lenguaje de especificación de RPC
• Lenguaje de especificación de datos XDR
6
RPC
• Se ocupa:
• Especificación e interpretación de mensajes
• NO se ocupa:
• Cómo se realiza el intercambio de mensajes entre los procesos
• Restricciones de la capa de transporte utilizado
• Binding entre un cliente a un servicio
• La sintaxis y el formato de los mensajes se define mediante IDL (Interface
Definition Language):
• Lenguaje de especificación de RPC
• Lenguaje de especificación de datos XDR
7
Comunicación cliente-servidor
8
Estructura de los mensajes
petición-respuesta
9
Funcionamiento RPC
• El proceso que realiza la llamada empaqueta los argumentos en un mensaje, se los
envía a otro proceso y espera el resultado
• El proceso que ejecuta el procedimiento extrae los argumentos del mensaje, realiza la
llamada de forma local, obtiene el resultado y se lo envía de vuelta al proceso que
realizó la llamada
• Objetivo: acercar la semántica de las llamadas a procedimiento convencional a un
entorno distribuido (transparencia)
10
Funcionamiento RPC
• El proceso que realiza la llamada empaqueta los argumentos en un mensaje, se los
envía a otro proceso y espera el resultado
• El proceso que ejecuta el procedimiento extrae los argumentos del mensaje, realiza la
llamada de forma local, obtiene el resultado y se lo envía de vuelta al proceso que
realizó la llamada
• Objetivo: acercar la semántica de las llamadas a procedimiento convencional a un
entorno distribuido (transparencia)
11
Funcionamiento RPC
12
Conceptos básicos
• Una RPC tiene dos participantes:
• Un cliente activo, que envía una RPC al servidor
• Un servidor pasivo, que calcula un resultado y lo devuelve al cliente
• Un servicio de red es una colección de uno o más programas remotos
• Un programa remoto implementa uno o más procedimientos remotos
• Un servidor puede soportar más de una versión de un programa remoto
• Permite al servidor ser compatible con las actualizaciones de protocolos
• Un procedimiento remoto, sus parámetros y sus resultados se especifican en
un fichero de especificación del protocolo escrito en el lenguaje de
especificación de RPC y XDR
13
Suplente stubs
• Se generan automáticamente por el software de RPC
• Stub del cliente
• Stub del sevidor
• Un stub es una pieza de código usada en el cliente y el servidor
• Responsable de convertir los parámetros de la aplicación cliente/servidor
durante una llamada a procedimiento remoto
• Espacio de direcciones independiente del cliente y servidor
• Representaciones de datos diferentes (big-endian, little-endian)
• Los suplentes son independientes de la implementación que se haga del cliente y
del servidor.
• Sólo dependen de la interfaz
14
Suplente stubs
• Funciones en el cliente:
• Suplantar al procedimiento a ejecutar
• Localizar al servidor
• Empaquetar los parámetros y construir los mensajes
• Enviar el mensaje al servidor
• Esperar la recepción del mensaje y devolver los resultados
• Funciones en el servidor:
• Realizan tareas similares
15
RPC protocolo básico
16
RPC protocolo básico
17
RPC protocolo básico
Proceso cliente (llamador)
• Conectar al servidor
• Invocar una llamada a procedimiento remote
Stub o resguardo del cliente:
• Localizar al servidor
• Empaquetar los parámetros y construir los
mensajes
• Enviar los mensajes al servidor
• Bloquearse hasta esperar la respuesta
• Obtener la respuesta
18
RPC protocolo básico
Proceso servidor (llamado)
• Registrar las RPCs
• Implementar los procedimientos Stub o
resguardo del servidor:
• Recibir la petición del cliente
• Desempaquetar los parámetros
• Invocar el procedimiento de manera local
• Obtener la respuesta y enviarla al cliente
19
Modelos de RPC
• RPCs síncronas
• RPCs asíncronas
20
RPC – asíncrona
• El cliente no espera la respuesta
• No admite parámetros de salida
• Ejemplo en CORBA:
• Se corresponden con métodos especificados como oneway
21
Aspectos relaciondos RPC
• Lenguaje de definición de interfaces (IDL)
• Generador de stubs
• Tipos de parámetros
• Transferencia de parámetros
• Protocolo de comunicación
• Enlace entre el cliente y el servidor (binding)
• Semántica de las RPC en presencia de fallos
• Autenticación
22
Lenguaje de definición de interfaces
Un Lenguaje de Definición de Interfaz (IDL) permite especificar el
formato de los procedimientos remotos y otras opciones de comunicación
La interfaz es compartida por
• Cliente
• Servidor
23
Lenguaje de definición de interfaces
• Una interfaz especifica:
• Nombre de servicio que utilizan los clientes y servidores
• Nombres de procedimientos
• Parámetros de los procedimientos
• Entrada
• Salida
• Tipos de datos de los argumentos
• Los compiladores pueden diseñarse para que los clientes y servidores se escriban en
lenguajes diferentes
• Tipos de IDL
• Integrado con un lenguaje de programación (Cedar, Argus)
• Lenguaje de definición de interfaces específico para describir las interfaces entre
los clientes y los servidores (RPC de Sun y RPC de DCE)
24
Tipos de parámetros
Parámetro de entrada (in)
El parámetro se envía del cliente al servidor
Parámetro de salida (out)
El parámetro se envía del servidor al cliente
Parámetro de entrada/salida (inout)
Parámetro de entrada/salida (inout)
25
Tranferencias de parámetros
• Una de las funciones de los suplentes es empaquetar los parámetros en un
mensaje: aplanamiento (marshalling)
• Problemas en la representación de los datos:
• Servidor y cliente pueden ejecutar en máquinas con arquitecturas distintas
(ordenamiento de bytes)
• Problemas con los punteros
• Una dirección sólo tiene sentido en un espacio de direcciones
• Ejemplos de esquemas de representación de datos:
• XDR (eXternal Data Representation) es un estándar que define la
representación de tipos de datos (RFC 1832)
• Representación común de datos de CORBA (CDR)
• Serialización de objetos de Java
• XML (eXtensible Markup Language ) es un metalenguaje basado en
etiquetas definida por W3C
26
Enlace Binding
• Enlace: asociación entre el cliente y el servidor
• Implica localizar al servidor que ofrece un determinado
servicio
• El servidor debe registrar su dirección en un servicio de
nombres (binder)
27
Enlazador dinámico
• Enlazador dinámico (binder): es el servicio que mantiene una tabla de
traducciones entre nombres de servicio y direcciones
• Incluye funciones para:
• Registrar un nombre de servicio
• Eliminar un nombre de servicio
• Buscar la dirección correspondiente a un nombre de servicio
• Cómo localizar al enlazador dinámico:
• Ejecuta en una dirección fija de un computador fijo
• El sistema operativo se encarga de indicar su dirección
• Difundiendo un mensaje (broadcast) cuando los procesos comienzan su
ejecución.
28
Esquema de enlace y registro
29
Tipos de enlace
• Enlace no persistente: el binding entre el cliente y el servidor se
establece en cada RPC
• Más tolerante a fallos
• Permite migración de servicios
• Enlace persistente: el binding se mantiene después de la
• primera RPC
• Útil en aplicaciones con muchas RPC repetidas
• Problemas si lo servidores cambian de lugar
30
Tipos de enlace
Fallos que pueden aparecer con las RPC
• El cliente no es capaz de localizar al servidor
• Pérdidas de mensajes
• Se pierde el mensaje de petición del cliente al servidor
• Se pierde el mensaje de respuesta del servidor al cliente
• El servidor falla después de recibir una petición
• El cliente falla después de enviar una petición
Pérdida de mensajes del cliente
• Es la más fácil de tratar
• Se activa una alarma (timeout) después de enviar el mensaje
• Si pasado el timeout no se recibe una respuesta se retransmite el
mensaje
31
Programación de un paquete de RPC
• El programador debe proporcionar:
• La definición de la interfaz (IDL)
• Nombres de los procedimientos
• Parámetros que el cliente pasa al servidor
• Resultados que devuelve el servidor al cliente
• El código del cliente
• El código del servidor
• El compilador de IDL genera :
• El resguardo (stub) del cliente
• El resguardo (stub) del servidor
32
Desarrollo de aplicaciones RPC
33
Lenguaje XDR
• XDR (eXternal Data Representation) es un estándar que define la representación de
tipos de datos (RFC 1832)
• Utilizado inicialmente para representaciones externas de datos
• Se extendió a lenguajes de definición de interfaces
• Una interfaz contiene:
• Un número de programa
• Un número de versión del programa
• Un conjunto de procedimientos remotos:
• Un nombre y un número de procedimiento
• Los procedimientos sólo aceptan un parámetro de entrada (se encapsulan en una estructura)
• Los parámetros de salida se devuelven mediante un único resultado
• El lenguaje ofrece una notación para definir:
• constantes
• definición de tipos
• estructuras, uniones
• programas
34
Identificación de llamadas a RPC
• Un mensaje de llamada de RPC se identifica unívocamente mediante tres
campos enteros sin signo:
• (NUM-PROG, NUM-VERSION, NUM-PROCEDURE)
• NUM-PROG es el número de programa remoto,
• NUM-VERSION es el número de versión de programa,
• NUM-PROCEDURE es el número de procedimiento remoto
• Detalles de implementación:
• NUM-PROG se definen en la RFC 1831
• La primera implementación (versión) de un protocolo deber ser la 1
• Los números de procedimientos se especifican por el programador
35
El proceso portmapper
• El enlace en las RPC de sun se realiza mediante un proceso denominado portmapper
• En cada servidor ejecuta un proceso portmapper en un puerto bien conocido (111)
• El portmapper almacena por cada servicio local:
• El número de programa
• El número de versión
• El número de puerto
• Enlace dinámico:
• El número de puertos disponibles es limitado y el número de programas remotos
potenciales puede ser muy grande
• Sólo el portmapper ejecutará en un puerto determinado (111) y los números de puertos
donde escuchan los servidores se averiguan preguntando al portmapper
• Soporta TCP y UDP (ver /etc/services)
36
El proceso portmapper
• Cuando un servidor arranca registra en
el portmapper la información anterior
• Cuando un cliente necesita invocar un
procedimiento remoto envía al
portmapper del host remoto
(necesita conocer la dirección IP del
servidor)
• El número de programa y el número
de versión
• El portmapper devuelve el puerto del
servidor
37
Biblioteca de funciones de RPC
• La biblioteca de funciones de RPC
• Sistemas Unix
• Servicios de RPC para construir aplicaciones
• En el cliente
• Crear un manejador de cliente
• Destruir un manejador de cliente
• En el servidor
38
Biblioteca de funciones de RPC
rpc.h es una biblioteca de funciones para desarrollar
aplicaciones distribuidas que usan RPC:
#include <rpc/rpc.h>
• Múltiples niveles de acceso:
• Interfaz simplificado
• Rutinas de nivel intermedio
• Rutinas de alto nivel
39
Servicios RPC
Crear un manejador para el cliente
CLIENT *
clnt_create (const char *host, const u_long prognum,
const u_long versnum, const char *nettype)
Argumentos:
• host nombre del host remoto donde se localiza el programa remoto
• prognum Número de programa del programa remoto
• versnum Número de versión del programa remoto
• nettype Protocolo de transporte:
NETPATH, VISIBLE, CIRCUIT_V, DATAGRAM_V, CIRCUIT_N, DATAGRAM_N,
TCP, UDP
• Destruir el manejador del cliente
void clnt_destroy (CLIENT *clnt)
Argumentos:
• clnt Manejador de RPC del cliente
40
Servicios RPC
Ejemplo: crear/destruir un manejador
41
Invocar un procedimiento (cliente)
Un procedimiento remoto se invoca:
tipo_resultado procedimiento_v ( tipo_arg1 arg1,
tipo_arg2 arg2,
------
tipo_argn argn,
CLIENT *clnt
)
donde:
• procedimiento_v Nombre del procedimiento a invocar
• arg1,arg2,…,argn Argumentos del procedimiento
• clnt Manejador de un cliente de RPC
NOTA: v se sustituye por el número de versión que se invoca
42
Implementar un procedimiento (servidor)
• Para cada procedimiento remoto, el servidor ofrece una implementación de
procedimiento respetando su prototipo: tipo_resultado
procedimiento_v_svc ( tipo_arg1 arg1,
tipo_arg2 arg2,
…
tipo_argn argn,
struct svc_req *rqstp
)
Donde
• procedimiento_v_svc Nombre del procedimiento a implementar
• arg1,arg2,…,argn Argumentos del procedimiento
• rqstp Estructura que contiene información de la petición
• NOTA: v se sustituye por el número de versión que se implementa
43
Compilar de interfaces rpcgen
rpcgen es el compilador de interfaces que genera código C para:
• Stub del cliente
• Stub del servidor y procedimiento principal del servidor
Procedimientos para el empaquetado y desempaquetado XDR
Fichero de cabecera (.h) con los tipos y declaración de prototipos de
procedimientos
44
Sintaxis de rpcgen
Compilar usando rpcgen
rpcgen infile
infile fichero en lenguaje de definición de interfaz de RPC
(XDR en RPC de SUN)
Algunas opciones:
-N Permite a los procedimientos tener múltiples argumentos
-a Genera todos los ficheros incluyendo código de ejemplo para cliente y servidor
-M Genera stubs multi-thread para paso de argumentos
45
Aplicación de rpcgen
46
Esquema de la aplicación
47
Esquema de la aplicación
Ejemplo: suma.x
48
Esquema de la aplicación
Ejemplo: suma.h
49
Esquema de la aplicación
Ejemplo: servidor.c
50
Esquema de la aplicación
Ejemplo: cliente.c
51
Esquema de la aplicación
Ejemplo: cliente.c
52
Esquema de la aplicación
suma_xdr.c
53
Esquema de la aplicación
suma_clnt.c (stub del cliente)
54
Esquema de la aplicación
suma_svc.c (stub del servidor)
55
Esquema de la aplicación
suma_svc.c (stub del servidor)
56
Esquema de la aplicación
suma_svc.c (stub del servidor)
57
Compilación
gcc –c suma_xdr.c
gcc –c suma_svc.c
gcc –c suma_clnt.c
gcc –c cliente.c
gcc –c servidor.c
gcc suma_xdr.o suma_clnt.o cliente.o –o cliente
gcc suma_xdr.o suma_svc.o servidor.o –o servidor
rpcgen –a –N –M suma.x
Opciones:
-a: genera todos los ficheros incluyendo ejemplos
-N: permite varios argumentos
-M: genera código multithread (código que puede ser utilizado
en aplicaciones con varios threads)
en aplicaciones con varios threads)
58
Suma.x
59
Ficheros que se generan
suma.h: incluye prototipos de funciones
suma_client.c: ejemplo de cliente.
suma_clnt.c: stub del cliente
suma_server.c: plantilla con las funciones a implementar
en el servidor
en el servidor
suma_svc.c: stub del servidor
suma_xdr.c: funciones XDR
Compilación
60
Cŕeditos
• Transparencias basadas por:
García-Carballeira F., Tema Java RMI OCW Sistemas Distribuidos
Networking académico:
Correo electrónico: rguaman@unl.edu.ec
Twitter: @rene5254
SlideShare: https://es.slideshare.net/rene5254
61
Gracias

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Protocolos de cada capa del modelo osi
Protocolos de cada capa del modelo osiProtocolos de cada capa del modelo osi
Protocolos de cada capa del modelo osi
 
ospf isis
ospf   isisospf   isis
ospf isis
 
Algoritmo de Anillo
Algoritmo de AnilloAlgoritmo de Anillo
Algoritmo de Anillo
 
PROTOCOLO RIP V1 Y RIP V2 - REDES DE DATOS
PROTOCOLO RIP V1 Y RIP V2 - REDES DE DATOSPROTOCOLO RIP V1 Y RIP V2 - REDES DE DATOS
PROTOCOLO RIP V1 Y RIP V2 - REDES DE DATOS
 
Introduccion a los sistemas distribuidos
Introduccion a los sistemas distribuidosIntroduccion a los sistemas distribuidos
Introduccion a los sistemas distribuidos
 
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Hilos con Posix
Hilos con PosixHilos con Posix
Hilos con Posix
 
STP
STPSTP
STP
 
Protocolo dns
Protocolo dnsProtocolo dns
Protocolo dns
 
TAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOSTAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOS
 
Clasificacion de los protocolos de enrutamiento
Clasificacion de los protocolos de enrutamientoClasificacion de los protocolos de enrutamiento
Clasificacion de los protocolos de enrutamiento
 
DHCP presentación
DHCP presentaciónDHCP presentación
DHCP presentación
 
Router
RouterRouter
Router
 
Protocolos del Modelo OSI
Protocolos del Modelo OSIProtocolos del Modelo OSI
Protocolos del Modelo OSI
 
Protocolo de capa 4
Protocolo de capa 4Protocolo de capa 4
Protocolo de capa 4
 
Stp
StpStp
Stp
 
Capa de enlace de datos - Modelo OSI
Capa de enlace de datos - Modelo OSICapa de enlace de datos - Modelo OSI
Capa de enlace de datos - Modelo OSI
 
Protocolo SNMP
Protocolo SNMPProtocolo SNMP
Protocolo SNMP
 
Protocolo de capa 5
Protocolo de capa 5Protocolo de capa 5
Protocolo de capa 5
 

Similar a RPC

Conexion dinamica
Conexion dinamicaConexion dinamica
Conexion dinamicam_aguirre
 
Tema 5 capa de transporte
Tema 5 capa de transporteTema 5 capa de transporte
Tema 5 capa de transportealex sgarcia
 
Protocolos y funcionalidades de la capa de aplicacion
Protocolos y funcionalidades de la capa de aplicacionProtocolos y funcionalidades de la capa de aplicacion
Protocolos y funcionalidades de la capa de aplicacionFernando Illescas Peña
 
Internet orígenes,evolucion.
Internet orígenes,evolucion.Internet orígenes,evolucion.
Internet orígenes,evolucion.klever95
 
Capa4 Modelo Osi
Capa4 Modelo OsiCapa4 Modelo Osi
Capa4 Modelo Osiguest58fcdf
 
programacion_redes_informaticas_clase_3_19042024.pptx
programacion_redes_informaticas_clase_3_19042024.pptxprogramacion_redes_informaticas_clase_3_19042024.pptx
programacion_redes_informaticas_clase_3_19042024.pptxmviapiano
 
Switch & Routing 1ra parte
Switch & Routing 1ra parteSwitch & Routing 1ra parte
Switch & Routing 1ra partejfsantiagor
 
SWITCHING + ROUTING primera parte
SWITCHING + ROUTING primera parteSWITCHING + ROUTING primera parte
SWITCHING + ROUTING primera partejfsantiagor
 
Aplicacion redes expo-red_es
Aplicacion redes expo-red_esAplicacion redes expo-red_es
Aplicacion redes expo-red_esjessica_jara7
 
6-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Conceptos Básicos
6-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Conceptos Básicos6-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Conceptos Básicos
6-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Conceptos BásicosLuis Fernando Aguas Bucheli
 
Comunicación entre procesos Sistemas distribuidos
Comunicación entre procesos Sistemas distribuidosComunicación entre procesos Sistemas distribuidos
Comunicación entre procesos Sistemas distribuidosStalin Jara
 
Servidor Web Apache para Linux
Servidor Web Apache para LinuxServidor Web Apache para Linux
Servidor Web Apache para LinuxMaría del Cisne
 
capa de aplicacion-sisco-netwokrs.pptx
capa de aplicacion-sisco-netwokrs.pptxcapa de aplicacion-sisco-netwokrs.pptx
capa de aplicacion-sisco-netwokrs.pptxCESARANDRESDIAZGONZA
 

Similar a RPC (20)

Conexion dinamica
Conexion dinamicaConexion dinamica
Conexion dinamica
 
Tema 5 capa de transporte
Tema 5 capa de transporteTema 5 capa de transporte
Tema 5 capa de transporte
 
RPC
RPCRPC
RPC
 
SEMANA 6.pptx
SEMANA 6.pptxSEMANA 6.pptx
SEMANA 6.pptx
 
Protocolos y funcionalidades de la capa de aplicacion
Protocolos y funcionalidades de la capa de aplicacionProtocolos y funcionalidades de la capa de aplicacion
Protocolos y funcionalidades de la capa de aplicacion
 
Internet orígenes,evolucion.
Internet orígenes,evolucion.Internet orígenes,evolucion.
Internet orígenes,evolucion.
 
Unidad II
Unidad IIUnidad II
Unidad II
 
Capa4 Modelo Osi
Capa4 Modelo OsiCapa4 Modelo Osi
Capa4 Modelo Osi
 
Edwin
EdwinEdwin
Edwin
 
programacion_redes_informaticas_clase_3_19042024.pptx
programacion_redes_informaticas_clase_3_19042024.pptxprogramacion_redes_informaticas_clase_3_19042024.pptx
programacion_redes_informaticas_clase_3_19042024.pptx
 
Switch & Routing 1ra parte
Switch & Routing 1ra parteSwitch & Routing 1ra parte
Switch & Routing 1ra parte
 
SWITCHING + ROUTING primera parte
SWITCHING + ROUTING primera parteSWITCHING + ROUTING primera parte
SWITCHING + ROUTING primera parte
 
Aplicacion redes expo-red_es
Aplicacion redes expo-red_esAplicacion redes expo-red_es
Aplicacion redes expo-red_es
 
Edwin
EdwinEdwin
Edwin
 
que es un socket
que es un socketque es un socket
que es un socket
 
6-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Conceptos Básicos
6-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Conceptos Básicos6-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Conceptos Básicos
6-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Conceptos Básicos
 
Comunicación entre procesos Sistemas distribuidos
Comunicación entre procesos Sistemas distribuidosComunicación entre procesos Sistemas distribuidos
Comunicación entre procesos Sistemas distribuidos
 
La Capa de Red más amistosa
La Capa de Red más amistosaLa Capa de Red más amistosa
La Capa de Red más amistosa
 
Servidor Web Apache para Linux
Servidor Web Apache para LinuxServidor Web Apache para Linux
Servidor Web Apache para Linux
 
capa de aplicacion-sisco-netwokrs.pptx
capa de aplicacion-sisco-netwokrs.pptxcapa de aplicacion-sisco-netwokrs.pptx
capa de aplicacion-sisco-netwokrs.pptx
 

Más de Rene Guaman-Quinche

Paradigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosParadigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosRene Guaman-Quinche
 
Fundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfFundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfRene Guaman-Quinche
 
Arquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfArquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfRene Guaman-Quinche
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de SoftwareRene Guaman-Quinche
 
Sistema de Archivos Distribuidos
Sistema de Archivos DistribuidosSistema de Archivos Distribuidos
Sistema de Archivos DistribuidosRene Guaman-Quinche
 
Unidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosUnidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosRene Guaman-Quinche
 
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaTiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaRene Guaman-Quinche
 
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasTiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasRene Guaman-Quinche
 
Introduccion a la computación paralela
Introduccion a la computación paralelaIntroduccion a la computación paralela
Introduccion a la computación paralelaRene Guaman-Quinche
 

Más de Rene Guaman-Quinche (20)

interfaces.pdf
interfaces.pdfinterfaces.pdf
interfaces.pdf
 
Paradigma Programación Orientada a Objetos
Paradigma Programación Orientada a ObjetosParadigma Programación Orientada a Objetos
Paradigma Programación Orientada a Objetos
 
Fundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdfFundamentos ingeniería de requisitos.pdf
Fundamentos ingeniería de requisitos.pdf
 
Elicitación de requerimientos
Elicitación de requerimientosElicitación de requerimientos
Elicitación de requerimientos
 
Arquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfArquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdf
 
Diagramas componentes
Diagramas componentesDiagramas componentes
Diagramas componentes
 
Diagramas de secuencia
Diagramas de secuenciaDiagramas de secuencia
Diagramas de secuencia
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de Software
 
Sistema de Archivos Distribuidos
Sistema de Archivos DistribuidosSistema de Archivos Distribuidos
Sistema de Archivos Distribuidos
 
Unidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetosUnidad 2 diseño orientado a objetos
Unidad 2 diseño orientado a objetos
 
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente TeorìaTiempo, causalidad y estado global Alberto Lafuente Teorìa
Tiempo, causalidad y estado global Alberto Lafuente Teorìa
 
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente TransparenciasTiempo, causalidad y estado global Alberto Lafuente Transparencias
Tiempo, causalidad y estado global Alberto Lafuente Transparencias
 
Ciclo de vida software
Ciclo de vida softwareCiclo de vida software
Ciclo de vida software
 
Requisitos no Funcionales
Requisitos no FuncionalesRequisitos no Funcionales
Requisitos no Funcionales
 
Requisitos funcionales
Requisitos funcionalesRequisitos funcionales
Requisitos funcionales
 
Caracterizacion del paralelismo
Caracterizacion del paralelismoCaracterizacion del paralelismo
Caracterizacion del paralelismo
 
Introduccion a la computación paralela
Introduccion a la computación paralelaIntroduccion a la computación paralela
Introduccion a la computación paralela
 
Diagramas de actividades
Diagramas de actividadesDiagramas de actividades
Diagramas de actividades
 
Diagramas de estado
Diagramas de estadoDiagramas de estado
Diagramas de estado
 
Diagrama de clases y objetos
Diagrama de clases y objetosDiagrama de clases y objetos
Diagrama de clases y objetos
 

RPC

  • 1. RPC - Llamadas a procedimientos remotos René Guamán-Quinche Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables Carrera de Ingeniería en Sistemas/Computación Noviembre, 2021 Loja, Ecuador
  • 2. 2 1. RPC 2. Estructura 3. Compilación Contenido
  • 3. 3 RPC Las RPCs ofrecen una interfaz sencilla para construir aplicaciones distribuidas sobre TCP/IP
  • 4. 4 RPC RPCs en la pila de protocolos • En el nivel de sesión en OSI • En el nivel de aplicación en • TCP/IP • Independientes del protocolo de transporte • TCP • UDP • Fiabilidad no garantizada • Depende del protocolo de transporte
  • 5. 5 RPC • Se ocupa: • Especificación e interpretación de mensajes • NO se ocupa: • Cómo se realiza el intercambio de mensajes entre los procesos • Restricciones de la capa de transporte utilizado • Binding entre un cliente a un servicio • La sintaxis y el formato de los mensajes se define mediante IDL (Interface Definition Language): • Lenguaje de especificación de RPC • Lenguaje de especificación de datos XDR
  • 6. 6 RPC • Se ocupa: • Especificación e interpretación de mensajes • NO se ocupa: • Cómo se realiza el intercambio de mensajes entre los procesos • Restricciones de la capa de transporte utilizado • Binding entre un cliente a un servicio • La sintaxis y el formato de los mensajes se define mediante IDL (Interface Definition Language): • Lenguaje de especificación de RPC • Lenguaje de especificación de datos XDR
  • 8. 8 Estructura de los mensajes petición-respuesta
  • 9. 9 Funcionamiento RPC • El proceso que realiza la llamada empaqueta los argumentos en un mensaje, se los envía a otro proceso y espera el resultado • El proceso que ejecuta el procedimiento extrae los argumentos del mensaje, realiza la llamada de forma local, obtiene el resultado y se lo envía de vuelta al proceso que realizó la llamada • Objetivo: acercar la semántica de las llamadas a procedimiento convencional a un entorno distribuido (transparencia)
  • 10. 10 Funcionamiento RPC • El proceso que realiza la llamada empaqueta los argumentos en un mensaje, se los envía a otro proceso y espera el resultado • El proceso que ejecuta el procedimiento extrae los argumentos del mensaje, realiza la llamada de forma local, obtiene el resultado y se lo envía de vuelta al proceso que realizó la llamada • Objetivo: acercar la semántica de las llamadas a procedimiento convencional a un entorno distribuido (transparencia)
  • 12. 12 Conceptos básicos • Una RPC tiene dos participantes: • Un cliente activo, que envía una RPC al servidor • Un servidor pasivo, que calcula un resultado y lo devuelve al cliente • Un servicio de red es una colección de uno o más programas remotos • Un programa remoto implementa uno o más procedimientos remotos • Un servidor puede soportar más de una versión de un programa remoto • Permite al servidor ser compatible con las actualizaciones de protocolos • Un procedimiento remoto, sus parámetros y sus resultados se especifican en un fichero de especificación del protocolo escrito en el lenguaje de especificación de RPC y XDR
  • 13. 13 Suplente stubs • Se generan automáticamente por el software de RPC • Stub del cliente • Stub del sevidor • Un stub es una pieza de código usada en el cliente y el servidor • Responsable de convertir los parámetros de la aplicación cliente/servidor durante una llamada a procedimiento remoto • Espacio de direcciones independiente del cliente y servidor • Representaciones de datos diferentes (big-endian, little-endian) • Los suplentes son independientes de la implementación que se haga del cliente y del servidor. • Sólo dependen de la interfaz
  • 14. 14 Suplente stubs • Funciones en el cliente: • Suplantar al procedimiento a ejecutar • Localizar al servidor • Empaquetar los parámetros y construir los mensajes • Enviar el mensaje al servidor • Esperar la recepción del mensaje y devolver los resultados • Funciones en el servidor: • Realizan tareas similares
  • 17. 17 RPC protocolo básico Proceso cliente (llamador) • Conectar al servidor • Invocar una llamada a procedimiento remote Stub o resguardo del cliente: • Localizar al servidor • Empaquetar los parámetros y construir los mensajes • Enviar los mensajes al servidor • Bloquearse hasta esperar la respuesta • Obtener la respuesta
  • 18. 18 RPC protocolo básico Proceso servidor (llamado) • Registrar las RPCs • Implementar los procedimientos Stub o resguardo del servidor: • Recibir la petición del cliente • Desempaquetar los parámetros • Invocar el procedimiento de manera local • Obtener la respuesta y enviarla al cliente
  • 19. 19 Modelos de RPC • RPCs síncronas • RPCs asíncronas
  • 20. 20 RPC – asíncrona • El cliente no espera la respuesta • No admite parámetros de salida • Ejemplo en CORBA: • Se corresponden con métodos especificados como oneway
  • 21. 21 Aspectos relaciondos RPC • Lenguaje de definición de interfaces (IDL) • Generador de stubs • Tipos de parámetros • Transferencia de parámetros • Protocolo de comunicación • Enlace entre el cliente y el servidor (binding) • Semántica de las RPC en presencia de fallos • Autenticación
  • 22. 22 Lenguaje de definición de interfaces Un Lenguaje de Definición de Interfaz (IDL) permite especificar el formato de los procedimientos remotos y otras opciones de comunicación La interfaz es compartida por • Cliente • Servidor
  • 23. 23 Lenguaje de definición de interfaces • Una interfaz especifica: • Nombre de servicio que utilizan los clientes y servidores • Nombres de procedimientos • Parámetros de los procedimientos • Entrada • Salida • Tipos de datos de los argumentos • Los compiladores pueden diseñarse para que los clientes y servidores se escriban en lenguajes diferentes • Tipos de IDL • Integrado con un lenguaje de programación (Cedar, Argus) • Lenguaje de definición de interfaces específico para describir las interfaces entre los clientes y los servidores (RPC de Sun y RPC de DCE)
  • 24. 24 Tipos de parámetros Parámetro de entrada (in) El parámetro se envía del cliente al servidor Parámetro de salida (out) El parámetro se envía del servidor al cliente Parámetro de entrada/salida (inout) Parámetro de entrada/salida (inout)
  • 25. 25 Tranferencias de parámetros • Una de las funciones de los suplentes es empaquetar los parámetros en un mensaje: aplanamiento (marshalling) • Problemas en la representación de los datos: • Servidor y cliente pueden ejecutar en máquinas con arquitecturas distintas (ordenamiento de bytes) • Problemas con los punteros • Una dirección sólo tiene sentido en un espacio de direcciones • Ejemplos de esquemas de representación de datos: • XDR (eXternal Data Representation) es un estándar que define la representación de tipos de datos (RFC 1832) • Representación común de datos de CORBA (CDR) • Serialización de objetos de Java • XML (eXtensible Markup Language ) es un metalenguaje basado en etiquetas definida por W3C
  • 26. 26 Enlace Binding • Enlace: asociación entre el cliente y el servidor • Implica localizar al servidor que ofrece un determinado servicio • El servidor debe registrar su dirección en un servicio de nombres (binder)
  • 27. 27 Enlazador dinámico • Enlazador dinámico (binder): es el servicio que mantiene una tabla de traducciones entre nombres de servicio y direcciones • Incluye funciones para: • Registrar un nombre de servicio • Eliminar un nombre de servicio • Buscar la dirección correspondiente a un nombre de servicio • Cómo localizar al enlazador dinámico: • Ejecuta en una dirección fija de un computador fijo • El sistema operativo se encarga de indicar su dirección • Difundiendo un mensaje (broadcast) cuando los procesos comienzan su ejecución.
  • 28. 28 Esquema de enlace y registro
  • 29. 29 Tipos de enlace • Enlace no persistente: el binding entre el cliente y el servidor se establece en cada RPC • Más tolerante a fallos • Permite migración de servicios • Enlace persistente: el binding se mantiene después de la • primera RPC • Útil en aplicaciones con muchas RPC repetidas • Problemas si lo servidores cambian de lugar
  • 30. 30 Tipos de enlace Fallos que pueden aparecer con las RPC • El cliente no es capaz de localizar al servidor • Pérdidas de mensajes • Se pierde el mensaje de petición del cliente al servidor • Se pierde el mensaje de respuesta del servidor al cliente • El servidor falla después de recibir una petición • El cliente falla después de enviar una petición Pérdida de mensajes del cliente • Es la más fácil de tratar • Se activa una alarma (timeout) después de enviar el mensaje • Si pasado el timeout no se recibe una respuesta se retransmite el mensaje
  • 31. 31 Programación de un paquete de RPC • El programador debe proporcionar: • La definición de la interfaz (IDL) • Nombres de los procedimientos • Parámetros que el cliente pasa al servidor • Resultados que devuelve el servidor al cliente • El código del cliente • El código del servidor • El compilador de IDL genera : • El resguardo (stub) del cliente • El resguardo (stub) del servidor
  • 33. 33 Lenguaje XDR • XDR (eXternal Data Representation) es un estándar que define la representación de tipos de datos (RFC 1832) • Utilizado inicialmente para representaciones externas de datos • Se extendió a lenguajes de definición de interfaces • Una interfaz contiene: • Un número de programa • Un número de versión del programa • Un conjunto de procedimientos remotos: • Un nombre y un número de procedimiento • Los procedimientos sólo aceptan un parámetro de entrada (se encapsulan en una estructura) • Los parámetros de salida se devuelven mediante un único resultado • El lenguaje ofrece una notación para definir: • constantes • definición de tipos • estructuras, uniones • programas
  • 34. 34 Identificación de llamadas a RPC • Un mensaje de llamada de RPC se identifica unívocamente mediante tres campos enteros sin signo: • (NUM-PROG, NUM-VERSION, NUM-PROCEDURE) • NUM-PROG es el número de programa remoto, • NUM-VERSION es el número de versión de programa, • NUM-PROCEDURE es el número de procedimiento remoto • Detalles de implementación: • NUM-PROG se definen en la RFC 1831 • La primera implementación (versión) de un protocolo deber ser la 1 • Los números de procedimientos se especifican por el programador
  • 35. 35 El proceso portmapper • El enlace en las RPC de sun se realiza mediante un proceso denominado portmapper • En cada servidor ejecuta un proceso portmapper en un puerto bien conocido (111) • El portmapper almacena por cada servicio local: • El número de programa • El número de versión • El número de puerto • Enlace dinámico: • El número de puertos disponibles es limitado y el número de programas remotos potenciales puede ser muy grande • Sólo el portmapper ejecutará en un puerto determinado (111) y los números de puertos donde escuchan los servidores se averiguan preguntando al portmapper • Soporta TCP y UDP (ver /etc/services)
  • 36. 36 El proceso portmapper • Cuando un servidor arranca registra en el portmapper la información anterior • Cuando un cliente necesita invocar un procedimiento remoto envía al portmapper del host remoto (necesita conocer la dirección IP del servidor) • El número de programa y el número de versión • El portmapper devuelve el puerto del servidor
  • 37. 37 Biblioteca de funciones de RPC • La biblioteca de funciones de RPC • Sistemas Unix • Servicios de RPC para construir aplicaciones • En el cliente • Crear un manejador de cliente • Destruir un manejador de cliente • En el servidor
  • 38. 38 Biblioteca de funciones de RPC rpc.h es una biblioteca de funciones para desarrollar aplicaciones distribuidas que usan RPC: #include <rpc/rpc.h> • Múltiples niveles de acceso: • Interfaz simplificado • Rutinas de nivel intermedio • Rutinas de alto nivel
  • 39. 39 Servicios RPC Crear un manejador para el cliente CLIENT * clnt_create (const char *host, const u_long prognum, const u_long versnum, const char *nettype) Argumentos: • host nombre del host remoto donde se localiza el programa remoto • prognum Número de programa del programa remoto • versnum Número de versión del programa remoto • nettype Protocolo de transporte: NETPATH, VISIBLE, CIRCUIT_V, DATAGRAM_V, CIRCUIT_N, DATAGRAM_N, TCP, UDP • Destruir el manejador del cliente void clnt_destroy (CLIENT *clnt) Argumentos: • clnt Manejador de RPC del cliente
  • 41. 41 Invocar un procedimiento (cliente) Un procedimiento remoto se invoca: tipo_resultado procedimiento_v ( tipo_arg1 arg1, tipo_arg2 arg2, ------ tipo_argn argn, CLIENT *clnt ) donde: • procedimiento_v Nombre del procedimiento a invocar • arg1,arg2,…,argn Argumentos del procedimiento • clnt Manejador de un cliente de RPC NOTA: v se sustituye por el número de versión que se invoca
  • 42. 42 Implementar un procedimiento (servidor) • Para cada procedimiento remoto, el servidor ofrece una implementación de procedimiento respetando su prototipo: tipo_resultado procedimiento_v_svc ( tipo_arg1 arg1, tipo_arg2 arg2, … tipo_argn argn, struct svc_req *rqstp ) Donde • procedimiento_v_svc Nombre del procedimiento a implementar • arg1,arg2,…,argn Argumentos del procedimiento • rqstp Estructura que contiene información de la petición • NOTA: v se sustituye por el número de versión que se implementa
  • 43. 43 Compilar de interfaces rpcgen rpcgen es el compilador de interfaces que genera código C para: • Stub del cliente • Stub del servidor y procedimiento principal del servidor Procedimientos para el empaquetado y desempaquetado XDR Fichero de cabecera (.h) con los tipos y declaración de prototipos de procedimientos
  • 44. 44 Sintaxis de rpcgen Compilar usando rpcgen rpcgen infile infile fichero en lenguaje de definición de interfaz de RPC (XDR en RPC de SUN) Algunas opciones: -N Permite a los procedimientos tener múltiples argumentos -a Genera todos los ficheros incluyendo código de ejemplo para cliente y servidor -M Genera stubs multi-thread para paso de argumentos
  • 46. 46 Esquema de la aplicación
  • 47. 47 Esquema de la aplicación Ejemplo: suma.x
  • 48. 48 Esquema de la aplicación Ejemplo: suma.h
  • 49. 49 Esquema de la aplicación Ejemplo: servidor.c
  • 50. 50 Esquema de la aplicación Ejemplo: cliente.c
  • 51. 51 Esquema de la aplicación Ejemplo: cliente.c
  • 52. 52 Esquema de la aplicación suma_xdr.c
  • 53. 53 Esquema de la aplicación suma_clnt.c (stub del cliente)
  • 54. 54 Esquema de la aplicación suma_svc.c (stub del servidor)
  • 55. 55 Esquema de la aplicación suma_svc.c (stub del servidor)
  • 56. 56 Esquema de la aplicación suma_svc.c (stub del servidor)
  • 57. 57 Compilación gcc –c suma_xdr.c gcc –c suma_svc.c gcc –c suma_clnt.c gcc –c cliente.c gcc –c servidor.c gcc suma_xdr.o suma_clnt.o cliente.o –o cliente gcc suma_xdr.o suma_svc.o servidor.o –o servidor rpcgen –a –N –M suma.x Opciones: -a: genera todos los ficheros incluyendo ejemplos -N: permite varios argumentos -M: genera código multithread (código que puede ser utilizado en aplicaciones con varios threads) en aplicaciones con varios threads)
  • 59. 59 Ficheros que se generan suma.h: incluye prototipos de funciones suma_client.c: ejemplo de cliente. suma_clnt.c: stub del cliente suma_server.c: plantilla con las funciones a implementar en el servidor en el servidor suma_svc.c: stub del servidor suma_xdr.c: funciones XDR Compilación
  • 60. 60 Cŕeditos • Transparencias basadas por: García-Carballeira F., Tema Java RMI OCW Sistemas Distribuidos
  • 61. Networking académico: Correo electrónico: rguaman@unl.edu.ec Twitter: @rene5254 SlideShare: https://es.slideshare.net/rene5254 61 Gracias