Transcript

Remote Procedure Call

RPC Model

Server processClient Process

Request Message

Reply Message

CallProcedure

Receive Request Start Execution

ResumeExecution

Send reply wait for next request

Transparency of RPC

● Syntactic Transparency

(Same syntax as Local Procedure Call)

● Semantic Transparency

(Same semantics as Local Procedure Call)

Semantic Transparency

● Calling process is suspended until procedure returns

● Caller can pass arguments to remote procedure

● Called procedure can return results

Remote / Local Procedures

● Disjoint address space

● More prone to Failures (Exceptions)

● Time factor (Long Delays)

Elements of RPC

● Client

● Client Stub

● RPC Runtime

● Server

● Server Stub

RPC

Client Server

Client Stub

RPC Runtime

Server Stub

RPC Runtime

Client Machine Server Machine

Call Packet

Request Packet

Stub Generation

● Automatic

● Manually

Components of Call Messages● Identification info of remote procedure● Arguments ● Message Identification Field

● For identifying lost messages● For Matching reply to call

● Message Type Field● For identifying call messages from reply messages

( 0 - Call 1 - Reply )

● Client Identification Field● For Server to identify client● For Server to authenticate client process

RPC SERVER

● Message not intelligible ● Not authorized client● Particular program,version, procedure no. not

available● Cannot decode arguments● Exception during execution● Successfully executed

Reply Format

● Successful● Message ID (Same as call message ID)● Message Type● Reply Status (0 - Successful)● Result

● Unsuccessful● Message ID● Message Type● Reply Status (Non zero - Unsuccessful)● Reason for failure

Steps involved during Marshalling

● Taking arguments or result that forms message data

● Encoding message data on senders machine– Converting into suitable stream for transmission– Placing in message buffer

● Decoding message data on receiver's comp.– Reconstruction of program objects from stream

Server Management

● Server Implementation

● Server Creation

Server Implementation

● Stateful Servers– Maintains Client state information from one call to

next● Stateless Servers

– Does not maintain any client state information– Client should supply all necessary parameters for

successful execution of procedure

Server Creation Semantics

● Instance per call Servers– Server created only when call message arrives– Server exist only for the duration of one call– Server deleted after call has been executed

● Instance per Session Servers– Server exists for the entire session for which client

and server interact– Accomplished through Server Manager and Binding

Agent

Server Creation Semantics Contd.

● Persistent Servers – Remains in existence indefinitely– Shared by many clients– Created and installed before clients use them– Accomplished through Binding agent– Interleaved for concurrent requests

Parameter Passing

● Call by Value● Parameters copied to message

● Call by Reference– Call by move

– At the time of call parameter object is moved to destination node– After the call the argument object does not return to the caller's

node

– Call by visit– After the call the argument object returns to the caller's node

Failure of RPC

● Call message gets lost● Response message gets lost● Callee node crashes● Caller node crashes

Call Semantics

● How often remote procedure may be executed under fault conditions

● Possibly or May-Be Call Semantics● Last-One Call Semantics● Last-Of Many Call Semantics● At-Least-Once Call Semantics● Exactly -Once Call Semantics

Call Semantics contd.

● Possibly or May-Be Call Semantics– Caller times out and continues execution– No guarantee of delivery of call or execution of

procedure● Last-One Call Semantics

– Retransmissions based on timeouts until response is delivered

– Side effects are possible – Orphan call may violate last-one semantics

Call Semantics contd.

● Last-of Many Call Semantics

– Neglect orphan calls by using call identifiers

– Call id identify each call

– Accepts response for matched call id else ignore

● At-Least-Once Call Semantics

– Timeout retransmissions

– Ignore Orphan calls

Call Semantics contd.

● Exactly-Once Call Semantics– Most desirable– Strongest Call Semantics– Based on

● Timeouts● Retransmissions● Call Id's (Same id for repeated calls)● Reply Cache associated with callee

Communication Protocol

● Request Protocol (R protocol)– No result returned – No confirmation of procedure execution– Asynchronous RPC– 1 packet per call

● Request/Reply Protocol– Servers reply is regarded as ack. for client– Subsequent call from client acts as ack. for server's

reply of previous call– 2 Packets per call

Communication Protocol

● Request/Reply/Acknowledge-Reply Protocol(RRA)– Clients ack. Reciept of reply– Server deletes from reply cache after receiving ack

from client.– 3 packets per call– What happens if ack. From client is lost

RRA Protocol

● If Ack. is lost– Unique Message ID in order– Client acknowledges only if it has recvd. Replies to

all previous requests– Ack is interpreted as ack. For all reply messages

corresponding to req messages with lower message id's

– Loss of ack. is harmless

Complicated RPC

● Long duration calls/gaps between calls– Periodic probing of server by client– Periodic generation of ack by server (if execution not

completed within expected time)● Arguments / Results too large to fit in single

datagram packet– Use several physical RPC for one logical RPC– Multigram messages with single ack.

Client Server Binding

● Process by which client becomes associated with server so that call can take place- BINDING

● Binding Issues– Server Naming– Server Locating – Binding Time

Server Naming

● Use of Interface name

● Interface Name

Type (Version no.)

Instance ( server providing services within the interface)

Server Locating

● Broadcasting– First response is used

● Binding Agent– Named server used to bind client to server by providing

the client with location information of server– Maintains binding table to map server's interface name

to server locations– Servers register with the binding agent

● Identification info , handle used to locate it

Binding Agent

Client Process Server Process

Server RegistersClient Req for server location

Server's location info

Client calls server

Binding Agent

Binding Time

● Binding at compile time– Client and server models are programmed and linked

together● Binding at Link time

– Through binding agent– Server's handle is cached by client to avoid

subsequent calls to binding agent● Binding at Call time

– Indirect call method

Binding at Call time(Indirect Call)

Client Process Server Process

Client passes server'sinterface name, arg

result,handle

Subsequent calls

Binding Agent

RPC call

Result

Binding at Call timeIndirect Call

Assignments

● Examples of – R Protocol – RR Protocol– RRA Protocol

● Lightweight RPC(LRPC)

top related