by andrew d birrell and bruce jay nelson presented by
play

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


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

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

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

  4. What is A “Remote” Procedure Call? Server Z=F(x,y) Communication Network Client

  5. What is A “Remote” Procedure Call? Server Z=F(x,y) Communication F(x,y) Network Client

  6. What is A “Remote” Procedure Call? Server Compute F(x,y) F(x,y) Communication Network Client

  7. What is A “Remote” Procedure Call? Server Compute F(x,y) result Communication Network Client

  8. What is A “Remote” Procedure Call? Server Communication Network result Client

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

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

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

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

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

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

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

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

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

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

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

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

  21. 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)

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

  23. 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#

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

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

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

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

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

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

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

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

  32. 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)

  33. 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)

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