35
By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Embed Size (px)

Citation preview

Page 1: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

By Andrew D. Birrell and Bruce Jay Nelson

Presented By: Abdussalam AlawiniReviewed By Prof. Jonathon Walpole

Page 2: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Contents1. Introduction

Where we are? And where we’re heading? What is “Remote” Procedure Call Design Decisions Goals of RPC

2. Implementing RPC RPC Structure Binding Process RPC NT Protocol

3. Data Integrity and security Exception Handling Use of Processes Security

4. Optimizations and Evaluation Optimizations Performance evaluation

Page 3: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole
Page 4: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Where we are? And where we’re heading?We saw managing OS control flow over one

shared-memory using:Procedural (thread-based) ModelMessage passing (event-based) Model

Now we will see a procedural (thread-based) programming abstraction based on message passing (event-based) substrate. Threads passed from one machine to the other

and back again.Programmer unaware of the underlying

message-based substrate.

Page 5: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

What is A “Remote” Procedure Call?

CommunicationNetwork

Server

Client

Z=F(x,y) F(x,y)

result

Compute

F(x,y)

Page 6: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Design Decisions (Any Alternatives) Message passing

Same reliable and efficient message (and reply) problems

Procedure calls are the Major transfer mechanism in Mesa. (Remember Duality)

Remote forkNo major changes in design problems

Shared Address spaceIntegration of remote address spaces Efficiency issues

Page 7: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Goals of implementing RPCSimplicity

Make RPC as similar to procedure calls as possible

Make distrusted computation easierEfficiency

Make sematic of RPC package as powerful as possible without losing efficiency or simplicity

SecuritySecure end-to-end communications with RPC

Page 8: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole
Page 9: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

RPC Facility Structure Caller Machine

User (user application code module)User-StubCaller instance of RPCRuntime (RPC

communications package)Callee Machine

Server (server code module)Server-stubCallee instance of RPCRuntime

Page 10: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

User Application

User-stub

CallerRPCRuntim

e

Network

Libraries(Server code)

Server-stub

CalleeRPCRuntim

e

NormalLocal

Proc Call

ImportInterface

ExportInterface

Pack target spec + proc

arguments Call

Packet

transmit packet

“Reliably”

Pass them to server-

stub

Unpack & make local call

Do work and

return results

Results Packet

Caller Machine Callee Machine

Page 11: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

User Application

User-stub

CallerRPCRuntim

e

Network

Libraries(Server code)

Server-stub

CalleeRPCRuntim

e

Interface Interface

Caller Machine Callee Machine

Programmer

Lupine(Auto

Generation)

Part of Cedar

Mesa Interface Modules

Page 12: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Binding Process

How does a client of the binding mechanism specify what he want to be bound to?Naming

How does the caller specify the callee machine address and the specific procedure he wants to invoke?Locating

Page 13: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Naming (Interface Name)

Type: Which interface the caller expect the callee to implement. Service Name (e.g Mail-server)

Instance: Which particular implementer of an abstract interface is desired.Machine Address (e.g Specific mail-server

address)

Importer of an interface

Exporter of an interface

Binding

Page 14: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Locating Design ideas1- Include network address in user application

Too early binding

2- Broadcasting Protocol Too much interference with innocent

bystanders Not convenient for binding machines not in the

same local network.

Page 15: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Grapevine DatabaseLocating an appropriate exporter

Type (Group)

Member-list

FileAccess {Ebbets, Luther, Facc}

Instance(Individual)

Connect-site

Ebbets 3#22#

Luther 3#276#

Facc 3#43#

Export Interface

Type FileAccessInstance Ebbets

Import Interface

Type FileAccessInstance Ebbets

Grapevine

Database

Server 1

(Ebbets)

3#22#

Server 2

(Luther)

3#276#

Server3

(Facc) 3#43#

Page 16: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Steps of Exporting an Interface(Making it available to a client)

Callee Machine

ServerRPCRuntime Server-stub

Grapevine Database

Export [FA,

Ebbets]

Export [FA,

Ebbets,…]

Record in table

SetConnect

Do update

AddMember

Return

Do update

Call server-

sub

Call ExportInterface(Interface Name,

Dispatcher)

ExportInterface make sure that

type and instance is correct

RPCRuntimeRecord exported

interface in a table

Table [tableIndex,InterfaceName,Di

spatcherProd, UniqueID]

Set the address of the current

machine in the connect-site

Adds the instance to the member-

list of the type of the instance

Interface exported

(Can be accessed remotely)

Page 17: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Steps of Binding An Importer to An Exporter Interface(Getting ready for remote calls)

Page 18: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Caller Machine

Callee Machine

User User-stub

RPCRuntime RPCRuntime

Server-stub

Server

Import [FA,

Ebbets]

Import [FA,

Ebbets]

GetConnect

Bind[FA,

Ebbets]

Grapevine

DatabaseLookup

Recordresult

ReturnTablelookup

X= openFile(

y)

openFile -> 2

transmitCheck UID

In table

2 -> openFile

X= openFile(

y)

Call user-stub“I need to

import Interface[FA,

Ebbets”

Call ImportInterface

“Here’s the type and

instance we need”

OK, I will ask grapevine DB

and get the NT address of exporting Interface

Here’s the NT address

“connect-site”

Alright, I’ll call the exporter

RPCRuntime to get the binding

infoNormal call to

procedure openFile(y)

OK, now I’ve got UID,

TableIndex, and exporter NT Address. I

will record them

Exporter Interface is

ready for your next remote

procedure calls

Now let see how this will

work

1- Retrieve interface binding

information2- Prepare call

packet

Alright, I will transmit it to the machine with address

“connect-site”

1-Lookup current exports

2- verify UID3- send call packet to

dispatcher

After unpacking,Dispatcher

uses the info to map to the

right procedure

Call the local procedure

using provided arguments

Lookup the table of current

exportsSend the

corresponding binding info

Page 19: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Binding Mechanism Advantages Importing an interface has no effect on the

data structure of the exporting machineThe use of UID means that bindings are

implicitly broken if the exporter crashes and restarts.

Restricting the set of users who can update Grapevine DB .To avoid security problems.

Several choices of binding timeImporter specifies the type onlyBinding at compile-time, by delaying the instance

value

Page 20: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Packet-Level Transport Protocol (Why?)Substantial performance gains Minimize the elapsed real-time between

initializing a call and getting results.Unacceptable to have large amount of state

info.Unacceptable to have an expensive

handshaking.Guarantee procedure in the server has been

invoked precisely once.

Page 21: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Caller Machine

User RPC+Stub

Call Send CallPacket

Wait Ack or Result

Return

Invoke proc

Send results

Do call

Return

Callee Machine

ServerRPC+Stub

Seq#[Machine Id, Process]

“Activity” is the

Machine Id, and

Processes’ Ids

Each activity has at most 1

remote call at any time

Proposes 1- Ensure the

result packet is for this call

2- Callee can eliminate

duplicates

Desired Procedure Info:

UId, Table Index, Procedure entry

point.

Procedure arguments which

is the input or output that will be

used by RP

RPC compares Seq# in CID to the

one it has in a table that

maintains seq# of the last call

invoked by each calling activity

ResultCallID

results

If caller Seq# EQ Cseq then Ack if

neededif callerSeq# LT Cseq then drop

“repeated”If callerSeq# GT

Cseq then new call packet

Monotonic for each activity.

No repeats (calls might eliminated

as dup. )

CallID

DP info

Call Arugs

Result packet is sufficient Ack to the

caller.

Page 22: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Is There A “Stack Ripping”?In manual stack management the necessary

data is taking off the stack and then putting it on the heap.

In RPC it’s taking off the stack and putting it in a message.Sent to the other side.

Very similar to taking the state off the stack and putting it in a continuation. Executed by a separate event handler.

Page 23: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Caller Machine User RPC+Stub

CallSend

CallPktWait for Ack

Build next pkt

Transmit itWait for ack

Start arg record

Idle

Do call

Return

Callee Machine ServerRPC+Stub

RetransmitWait for ack

Wait for result

Return

Acknowledgment

AcknowledgeWait next pkt

Invoke call

Acknowledge

Send resultWait for ack

RetransmitWait for ack

CallID, Pkt=0, PlsAck,…

Call

CallID, Pkt=0,

Ack

CallID, Pkt=1, dontAck,….

Data

CallID, Pkt=1, PlsAck ,….

Data

CallID, Pkt=1,

Ack

CallID, Pkt=2, dontAck ,….

Result

CallID, Pkt=2, PlsAck ,….

Result

CallID, Pkt=2,

Ack

Call pkt must be acknowledged

Arguments going to be in 2

packets

Send the rest of the data in Data

Pkt

In case of lost packet, long call duration or long

gaps between calls retransmit the last pkt and ask for ack

Satisfying Ack: process waits for

resultsCaller sends probe pkts periodically

(can detect communication

failure)

Now all arguments are ready, so the dispatching

process starts

Send resultsAnd wait for another call “works as an

Ack”

Return results to caller process

(user code)

No subsequent call arrived, so ask the caller to do an explicit Ack that it has received the

results

Page 24: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole
Page 25: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Exception Handing (Remote Process Exception) Two level of exception

Communication Failure Exception (Explained with complicated call example), considered to be the primary difference between procedure call and RPC

Remote Process Exception

Page 26: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Exception HandlingCaller

Machine User RPC+Stub

Call Send CallPacket

ReturnWith

exception

Invoke proc

Send Exception

Do call

ReturnWith

exception

Callee Machine

ServerRPC+Stub

ExceptionCallI

DException

CallID

DP info

Call Arugs

Wait Ack, Result

or Exception

Caller does sends regular call packet as we saw before

If an exception occur, the

process passes the exception

to RPC

Prepare and send exception packet instead

of results packet

Don’t invoke new call,

instead raise an exception in

the calling process

If the catch phrase

terminated by a jump, then the callee will be

notified

Call with Exception results

Catch exception

Send EH results

CallID

DP info

Results Arugs Invoke proc

that caused the excep

Continue doing call

Exception handling results

packet.

Events processed normally

If there’s a catch phrase,

exception will be handled and

results will be sent back to the callee machine

Exception

Page 27: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Use of Processes

`

3

Idle Server Processes

Processes Waiting For RPC packet 7

SrcProcessDestProcess

7 3

Process 7 made a remote

procedure call to process 3

This part is the process

identifiers, which is part of the activity info

within the CallID

Interrupt handler in RPC

look at the destProcess, if the process is waiting then it

transfers the pkt directly

Caller Machine Callee Machine

Network

RPC will exchange

SrcProcess with DestProcess so

that it can return the

results to the right process

SrcProcessDestProcess

7 3

If there’s no corresponding process waiting for this packet

then it will be dispatched to one of the free processes(Current, New, or

Dup)RPC now

transmit the packet back to

the caller (result,

exception, or Ack)

Page 28: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

SecurityRPC package and protocol provides

Encryption-based security of callsEnd-to-end encryption of calls and resultsDetect tempts of modification, reply, or

creation of calls.Restricted set of users who can update

Grapevine DB.Exporting services is restricted

Grapevine DB used as authentication service.

Page 29: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole
Page 30: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

OptimizationsUse of idle processes in caller and callee

machines to reduce process creation and process swaps.

The use of process source and destination allow processes to get the packets they’re waiting for directly.

Use of subsequent packet for implicit acknowledgments of previous packets.

Avoid the cost of establishing and termination connection by the implementation of packet-level protocol.

Page 31: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Performance evaluation They’ve measured the elapsed time between

two machines for 12,000 calls for each of the following procedures:0-10 arguments/results.1-100 word array.Caller Resume and unwind exception handling.

Page 32: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Performance results

Page 33: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Performance summaryFor transferring large amounts of data in one

direction products other than RPC have advantage. Transfer fewer packets in the other direction

They haven’t measure the performance of exporting or importing interfaces.

Used by: Alpine [File server supports multi-machine

transactions]Control communication for an Ethernet-based

for telephone and audio projectNetworking games.

Page 34: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

ConclusionRPC is one of the techniques used in communication

between processes outside their address space boundaries.

Make distributed programming easier.RPC protocol for avoiding communications overhead.Considered to be the first protocol suite that provides

security in open network communications. RPC succeed in providing reliability and integrity for

data and control transfer.More work needs to be done (By now, I think there is

a lot of work that has been done)

Page 35: By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole

Discussion