advertisement

Computer Networks. RPC

60 %
40 %
advertisement
Information about Computer Networks. RPC

Published on August 28, 2007

Author: busaco

Source: slideshare.net

Description

Computer Networks course (in Romanian).
advertisement

Retele de calculatoare Retele de calculatoare Paradigma RPC Sabin-Corneliu Buraga busaco@infoiasi.ro http://www.infoiasi.ro/~busaco Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [1]

Retele de calculatoare Cuprins • Remote Procedure Call (RPC) – Preliminarii – Caracterizare – External Data Representation (XDR) – Functionare – Implementari – Utilizari Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [2]

Retele de calculatoare Preliminarii • Proiectarea aplicatiilor distribuite –Orientata pe protocol – socket-uri • Se dezvolta protocolul, apoi aplicatiile care il implementeaza efectiv –Orientata pe functionalitate – RPC • Se creeaza aplicatiile, dupa care se divid in componente si se adauga protocolul de comunicatie intre componente Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [3]

Retele de calculatoare Caracterizare • Idee: Apelul unei proceduri care va fi executata pe alta masina • Instrument de programare mai simplu decit interfata socket BSD • O aplicatie RPC va consta dintr-un client si un server, serverul fiind localizat pe masina ce executa procedura • Aplicatia client comunica prin retea cu procedura de pe calculatorul la distanta transmitind argumentele si receptionind rezultatele • Clientul si serverul ≡ procese pe masini diferite • RPC realizeaza comunicarea dintre ele prin socket-uri TCP/IP (uzual, UDP), via doua interfete stub (ciot) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [4]

Retele de calculatoare Caracterizare • Interfetele ciot implementeaza protocolul RPC • Probleme: – Identificarea si accesarea procedurii la distanta – Transferul parametrilor – Transmiterea valorii de retur Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [5]

Retele de calculatoare Caracterizare • Procedurile ciot se pot genera automat, dupa care se “leaga” de programele client si server • Ciotul serverului asculta la un port si realizeaza invocarea rutinelor printr-o interfata de apel de proceduri locale • Clientul si serverul vor comunica prin mesaje, printr-o reprezentare independenta de retea si de sistemul de operare: External Data Representation (XDR) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [6]

Retele de calculatoare XDR • RFC 1014 • Tipuri uzuale – Preluate din C: int, unsigned int, float, double, void,… – Suplimentare: string, fixed array, counted array, symbolic constant,… • Functii de conversie (rpc/xdr.h) – xdrmem_create() – asociază unei zone de memorie un flux de date RPC – xdr_numetip() – realizeaza conversia datelor • Codificarea argumentelor ≡ marshalling (serializare), decodificarea ≡ un-marshalling (deserializare) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [7]

Retele de calculatoare XDR • XDR poate fi vazut ca nivel suplimentar intre nivelul transport si nivelul aplicatie (similar nivelului prezentare de la modelul ISO/OSI) • Converteste simetric datele client si server Procesul A Procesul B Procesul A Procesul B XDR Encode/Decode XDR Encode/Decode XDR Encode/Decode XDR Encode/Decode Transport Transport Transport Transport Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [8]

Retele de calculatoare XDR • Exemplu: #include <rpc/xdr.h> #define BUFSIZE 400 /* lungimea zonei de memorie */ /* conversia unui intreg in format XDR */ ... XDR *xdrm; /* zona de memorie XDR */ char buf[BUFSIZE]; int intreg; ... xdrmem_create (xdrm, buf, BUFSIZE, XDR_ENCODE); ... intreg = 33; Inlocuit la celalalt capat al xdr_int (xdrm, &intreg); ... comunicatiei cu XDR_DECODE Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [9]

Retele de calculatoare XDR • Activitatea de codificare/decodificare Expe- Desti- Desti- Expe- XDR ENCODE DECODE XDR ENCODE DECODE ditor natar natar ditor • In prezent, poate fi inlocuit de reprezentari XML-RPC sau SOAP (in contextul serviciilor Web) – vezi cursul “Tehnologii Web” Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [10]

Retele de calculatoare Functionare • Adresele clientului, serverului, numele serviciilor sint pastrate la nivel simbolic • Un serviciu de retea este identificat de portul la care exista un daemon asteptind cereri • Pentru RPC, un port ≡ canal logic de comunicare • Portmapper ≡ serviciu de reţea responsabil cu asocierea de servicii la diferite porturi ⇒ numerele de port pentru un anumit serviciu nu mai sunt fixe • Portmapper-ul este disponibil la portul 111 Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [11]

Retele de calculatoare Functionare Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [12]

Retele de calculatoare Functionare 1. Se determina adresa la care serverul va oferi serviciul • La initializare, serverul stabileste si inregistreaza via portmapper portul la care va oferi serviciul (portul a) 2. Clientul consulta portmapper-ul de pe masina serverului pentru a identifica portul la care trebuie sa trimita cererea RPC 3. Clientul si serverul pot comunica pentru a realiza executia procedurii la distanta • Cererile si raspunsurile se (de)codifica prin XDR Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [13]

Retele de calculatoare Functionare Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [14]

Retele de calculatoare Functionare • Atunci cind un server furnizeaza mai multe servicii, este de obicei folosita o rutina dispatcher • Dispatcher-ul identifica cererile specifice si apeleaza procedura corespunzatoare, dupa care rezultatul este trimis inapoi clientului pentru a-si continua executia Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [15]

Retele de calculatoare Functionare • Transferurile de date prin RPC pot fi: – Sincrone – Asincrone Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [16]

Retele de calculatoare Implementari • Open Network Computing RPC (ONC RPC) – Sun Microsystems – Cea mai raspindita implementare in mediile Unix – RFC 1057 – Interfata RPC este structurata pe 3 niveluri: • Superior: independent de sistem, hardware sau retea • Intermediar: face apel la functiile definite de biblioteca RPC: registerrpc(), callrpc(), svc_run() • Inferior: da posibilitatea de a controla intim mecanismele RPC (alegerea modului de transport al datelor, sincronizarea apelurilor etc.) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [17]

Retele de calculatoare Implementari|ONC RPC • Procedurile la distanta se vor include intr-un program la distanta – unitate software care se va executa pe o masina la distanta • Fiecare program la distanta corespunde unui server: proceduri la distanta + date globale • Fiecare program la distanta se identifica printr-un identificator unic stocat pe 32 biti • Fiecare procedura va fi identificata prin index (1..n) • Identificatori standard Sun RPC: – 00 00 00 00 – 1F FF FF FF aplicatiile RPC ale sistemului – 20 00 00 00 – 3F FF FF FF programele utilizatorilor – 40 00 00 00 – 5F FF FF FF identificatori temporari – 60 00 00 00 – FF FF FF FF valori rezervate Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [18]

Retele de calculatoare Implementari|ONC RPC • Exemple: – 10000 meta-serverul portmapper – 10001 rstatd – informatii despre sistemul aflat la distanta; procedurile rstat() sau perfmeter() – 10002 rusersd – informatii despre utilizatorii conectati pe masina la distanta – 10003 serverul nfs – acces la sistemul de fisiere in retea NFS (Network File System) – 10004 serviciile NIS (Network Information Service), denumite anterior Yellow Pages Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [19]

Retele de calculatoare Implementari|ONC RPC • Fiecare program la distanta are asociat un numar de versiune – Pentru a modifica detalii de implementare – Util la extinderea capabilitatilor aplicatiei RPC – Initial versiunea = 1 – Urmatoarele versiuni se identifica in mod unic prin alte numere de versiune • O functionalitate ≡ <id_prog, vers, index_proc> Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [20]

Retele de calculatoare Implementari|ONC RPC • Programare – Biblioteca RPC • Rutinele XDR • Biblioteca RPC run-time –Apelul unui serviciu RPC –Inregistrarea la un portmapper –Trimiterea cererilor (via dispatcher) procedurii dorite – Generatorul automat de aplicatii RPC rpcgen Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [21]

Retele de calculatoare Implementari|ONC RPC • Programarea la nivel inalt main (int argc, char *argv[]) { int numar_utiliz; if (argc != 2) { /* eroare */ } if ((numar_utiliz = rusers (argv[1])) < 0) { /* eroare RPC */ } printf (“%d utilizatori pe masina %sn”, numar_utiliz, argv[1]); exit (0); } • Compilare: gcc prog.c –lrpcsvc –oprog • Executie: ./prog fenrir.infoiasi.ro Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [22]

Retele de calculatoare Implementari|ONC RPC • Programarea la nivel intermediar int callrpc(char *host, u_long prognum, Identificarea Apelata de u_long versnum, procedurii la clientul RPC distanta u_long procnum, xdrproc_t inproc, Argum. de intrare void *in, (codificate xdrproc_t outproc, XDR) void *out); Rezultatul Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [23]

Retele de calculatoare Implementari|ONC RPC • Programarea la nivel intermediar int registerrpc( u_long prognum, Identificarea Apelata de procedurii la u_long versnum, serverul distanta u_long procnum, RPC void *(*procname)(), xdrproc_t inproc, xdrproc_t outproc); Utilizate la codificarea/decodificarea XDR Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [24]

Retele de calculatoare Implementari|ONC RPC • Programarea la nivel intermediar int svc_run(); Apelata de serverul RPC, reprezinta dispatcher-ul • Functiile de nivel intermediar utilizeaza doar UDP si nu ofera suport pentru autentificare Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [25]

Retele de calculatoare Implementari|ONC RPC • Programarea la nivel inferior Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [26]

Retele de calculatoare Implementari|ONC RPC • Generatorul automat de aplicatii RPC rpcgen – Produce rutinele ciot pentru client si server – Genereaza automat functiile de conversie XDR – Genereaza rutina dispatcher – Se utilizeaza biblioteca rpclib Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [27]

Retele de calculatoare Implementari|ONC RPC • Realizarea de aplicatii RPC cu rpcgen – Fisier-specificatie RPC .x • Declaratii de constante utilizate de client si server • Declaratii de tipuri de date globale • Declaratii de programe la distanta, proceduri, tipuri parametri, tipul rezultatului, identificatorul unic de program – Programul server.c care contine procedurile – Programul client.c care invoca procedurile • Pentru a lista programele RPC inregistrate: rpcinfo Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [28]

Retele de calculatoare Implementari|ONC RPC struct request /* cererea adresata serverului */ { char tren_d[100]; /* descrierea trenului */ char nr_tren[10]; /* numarul trenului */ int optiuni; /* PLECARI sau SOSIRI /* }; struct answer /* raspuns primit de client */ { char raspuns[4000]; }; program TRENURI { version VERSIUNE { /* proc. apelata la distanta */ answer TREN (request) = 1; } = 1; /* versiunea 1 (prima) */ } = 0x200000f1; /* identif. unic al prog. */ Exemplu de specificatie .x Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [29]

Retele de calculatoare Implementari|altele • Distributed Computing Environment DCE RPC – Alternativa la Sun ONC RPC – Utilizat si de serverele Windows • Object RPC (ORPC) – Mesajele de cerere/raspuns la distanta se incapsuleaza in obiecte – Descendenti directi: (D)COM (Distributed Component Object Model) & CORBA (Common Object Request Broker Architecture) – Folosit si de GNOME (via ORBit) – In Java: RMI (Remote Method Invocation) – La .NET: .NET Remoting • SOAP (Simple Object Access Protocol) – XML ca XDR, HTTP ca protocol de transfer – Baza pentru implementarea serviciilor Web Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [30]

Retele de calculatoare Utilizari • Accesul la sisteme de fisiere la distanta NFS (Network File System) – Sistem distribuit de fisiere (distributed file system) – Utilizeaza filosofia sistemului de fisiere Unix – Ierarhia de directoare NFS foloseste terminologia Unix (arbore, director, cale, fisier etc.) – Operatii asupra unui fisier la distanta: operatii I/O, creare/redenumire/stergere, stat, listarea intrarilor – Server – nfsd si client – nfs comunicind prin RPC – Sistemul de fisiere la distanta va fi disponibil prin comanda mount – RFC 1094 Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [31]

Retele de calculatoare • NFS Utilizari – Probleme: • Numirea (naming) • Consistenta • Replicarea (replication) Arhitectura NFS Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [32]

Retele de calculatoare Utilizari • NFS – Procesul de montare (protocolul mount) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [33]

Retele de calculatoare Rezumat • Remote Procedure Call (RPC) – Preliminarii – Caracterizare – External Data Representation (XDR) – Functionare – Implementari – Utilizari Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [34]

Retele de calculatoare Intrebari? Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [35]

Add a comment

Related pages

What is an RPC Call in Computer Networking?

RPC call is a network programming model for point-to-point communication within or between software applications. In RPC, the sender makes a ...
Read more

Computer Networks Questions & Answers – RPC

This section of our 1000+ Computer Networks MCQs focuses on RPC Protocol. 1. An RPC (remote procedure call) is initiated by the a) server b) client
Read more

Remote procedure call - Wikipedia, the free encyclopedia

In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure to execute in another address space (commonly on ...
Read more

Windows Server Troubleshooting: "The RPC server is ...

Windows Server Troubleshooting: "The RPC server ... software to communicate on a network. The RPC protocol is ... computer hosting the RPC Server will ...
Read more

What is Remote Procedure Call (RPC)? - Definition from ...

Remote Procedure Call (RPC) is a protocol that one program can use to request a service from a program located in another computer in a network without ...
Read more

CS425: Computer Networks : Lecture 26 - CSE - IIT Kanpur

Remote Procedure Call (RPC) RPC comes under the Application-Oriented Design, where the client-server communication is in the form of Procedure Calls.
Read more

rpc - Computer Networks

Computer Networks. Search this site. Computer Networks - UTEP CS4316. 1-foundations. Homework Assignments. ... rpc. sockets. videos. whiteboards from class ...
Read more

Remote Procedure Call – Wikipedia

Remote Procedure Call (RPC; engl. „Aufruf einer fernen Prozedur“) ist eine Technik zur Realisierung von Interprozesskommunikation. Sie ermöglicht den ...
Read more

How RPC Works: Remote Procedure Call (RPC)

RPC-Supported Network Protocols ... The server RPC runtime library functions transmit the data to the client computer using either LRPC or the network.
Read more