Arbeitsgruppe Verteilte Systeme
Remote Procedure-Call
Grundvorstellungen

(aus Digital-Unix-Dokumentation)
RPC-Semantik
Ein Aufruf wird ausgeführt ...
- exactly once (genau einmal)
- das ist die ideale Vorstellung, die beim lokalen Prozeduraufruf immer erreicht wird. RPC-Implementierung nicht möglich.
- last one (die letzte), Ergebnis des letzten Aufrufs
- ideale Semantik im Fehlerfall
Problem: verwaiste Prozeduraufrufe können noch Effekte ausführen
- at mostly once (höchstens einmal)
- Beim Aufruf wird eine ID mitgegeben, so daß der Server doppel Aufrufe
verhindern kann.
- at least once (mindestens einmal)
- auch bei unzuverlässiger Verbindung möglich: Solange wiederholen, bis erfolgreiche Rückmeldung. Allerdings kann der Aufruf auch mehrfach anfgerufen worden sein.
Idempotente Operationen erforderlich: Mehrfache Aufrufe müssen den gleichen Effekt haben:
Beispiel: pread(2) und pwrite(2) (lesen bzw. schreiben bei festem offset.
Gegenbeispiel: add(betrag)
- last of many (letzte von vielen)
- Funktioniert nicht transitiv über mehrere Maschinen hinweg
Problem: verwaiste Prozeduraufrufe (orphan termination)
Szenario:
A B C
|-----------
|
--------------
|
CRASH |
oder:
Netzpartitionierung: Netzwerkverbindung fällt aus
Lösung:
- Timeout
- Zeitschranken für Ausführung
- Epochen
- Jede Inkarnation bekommt eine Nummer.
Bei neuer Epoche werden die Aufrufe aus einer anderen Epoche terminiert
RFCs
- RFC707 ein früher
zum Thema RPC
- RFC1057 RPCv2
- RFC1831 RPC: Remote Procedure Call Protocol Specification Version 2
- RFC1832 XDR: External Data Representation Standard
- RFC1833 Binding Protocols for ONC RPC Version 2
Manual
- Remote Procedure Call Programming Guide von FreeBSD
- Linux RPC Programmierung HOWTO
Links
Bemerkungen
- rpcinfo -b dienst version
sucht einen Dienst per broadcast (->Fehlertoleranz )
Heute sollte man CORBA nehmen...
Informatik- und Netzwerkverein Ravensburg e.V