INDIETRO SU AVANTI

Concetto di procedure remote

Il protocollo Remote Procedure Call (RPC) permette ad un programma client di eseguire procedure su un computer Server remoto collegato in rete TCP/IP.

RPC e' il fondamento di molti applicativi distribuiti complessi come NFS (Network File System), ed e' di base a molti tentativi sperimentali di generazione di sistemi operativi distribuiti.

Vi e' una fondamentale differenza tra procedure locali e remote.

In una procedura locale, il processo chiamante esegue la procedura nel suo proprio spazio di indirizzamento.

In una procedura remota il client ed il server sono due processi separati e non solitamente sullo stesso computer. I due processi comunicano tramite' procedure stub una per il client e una per il server. Questi stub sono segmenti di programma contenenti funzioni che mappano chiamate a procedure locali in una serie di chiamate a funzioni RPC di rete. La libreria RPC gestisce la comunicazione tra i due processi.

RPC usa un modello di comunicazione a richiesta e responso. La procedura client invia richieste alla procedura server che ritorna responsi.

Uno stub e' una interfaccia di comunicazione che implementa il protocollo RPC e specifica come i messaggi vengono costruiti ed interscambiati. Lo 'stub' viene tipicamente generato da un compilatore di protocollo e quindi linkato insieme ai programmi client e server.

I processi client e server devono essere in grado di comunicare usando una rappresentazione dei dati indipendenti dall'architettura del computer su cui si trovano. Viene usato un unico formato canonico per tutti i tipi di dati, chiamato External Data Representation (XDR). E' responsabilita' degli 'stub' client e server tradurre i propri dati da e in questo formato. Spesso i compilatori di protocollo possono anche servire a determinare quali strutture dati debbano venire tradotte.

Il sistema di RPC e' inserito all'interno del modello OSI di riferimento. L'applicativo utente si trova al livello piu' alto ed usa in modo trasparente la libreria XDR per comunicare con la libreria RPC. Questa puo' interfacciare sia il protocollo TCP che UDP.

Esistono versioni di RPC che sono implementate da librerie Transport Independent (TIRPC) in modo da tentare di isolare l'applicativo dal trasporto usato per massimizzarne la portabilita'.

Architettura di un Sistema RPC

In sistemi UNIX, basati sui socket, i servizi di default di rete sono descritti in un file di configurazione chiamato /etc/services.

Un servizio, identificato dal porto a cui ascolta, e' un demone in attesa di una richiesta di connessione. Un porto e' un canale di comunicazione logico. Un servizio di rete detto il portmapper ha la responsabilita' di mappare i servizi ai porti.

Il portmapper su tutti i sistemi e' sempre egli stesso identificato dal porto ben conosciuto numero 111.

I passi necessari perche' un client RPC contatti il server sono:

  1. Quando viene lanciato un server RPC, questi stabilisce un indirizzo al quale ascolta per richieste di servizi. Il server registra questo indirizzo con il programma portmapper, e registra inoltre gli identificativi dei programmi client e le loro versioni a cui il server e' disposto a offrire servizio. Gli applicativi client e server in questo modo possono entrambi avere indirizzi o numeri di porto arbitrari.
  2. Il client che desidera contattare un determinato server, deve prima contattare il 'portmapper' sul computer di destinazione per apprendere quale sia l'indirizzo di contatto del server.

    Il 'portmapper' funge in questo modo da mediatore di servizio, tra il server e i client; inoltre fa' si che non vi sia piu' bisogno di aggiornare il file /etc/services su tutte le macchine che partecipano a nuovi servizi offerti.

  3. Il client puo' ora aprire un normale canale di collegamento col server, sia esso a connessione o senza connessione.

Il client invia una richiesta sulla rete. Il demone di servizio e' in ascolto costante in attesa di richieste. Quando viene ricevuta una richiesta questa invoca il servizio opportuno che esegue una procedura appropriata. Al ritorno della procedura il responso di questa viene ritornato al client tramite la rete.