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 we’re heading? � What is “Remote” Procedure Call Design Decisions � Goals of RPC � Implementing RPC 2. RPC Structure � � Binding Process � RPC NT Protocol 3. Data Integrity and security Exception Handling � Use of Processes � Security � Optimizations and Evaluation 4. � Optimizations � Performance evaluation
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.
What is A “Remote” Procedure Call? Server Z=F(x,y) Communication Network Client
What is A “Remote” Procedure Call? Server Z=F(x,y) Communication F(x,y) Network Client
What is A “Remote” Procedure Call? Server Compute F(x,y) F(x,y) Communication Network Client
What is A “Remote” Procedure Call? Server Compute F(x,y) result Communication Network Client
What is A “Remote” Procedure Call? Server Communication Network result Client
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
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
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
RPC Components Interactions Caller Machine Callee Machine Normal Local Proc Call User Libraries Application (Server code) Import Export Interface Interface User-stub Server-stub Caller Callee RPCRuntime RPCRuntime Network
RPC Components Interactions Caller Machine Callee Machine User Libraries Application (Server code) Pack target Import Export spec + proc Interface Interface arguments User-stub Server-stub Call Packet Caller Callee RPCRuntime RPCRuntime Network
RPC Components Interactions Caller Machine Callee Machine User Libraries Application (Server code) Import Export Interface Interface User-stub Server-stub transmit packet Caller Callee “Reliably” RPCRuntime RPCRuntime Call Packet Network
RPC Components Interactions Caller Machine Callee Machine User Libraries Application (Server code) Import Export Interface Interface User-stub Server-stub Pass them to server- Caller Callee stub RPCRuntime RPCRuntime Network Call Packet
RPC Components Interactions Caller Machine Callee Machine User Libraries Application (Server code) Unpack & Import Export make local Interface Interface call User-stub Server-stub Caller Callee RPCRuntime RPCRuntime Network
RPC Components Interactions Caller Machine Callee Machine Do work and return results User Libraries Application (Server code) Import Export Interface Interface User-stub Server-stub Results Packet Caller Callee RPCRuntime RPCRuntime Network
RPC Components Interactions Caller Machine Callee Machine User Libraries Application (Server code) Import Export Interface Interface User-stub Server-stub Results Packet Caller Callee RPCRuntime RPCRuntime Network
Who Does What? Mesa Interface Caller Machine Callee Machine Modules User Libraries Programmer Application (Server code) Interface Interface Lupine User-stub Server-stub ( Auto Generation ) Caller Callee Part of Cedar RPCRuntime RPCRuntime Network
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
Naming (Interface Name) Importer of an Exporter of an Binding interface interface � 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)
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.
Locating an appropriate exporter Using Grapevine Database Server 1 Server 2 Server3 (Ebbets) (Luther) (Facc) Export 3#22# 3#276# 3#43# Interface Type FileAccess Grapevine Instance Ebbets Database Type (Group) Member-list Instance(Individual) Connect-site FileAccess {Ebbets, Luther, Facc} Ebbets 3#22# Luther 3#276# Facc 3#43#
Locating an appropriate exporter Using Grapevine Database Server 1 Server 2 Server3 (Ebbets) (Luther) (Facc) 3#22# 3#276# 3#43# Grapevine Database Type (Group) Member-list Instance(Individual) Connect-site FileAccess {Ebbets, Luther, Facc} Ebbets 3#22# Luther 3#276# Facc 3#43# Import Interface Type FileAccess Instance Ebbets
Steps of Exporting an Interface (Making it available to a client) Callee Machine Grapevine Database RPCRuntime Server-stub Server Record in Export [FA, Export [FA, table Ebbets,…] Ebbets] Call Do update SetConnect server-sub AddMember Do update Return
Steps of Exporting an Interface (Making it available to a client) Callee Machine Grapevine Database RPCRuntime Server-stub Server Record in Export [FA, Export [FA, table Ebbets,…] Ebbets] Call ExportInterface Do update SetConnect (Interface Name, Dispatcher) AddMember Do update Return
Steps of Exporting an Interface (Making it available to a client) ExportInterface Callee Machine Grapevine Database make sure that type and instance is correct RPCRuntime Server-stub Server Record in Export [FA, Export [FA, table Ebbets,…] Ebbets] Do update SetConnect Interface exported (Can be accessed remotely) AddMember Do update Return
Steps of Exporting an Interface (Making it available to a client) Callee Machine RPCRuntime Grapevine Database Record exported interface in a table RPCRuntime Server-stub Server Record in Export [FA, Export [FA, table Ebbets,…] Ebbets] Do update SetConnect AddMember Do update Return
Steps of Exporting an Interface (Making it available to a client) Callee Machine Grapevine Database RPCRuntime Server-stub Server Set the address of the Record in Export [FA, Export [FA, current machine in table Ebbets,…] Ebbets] the connect-site Adds the instance to Do update SetConnect the member-list of the type of the instance AddMember Do update Return
Steps of Exporting an Interface (Making it available to a client) Callee Machine Grapevine Database RPCRuntime Server-stub Server Record in Export [FA, Export [FA, table Ebbets,…] Ebbets] Do update SetConnect Interface exported (Can be accessed remotely) AddMember Do update Return
Steps of Binding An Importer to An Exporter Interface (Getting ready for remote calls)
Lookup Grapevine Call user-stub Database “I need to import Interface[FA, Ebbets” Caller Machine Callee Machine RPCRuntime RPCRuntime Server-stub Server User User-stub Import Import Get [FA, [FA, Connect Ebbets] Ebbets] Bind[FA, Ebbets] Table Record Return lookup result X= openFile -> Check UID 2 -> X= transmit openFile(y) 2 In table openFile openFile(y)
Call Lookup Grapevine ImportInterface Database “Here’s the type and instance we need” Caller Machine Callee Machine RPCRuntime RPCRuntime Server-stub Server User User-stub Import Import Get [FA, [FA, Connect Ebbets] Ebbets] Bind[FA, Ebbets] Table Record Return lookup result X= openFile -> Check UID 2 -> X= transmit openFile(y) 2 In table openFile openFile(y)
OK, I will ask Lookup Grapevine grapevine DB and Database get the NT address of exporting Interface Caller Machine Callee Machine RPCRuntime RPCRuntime Server-stub Server User User-stub Import Import Get [FA, [FA, Connect Ebbets] Ebbets] Bind[FA, Ebbets] Table Record Return lookup result X= openFile -> Check UID 2 -> X= transmit openFile(y) 2 In table openFile openFile(y)
Recommend
More recommend