14) Come si implementano le RPC?
Implementazione:
si invia una richiesta alla volta (stop & wait) .Oppure si inviano una serie di richieste alla volta (burst); possono arrivare anche richieste di ripetizione selettiva (selective repeat)
L’implemnetazione poi differisce tra RPC semplici e complesse
RPC semplici:
chiamate frequenti, di breve durata, argomenti in pacchetti corti (quindi UDP)
pacchetto di invocazione con
- identificatore della chiamata
- procedura da invocare
- argomenti
pacchetto di ritorno con
- stesso identificatore della chiamata
- risultati
- eventuali time-out e ritrasmissioni
RPC complesse:
chiamate di lunga durata, o a scarsa frequenza, o per argomenti che eccedono un pacchetto (quindi TCP).
il messaggio viene diviso su più pacchetti che sono inviati separatamente e devono essere ricostruiti dalla parte del server. In caso di perdita, o si ritrasmette tutto o solo le parti mancanti.
il cliente trasmette (ed eventualmente ritrasmette) i pacchetti, poi attende il risultato. Durante l’attesa trasmette periodicamente dei probe (messaggi per assicurarsi che il servitore proceda) cui il server deve mandare un acknowledgement.
il server in genere deve mandare un ack per ogni pacchetto, oppure può mandare un negative ack se non è arrivato il pacchetto successivo entro un tempo determinato. Inoltre, può effettuare il batching delle chiamate che non richiedono risposta. Gli ack sono bufferizzati e spediti in una sola volta. In caso di orfani sul server si può procedere con: