Llamada a Procedimientos Remotos (Remote Procedure Calls-RPC) Prof. Mireya Morales Prof. Miguel Torrealba Hilo de ejecución de una llamada de función ordinaria Espacio de usuario Programa que invoca Función Invocada Ord_func() { Ord_func(); } Hilo de Ejecución Hilo de ejecución de una llamada a procedimiento remoto Nodo Remoto Nodo Local Espacio de usuario Programa cliente Espacio de usuario Funciones del servidor rem_func() { rem_func(); } Hilo de Ejecución Llamada a procedimiento Remoto y regreso Hilo bloqueado “The Network is the Computer” Sun Microsystem- 1997 Sistema de archivo de red ( Network File System - NFS) • Desarrollado en 1984 por Sun Microsystem Incorporated. • Es un protocolo del según el modelo OSI nivel de aplicación, • Fue desarrollado con el objeto de disponer de servicios de recursos compartidos para estaciones de trabajo Unix en LAN. Llamada a Procedimientos Remotos (RPC) “Es un paradigma de comunicación de alto nivel que permite a las aplicaciones de red, ser desarrolladas de manera que el diseño de las llamadas a procedimientos, detalles oculten los de los mecanismos subyacentes de la red.” Sun Microsystems. Network Programming Guide. Marzo 1990. Llamada a Procedimientos Remotos • Según wikipedia: “Es un protocolo que permite a un programa de computador ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambos”. RPC Remoto Proceso Cliente Proceso Servidor Llamada Lógica Programa cliente Llamada RPC Regreso RPC Funciones de servidor Regreso Lógico Talón de Cliente Solicitud organizada Regreso organizado Servicios de la red Regreso Llamada ordinario ordinaria Talón del Servidor Solicitud organizada Comunicaciones de red Núcleo del cliente Regreso organizado Servicios de la red Núcleo del servidor Representación externa de datos (XDR). Estándar útil para transferir datos entre diferentes Arquitecturas de Computadores. RFC 4506 Arquitectura RPC – Microsoft Corporation Aplicación Aplicación Talón de Cliente Talón del Servidor Bibliotecas RPC en tiempo de ejecución Bibliotecas RPC en tiempo de ejecución Transporte Implementado con DLL Transporte Archivos involucrados en la generación de un programa RPC CC Procedimientos del Servidor Talón de Servidor Archivo de especificación RPC Archivo.x Servidor.exe rpcgen Archivo.h Identificación del programa, de la versión y de las funciones Bibliotecas RPC en tiempo de ejecución Talón de Cliente Programa Cliente CC Cliente.exe Pasos involucrados en las RPC Sistema Remoto Demonio Portmapper (rcpbind) Informar al portmapper Servidor ¿1. Quiénes somos? 2 3 Cliente Sistema Local Paso 1 • Al iniciar el programa servidor en el sistema remoto, creará un sockets UDP/TCP y lo asociará a algún puerto local. • Luego se llamará a una función de la biblioteca RPC (svc-register), para registrar el número del programa y la versión. Esta función contactará al proceso port mapper para registrarse así mismo. • El port mapper tendrá información sobre el número del programa, la versión y el puerto. Importante TODAS LAS ACCIONES EN ESTE PASO SON REALIZADAS POR EL PROGRAMA TALÓN (STUB) DEL SERVIDOR, el cual fue generado por el compilador rpcgen. Paso 2 • Se ejecuta el programa cliente y este llama a la función clnt_create. Esta llamada especifica el nombre del sistema remoto, el número del programa, la versión y el protocolo. • Esta función contacta al port mapper en el sistema remoto para encontrar el puerto UDP/TCP del servidor. Los números de los programas 0x00000000 – 0x1f f f f f f f definido por Sun 0x20000000 – 0x3f f f f f f f definido por usuario 0x40000000 – 0x5f f f f f f f transitorio (aplicaciones que generan números dinámicamente) 0x60000000 – 0xf f f f f f f f reservado Paso 3 • El programa cliente llama a la función que se desea ejecutar en forma remota. Esta función está definida en el talón de cliente, luego ella envía un datagrama al servidor y queda a la espera de una respuesta. • El datagrama es recibido por el talón de servidor quien determina el procedimiento para llamar luego a la función.