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
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
Explore More Topics
Stay informed with curated content and fresh updates.