By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam - - PowerPoint PPT Presentation

by andrew d birrell and bruce jay nelson presented by
SMART_READER_LITE
LIVE PREVIEW

By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam - - PowerPoint PPT Presentation

By Andrew D. Birrell and Bruce Jay Nelson Presented By: Abdussalam Alawini Reviewed By Prof. Jonathon Walpole Contents Introduction 1. Where we are? And where were heading? What is Remote Procedure Call Design Decisions


slide-1
SLIDE 1

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

slide-2
SLIDE 2

Contents

1.

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
slide-3
SLIDE 3
slide-4
SLIDE 4

Where we are? And where we’re heading?

We saw managing OS control flow over one shared-

memory using:

Procedural (thread-based) Model Message 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.

slide-5
SLIDE 5

What is A “Remote” Procedure Call?

Communication Network Server Client Z=F(x,y)

slide-6
SLIDE 6

What is A “Remote” Procedure Call?

Communication Network Server Client Z=F(x,y) F(x,y)

slide-7
SLIDE 7

What is A “Remote” Procedure Call?

Communication Network Server Client F(x,y) Compute F(x,y)

slide-8
SLIDE 8

What is A “Remote” Procedure Call?

Communication Network Server Client result Compute F(x,y)

slide-9
SLIDE 9

What is A “Remote” Procedure Call?

Communication Network Server Client result

slide-10
SLIDE 10

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 fork

No major changes in design problems

Shared Address space

Integration of remote address spaces Efficiency issues

slide-11
SLIDE 11

Goals of implementing RPC

Simplicity

Make RPC as similar to procedure calls as possible Make distrusted computation easier

Efficiency

Make sematic of RPC package as powerful as possible

without losing efficiency or simplicity

Security

Secure end-to-end communications with RPC

slide-12
SLIDE 12
slide-13
SLIDE 13

RPC Facility Structure

Caller Machine

User (user application code module) User-Stub Caller instance of RPCRuntime (RPC communications

package)

Callee Machine

Server (server code module) Server-stub Callee instance of RPCRuntime

slide-14
SLIDE 14

RPC Components Interactions

User Application User-stub Caller RPCRuntime Network Libraries (Server code) Server-stub Callee RPCRuntime Normal Local Proc Call Import Interface Export Interface Caller Machine Callee Machine

slide-15
SLIDE 15

RPC Components Interactions

User Application User-stub Caller RPCRuntime Network Libraries (Server code) Server-stub Callee RPCRuntime Import Interface Export Interface Pack target spec + proc arguments

Call Packet

Caller Machine Callee Machine

slide-16
SLIDE 16

RPC Components Interactions

User Application User-stub Caller RPCRuntime Network Libraries (Server code) Server-stub Callee RPCRuntime Import Interface Export Interface

Call Packet

transmit packet “Reliably” Caller Machine Callee Machine

slide-17
SLIDE 17

RPC Components Interactions

User Application User-stub Caller RPCRuntime Network Libraries (Server code) Server-stub Callee RPCRuntime Import Interface Export Interface

Call Packet

Pass them to server- stub Caller Machine Callee Machine

slide-18
SLIDE 18

RPC Components Interactions

User Application User-stub Caller RPCRuntime Network Libraries (Server code) Server-stub Callee RPCRuntime Import Interface Export Interface Unpack & make local call Caller Machine Callee Machine

slide-19
SLIDE 19

RPC Components Interactions

User Application User-stub Caller RPCRuntime Network Libraries (Server code) Server-stub Callee RPCRuntime Import Interface Export Interface Do work and return results

Results Packet

Caller Machine Callee Machine

slide-20
SLIDE 20

RPC Components Interactions

User Application User-stub Caller RPCRuntime Network Libraries (Server code) Server-stub Callee RPCRuntime Import Interface Export Interface

Results Packet

Caller Machine Callee Machine

slide-21
SLIDE 21

Who Does What?

User Application User-stub Caller RPCRuntime Network Libraries (Server code) Server-stub Callee RPCRuntime Interface Interface Caller Machine Callee Machine Programmer Lupine (Auto Generation) Part of Cedar Mesa Interface Modules

slide-22
SLIDE 22

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

slide-23
SLIDE 23

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

slide-24
SLIDE 24

Design ideas

1- 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.

slide-25
SLIDE 25

Locating an appropriate exporter

Using Grapevine Database

Type (Group)

Member-list FileAccess {Ebbets, Luther, Facc} Instance(Individual) Connect-site Ebbets 3#22# Luther 3#276# Facc 3#43#

Export Interface Type FileAccess Instance Ebbets Grapevine Database Server 1 (Ebbets) 3#22# Server 2 (Luther) 3#276# Server3 (Facc) 3#43#

slide-26
SLIDE 26

Locating an appropriate exporter

Using Grapevine Database

Type (Group)

Member-list FileAccess {Ebbets, Luther, Facc} Instance(Individual) Connect-site Ebbets 3#22# Luther 3#276# Facc 3#43#

Import Interface Type FileAccess Instance Ebbets Grapevine Database Server 1 (Ebbets) 3#22# Server 2 (Luther) 3#276# Server3 (Facc) 3#43#

slide-27
SLIDE 27

Steps of Exporting an Interface

(Making it available to a client)

Callee Machine

Server RPCRuntime Server-stub

Grapevine Database

Export [FA, Ebbets] Export [FA, Ebbets,…] Record in table SetConnect

Do update

AddMember

Return

Do update

Call server-sub

slide-28
SLIDE 28

Steps of Exporting an Interface

(Making it available to a client)

Callee Machine

Server RPCRuntime Server-stub

Grapevine Database

Export [FA, Ebbets] Export [FA, Ebbets,…] Record in table SetConnect

Do update

AddMember

Return

Do update

Call ExportInterface (Interface Name, Dispatcher)

slide-29
SLIDE 29

Steps of Exporting an Interface

(Making it available to a client)

Callee Machine

Server RPCRuntime Server-stub

Grapevine Database

Export [FA, Ebbets] Export [FA, Ebbets,…] Record in table SetConnect

Do update

AddMember

Return

Do update

ExportInterface make sure that type and instance is correct Interface exported (Can be accessed remotely)

slide-30
SLIDE 30

Steps of Exporting an Interface

(Making it available to a client)

Callee Machine

Server RPCRuntime Server-stub

Grapevine Database

Export [FA, Ebbets] Export [FA, Ebbets,…] Record in table SetConnect

Do update

AddMember

Return

Do update

RPCRuntime Record exported interface in a table

slide-31
SLIDE 31

Steps of Exporting an Interface

(Making it available to a client)

Callee Machine

Server RPCRuntime Server-stub

Grapevine Database

Export [FA, Ebbets] Export [FA, Ebbets,…] Record in table SetConnect

Do update

AddMember

Return

Do update

Set the address of the current machine in the connect-site Adds the instance to the member-list of the type of the instance

slide-32
SLIDE 32

Steps of Exporting an Interface

(Making it available to a client)

Callee Machine

Server RPCRuntime Server-stub

Grapevine Database

Export [FA, Ebbets] Export [FA, Ebbets,…] Record in table SetConnect

Do update

AddMember

Return

Do update

Interface exported (Can be accessed remotely)

slide-33
SLIDE 33

Steps of Binding An Importer to An Exporter Interface

(Getting ready for remote calls)

slide-34
SLIDE 34

Caller Machine Callee Machine

User User-stub

RPCRuntime RPCRuntime

Server-stub Server

Import [FA, Ebbets] Import [FA, Ebbets]

Get Connect Bind[FA, Ebbets]

Grapevine Database

Lookup Record result Return

Table lookup

X=

  • penFile(y)
  • penFile ->

2 transmit Check UID In table 2 ->

  • penFile

X=

  • penFile(y)

Call user-stub “I need to import Interface[FA, Ebbets”

slide-35
SLIDE 35

Caller Machine Callee Machine

User User-stub

RPCRuntime RPCRuntime

Server-stub Server

Import [FA, Ebbets] Import [FA, Ebbets]

Get Connect Bind[FA, Ebbets]

Grapevine Database

Lookup Record result Return

Table lookup

X=

  • penFile(y)
  • penFile ->

2 transmit Check UID In table 2 ->

  • penFile

X=

  • penFile(y)

Call ImportInterface “Here’s the type and instance we need”

slide-36
SLIDE 36

Caller Machine Callee Machine

User User-stub

RPCRuntime RPCRuntime

Server-stub Server

Import [FA, Ebbets] Import [FA, Ebbets]

Get Connect Bind[FA, Ebbets]

Grapevine Database

Lookup Record result Return

Table lookup

X=

  • penFile(y)
  • penFile ->

2 transmit Check UID In table 2 ->

  • penFile

X=

  • penFile(y)

OK, I will ask grapevine DB and get the NT address

  • f exporting

Interface

slide-37
SLIDE 37

Caller Machine Callee Machine

User User-stub

RPCRuntime RPCRuntime

Server-stub Server

Import [FA, Ebbets] Import [FA, Ebbets]

Get Connect Bind[FA, Ebbets]

Grapevine Database

Lookup Record result Return

Table lookup

X=

  • penFile(y)
  • penFile ->

2 transmit Check UID In table 2 ->

  • penFile

X=

  • penFile(y)

Here’s the NT address “connect-site” Alright, I’ll call the exporter RPCRuntime to get the binding info

slide-38
SLIDE 38

Caller Machine Callee Machine

User User-stub

RPCRuntime RPCRuntime

Server-stub Server

Import [FA, Ebbets] Import [FA, Ebbets]

Get Connect Bind[FA, Ebbets]

Grapevine Database

Lookup Record result Return

Table lookup

X=

  • penFile(y)
  • penFile ->

2 transmit Check UID In table 2 ->

  • penFile

X=

  • penFile(y)

Now let see how this will work

slide-39
SLIDE 39

Caller Machine Callee Machine

User User-stub

RPCRuntime RPCRuntime

Server-stub Server

Import [FA, Ebbets] Import [FA, Ebbets]

Get Connect Bind[FA, Ebbets]

Grapevine Database

Lookup Record result Return

Table lookup

X=

  • penFile(y)
  • penFile ->

2 transmit Check UID In table 2 ->

  • penFile

X=

  • penFile(y)

Now let see how this will work

1- Retrieve interface binding information 2- Prepare call packet

slide-40
SLIDE 40

Caller Machine Callee Machine

User User-stub

RPCRuntime RPCRuntime

Server-stub Server

Import [FA, Ebbets] Import [FA, Ebbets]

Get Connect Bind[FA, Ebbets]

Grapevine Database

Lookup Record result Return

Table lookup

X=

  • penFile(y)
  • penFile ->

2 transmit Check UID In table 2 ->

  • penFile

X=

  • penFile(y)

Now let see how this will work

Alright, I will transmit it to the machine with address “connect- site” 1-Lookup current exports 2- verify UID 3- send call packet to dispatcher

slide-41
SLIDE 41

Caller Machine Callee Machine

User User-stub

RPCRuntime RPCRuntime

Server-stub Server

Import [FA, Ebbets] Import [FA, Ebbets]

Get Connect Bind[FA, Ebbets]

Grapevine Database

Lookup Record result Return

Table lookup

X=

  • penFile(y)
  • penFile ->

2 transmit Check UID In table 2 ->

  • penFile

X=

  • penFile(y)

Now let see how this will work

After unpacking, Dispatcher uses the info to map to the right procedure

slide-42
SLIDE 42

Caller Machine Callee Machine

User User-stub

RPCRuntime RPCRuntime

Server-stub Server

Import [FA, Ebbets] Import [FA, Ebbets]

Get Connect Bind[FA, Ebbets]

Grapevine Database

Lookup Record result Return

Table lookup

X=

  • penFile(y)
  • penFile ->

2 transmit Check UID In table 2 ->

  • penFile

X=

  • penFile(y)

Now let see how this will work

Call the local procedure using provided arguments

slide-43
SLIDE 43

Binding Mechanism Advantages

Importing an interface has no effect on the data

structure of the exporting machine

The 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 time

Importer specifies the type only Binding at compile-time, by delaying the instance value

slide-44
SLIDE 44

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.

slide-45
SLIDE 45

Simple Calls Example

Caller Machine

User RPC+Stub Call

Send Call Packet Wait Ack

  • r Result

Return Invoke proc Send results Do call Return

Callee Machine

Server RPC+Stub

Proposes 1- Ensure the result packet is for this call 2- Callee can eliminate duplicates

CallID DP info

Call

Arugs

slide-46
SLIDE 46

Simple Calls Example

Caller Machine

User RPC+Stub Call

Send Call Packet Wait Ack

  • r Result

Return Invoke proc Send results Do call Return

Callee Machine

Server RPC+Stub

CallID DP info

Call

Arugs

Desired Procedure Info: UId, Table Index, Procedure entry point.

slide-47
SLIDE 47

Simple Calls Example

Caller Machine

User RPC+Stub Call

Send Call Packet Wait Ack

  • r Result

Return Invoke proc Send results Do call Return

Callee Machine

Server RPC+Stub

CallID DP info

Call

Arugs

Procedure arguments which is the input or

  • utput that will be

used by RP

slide-48
SLIDE 48

Simple Calls Example

Caller Machine

User RPC+Stub Call

Send Call Packet Wait Ack

  • r Result

Return Invoke proc Send results Do call Return

Callee Machine

Server RPC+Stub

CallID DP info

Call

Arugs

Seq# [Machine Id, Process] “Activity” Calling Machine Id, and Process Id Each activity has at most 1 remote call at any time

Monotonic for each activity. No repeats (calls might eliminated as

  • dup. )
slide-49
SLIDE 49

Simple Calls Example

Caller Machine

User RPC+Stub Call

Send Call Packet Wait Ack

  • r Result

Return Invoke proc Send results Do call Return

Callee Machine

Server RPC+Stub

CallID DP info

Call

Arugs

Seq# [Machine Id, Process]

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

slide-50
SLIDE 50

Simple Calls Example

Caller Machine

User RPC+Stub Call

Send Call Packet Wait Ack

  • r Result

Return Invoke proc Send results Do call Return

Callee Machine

Server RPC+Stub

CallID DP info

Call

Arugs

Seq# [Machine Id, Process]

If caller Seq# EQ Cseq then Ack if needed if callerSeq# LT Cseq then drop “repeated” If callerSeq# GT Cseq then new call packet

Result

CallID results

slide-51
SLIDE 51

Simple Calls Example

Caller Machine

User RPC+Stub Call

Send Call Packet Wait Ack

  • r Result

Return Invoke proc Send results Do call Return

Callee Machine

Server RPC+Stub

CallID DP info

Call

Arugs

Seq# [Machine Id, Process] Result

CallID results

Result packet is sufficient Ack to the caller.

slide-52
SLIDE 52

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.

slide-53
SLIDE 53

Complicated Call Example

Caller Machine

User RPC+Stub

Call

Send CallPkt Wait for Ack Build next pkt Transmit it Wait for ack

Start arg record Idle Do call Return

Callee Machine

Server RPC+Stub

Retransmit Wait for ack Wait for result Return

Acknowledgment

Acknowledge Wait next pkt

Invoke call

Acknowledge

Send result Wait for ack Retransmit Wait 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

slide-54
SLIDE 54

Complicated Call Example

Caller Machine

User RPC+Stub

Call

Send CallPkt Wait for Ack Build next pkt Transmit it Wait for ack

Start arg record Idle Do call Return

Callee Machine

Server RPC+Stub

Retransmit Wait for ack Wait for result Return

Acknowledgment

Acknowledge Wait next pkt

Invoke call

Acknowledge

Send result Wait for ack Retransmit Wait 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

Send the rest of the data in Data Pkt

slide-55
SLIDE 55

Complicated Call Example

Caller Machine

User RPC+Stub

Call

Send CallPkt Wait for Ack Build next pkt Transmit it Wait for ack

Start arg record Idle Do call Return

Callee Machine

Server RPC+Stub

Retransmit Wait for ack Wait for result Return

Acknowledgment

Acknowledge Wait next pkt

Invoke call

Acknowledge

Send result Wait for ack Retransmit Wait 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

Now all arguments are ready, so the dispatching process starts

slide-56
SLIDE 56

Complicated Call Example

Caller Machine

User RPC+Stub

Call

Send CallPkt Wait for Ack Build next pkt Transmit it Wait for ack

Start arg record Idle Do call Return

Callee Machine

Server RPC+Stub

Retransmit Wait for ack Wait for result Return

Acknowledgment

Acknowledge Wait next pkt

Invoke call

Acknowledge

Send result Wait for ack Retransmit Wait 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

In case of lost packet, long call duration or long gaps between calls retransmit the last pkt and ask for ack

slide-57
SLIDE 57

Complicated Call Example

Caller Machine

User RPC+Stub

Call

Send CallPkt Wait for Ack Build next pkt Transmit it Wait for ack

Start arg record Idle Do call Return

Callee Machine

Server RPC+Stub

Retransmit Wait for ack Wait for result Return

Acknowledgment

Acknowledge Wait next pkt

Invoke call

Acknowledge

Send result Wait for ack Retransmit Wait 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

Satisfying Ack: process waits for results Caller sends probe pkts periodically (can detect communication failure)

slide-58
SLIDE 58

Complicated Call Example

Caller Machine

User RPC+Stub

Call

Send CallPkt Wait for Ack Build next pkt Transmit it Wait for ack

Start arg record Idle Do call Return

Callee Machine

Server RPC+Stub

Retransmit Wait for ack Wait for result Return

Acknowledgment

Acknowledge Wait next pkt

Invoke call

Acknowledge

Send result Wait for ack Retransmit Wait 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

Send results And wait for another call “works as an Ack”

slide-59
SLIDE 59

Complicated Call Example

Caller Machine

User RPC+Stub

Call

Send CallPkt Wait for Ack Build next pkt Transmit it Wait for ack

Start arg record Idle Do call Return

Callee Machine

Server RPC+Stub

Retransmit Wait for ack Wait for result Return

Acknowledgment

Acknowledge Wait next pkt

Invoke call

Acknowledge

Send result Wait for ack Retransmit Wait 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

Return results to caller process (user code)

slide-60
SLIDE 60
slide-61
SLIDE 61

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

slide-62
SLIDE 62

Exception Handling

Caller Machine

User RPC+Stub Call

Send Call Packet Invoke proc Do call

Callee Machine

Server RPC+Stub

CallID DP info

Call

Arugs

Wait Ack, Result

  • r Exception

Caller does sends regular call packet as we saw before

slide-63
SLIDE 63

Exception Handling

Caller Machine

User RPC+Stub Call

Send Call Packet

Return With exception

Invoke proc

Send Exception

Do call

Return With exception

Callee Machine

Server RPC+Stub Exception

CallID Exception CallID DP info

Call

Arugs

Wait Ack, Result

  • r Exception

If an exception

  • ccur, the process

passes the exception to RPC

Catch exception

Exception

slide-64
SLIDE 64

Exception Handling

Caller Machine

User RPC+Stub Call

Send Call Packet

Return With exception

Invoke proc

Send Exception

Do call

Return With exception

Callee Machine

Server RPC+Stub Exception

CallID Exception CallID DP info

Call

Arugs

Wait Ack, Result

  • r Exception

Catch exception

Exception

Prepare and send exception packet instead of results packet

slide-65
SLIDE 65

Exception Handling

Caller Machine

User RPC+Stub Call

Send Call Packet

Return With exception

Invoke proc

Send Exception

Do call

Return With exception

Callee Machine

Server RPC+Stub Exception

CallID Exception CallID DP info

Call

Arugs

Wait Ack, Result

  • r Exception

Catch exception

Exception

Don’t invoke new call, instead raise an exception in the calling process

slide-66
SLIDE 66

Exception Handling

Caller Machine

User RPC+Stub Call

Send Call Packet

Return With exception

Invoke proc

Send Exception

Do call

Return With exception

Callee Machine

Server RPC+Stub Exception

CallID Exception CallID DP info

Call

Arugs

Wait Ack, Result

  • r Exception

Catch exception

Exception

If there’s a catch phrase, exception will be handled and results will be sent back to the callee machine

slide-67
SLIDE 67

Exception Handling

Caller Machine

User RPC+Stub Call

Send Call Packet

Return With exception

Invoke proc

Send Exception

Do call

Return With exception

Callee Machine

Server RPC+Stub Exception

CallID Exception CallID DP info

Call

Arugs

Wait Ack, Result

  • r Exception

Catch exception

Exception

If the catch phrase terminated by a jump, then the callee will be notified

slide-68
SLIDE 68

Exception Handling

Caller Machine

User RPC+Stub Call

Send Call Packet

Return With exception

Invoke proc

Send Exception

Do call

Return With exception

Callee Machine

Server RPC+Stub Exception

CallID Exception CallID DP info

Call

Arugs

Wait Ack, Result

  • r Exception

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.

Exception

slide-69
SLIDE 69

Exception Handling

Caller Machine

User RPC+Stub Call

Send Call Packet

Return With exception

Invoke proc

Send Exception

Do call

Return With exception

Callee Machine

Server RPC+Stub Exception

CallID Exception CallID DP info

Call

Arugs

Wait Ack, Result

  • r Exception

Call with Exception results

Catch exception Send EH results

CallID DP info

Results

Arugs

Invoke proc that caused the excep Continue doing call

Events processed normally

Exception

slide-70
SLIDE 70

Use of Processes

7

SrcProcess DestProcess

7 3 Process 7 made a remote procedure call to process 3 Caller Machine Callee Machine Network

slide-71
SLIDE 71

Use of Processes

7

SrcProcess DestProcess

7 3 Caller Machine Callee Machine Network This part is the process identifiers, which is part of the activity info within the CallID

slide-72
SLIDE 72

Use of Processes

3 Idle Server Processes Processes Waiting

For RPC packet

7

SrcProcess DestProcess

7 3 Interrupt handler in RPC look at the destProcess, if the process is waiting then it transfers the pkt directly Caller Machine Callee Machine Network

slide-73
SLIDE 73

Use of Processes

3 Idle Server Processes Processes Waiting

For RPC packet

7

SrcProcess DestProcess

7 3 Caller Machine Callee Machine Network

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)

slide-74
SLIDE 74

Use of Processes

3 Idle Server Processes Processes Waiting

For RPC packet

7 Caller Machine Callee Machine Network RPC will exchange SrcProcess with DestProcess so that it can return the result to right process

SrcProcess DestProcess

7 3

slide-75
SLIDE 75

Use of Processes

3 Idle Server Processes Processes Waiting

For RPC packet

7 Caller Machine Callee Machine Network

SrcProcess DestProcess

3 7

slide-76
SLIDE 76

Use of Processes

3 Idle Server Processes Processes Waiting

For RPC packet

7 Caller Machine Callee Machine Network

SrcProcess DestProcess

3 7 RPC now transmit the packet back to the caller (result, exception, or Ack)

slide-77
SLIDE 77

Security

RPC package and protocol provides Encryption-based

security of calls

End-to-end encryption of calls and results Detect 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.

slide-78
SLIDE 78
slide-79
SLIDE 79

Optimizations

Use 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.

slide-80
SLIDE 80

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.

slide-81
SLIDE 81

Performance results

slide-82
SLIDE 82

Performance summary

For 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 project

Networking games.

slide-83
SLIDE 83

Conclusion

RPC 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

  • f work that has been done)
slide-84
SLIDE 84

Discussion