Computer Networks. RPC

2,007 views

Published on

Computer Networks course (in Romanian).

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,007
On SlideShare
0
From Embeds
0
Number of Embeds
36
Actions
Shares
0
Downloads
82
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Computer Networks. RPC

  1. 1. 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]
  2. 2. 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]
  3. 3. 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]
  4. 4. 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]
  5. 5. 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]
  6. 6. 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]
  7. 7. 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]
  8. 8. 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]
  9. 9. 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]
  10. 10. 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]
  11. 11. 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]
  12. 12. Retele de calculatoare Functionare Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [12]
  13. 13. 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]
  14. 14. Retele de calculatoare Functionare Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [14]
  15. 15. 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]
  16. 16. Retele de calculatoare Functionare • Transferurile de date prin RPC pot fi: – Sincrone – Asincrone Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [16]
  17. 17. 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]
  18. 18. 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]
  19. 19. 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]
  20. 20. 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]
  21. 21. 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]
  22. 22. 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]
  23. 23. 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]
  24. 24. 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]
  25. 25. 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]
  26. 26. Retele de calculatoare Implementari|ONC RPC • Programarea la nivel inferior Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [26]
  27. 27. 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]
  28. 28. 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]
  29. 29. 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]
  30. 30. 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]
  31. 31. 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]
  32. 32. Retele de calculatoare • NFS Utilizari – Probleme: • Numirea (naming) • Consistenta • Replicarea (replication) Arhitectura NFS Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [32]
  33. 33. Retele de calculatoare Utilizari • NFS – Procesul de montare (protocolul mount) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [33]
  34. 34. 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]
  35. 35. Retele de calculatoare Intrebari? Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [35]

×