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

Slides:



Advertisements
Similar presentations
RPC Robert Grimm New York University Remote Procedure Calls.
Advertisements

Remote Procedure Call (RPC)
Remote Procedure Call Design issues Implementation RPC programming
Tam Vu Remote Procedure Call CISC 879 – Spring 03 Tam Vu March 06, 03.
Implementing Remote Procedure Calls Andrew Birrell and Bruce Nelson Presented by Kai Cong.
Lightweight Remote Procedure Call Brian N. Bershad, Thomas E. Anderson, Edward D. Lazowska, and Henry M. Levy Presented by Alana Sweat.
Implementing Remote Procedure Calls Authored by: Andrew D. Birrel and Bruce Jay Nelson Presented by: Terry, Jae, Denny.
Tutorials 2 A programmer can use two approaches when designing a distributed application. Describe what are they? Communication-Oriented Design Begin with.
CS533 - Concepts of Operating Systems 1 Remote Procedure Calls - Alan West.
Implementing Remote Procedure Calls Authors: Andrew D. Birrell and Bruce Jay Nelson Xerox Palo Alto Research Center Presenter: Jim Santmyer Thanks to:
Remote Procedure Calls (RPC) Presenter: Benyah Shaparenko CS 614, 2/24/2004.
CSCI 4550/8556 Computer Networks Comer, Chapter 19: Binding Protocol Addresses (ARP)
Remote Procedure Calls (RPC) - Swati Agarwal. RPC – an overview Request / reply mechanism Procedure call – disjoint address space clientserver computation.
Outcomes What is RPC? The difference between conventional procedure call and RPC? Understand the function of client and server stubs How many steps could.
An Introduction to Internetworking. Why distributed systems - Share resources (devices & CPU) - Communicate people (by transmitting data)
TCP/IP Protocol Suite 1 Chapter 11 Upon completion you will be able to: User Datagram Protocol Be able to explain process-to-process communication Know.
Implementing Remote Procedure Calls an introduction to the fundamentals of RPCs, made during the advent of the technology. what is an RPC? what different.
16: Distributed Systems1 DISTRIBUTED SYSTEM STRUCTURES NETWORK OPERATING SYSTEMS The users are aware of the physical structure of the network. Each site.
Remote Procedure Calls. 2 Client/Server Paradigm Common model for structuring distributed computations A server is a program (or collection of programs)
.NET Mobile Application Development Remote Procedure Call.
Remote Procedure Calls Taiyang Chen 10/06/2009. Overview Remote Procedure Call (RPC): procedure call across the network Lightweight Remote Procedure Call.
OIS Model TCP/IP Model.
1 Lightweight Remote Procedure Call Brian N. Bershad, Thomas E. Anderson, Edward D. Lazowska and Henry M. Levy Presented by: Karthika Kothapally.
CS533 Concepts of Operating Systems Class 9 Lightweight Remote Procedure Call (LRPC) Rizal Arryadi.
Switching Techniques Student: Blidaru Catalina Elena.
CEN Network Fundamentals Chapter 19 Binding Protocol Addresses (ARP) To insert your company logo on this slide From the Insert Menu Select “Picture”
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
J.H.Saltzer, D.P.Reed, C.C.Clark End-to-End Arguments in System Design Reading Group 19/11/03 Torsten Ackemann.
Implementing Remote Procedure Calls ANDREW D. BIRRELL and BRUCE JAY NELSON Presented by Tony Bock.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Remote Procedure Calls Adam Smith, Rodrigo Groppa, and Peter Tonner.
RELATIONAL FAULT TOLERANT INTERFACE TO HETEROGENEOUS DISTRIBUTED DATABASES Prof. Osama Abulnaja Afraa Khalifah
Remote Procedure Call An Effective Primitive for Distributed Computing Seth James Nielson.
Implementing Remote Procedure Calls Authored by Andrew D. Birrell and Bruce Jay Nelson Xerox Palo Alto Research Center Presented by Lars Larsson.
The Transmission Control Protocol (TCP) Application Services (Telnet, FTP, , WWW) Reliable Stream Transport (TCP) Connectionless Packet Delivery.
 Remote Procedure Call (RPC) is a high-level model for client-sever communication.  It provides the programmers with a familiar mechanism for building.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved RPC Tanenbaum.
IP1 The Underlying Technologies. What is inside the Internet? Or What are the key underlying technologies that make it work so successfully? –Packet Switching.
REQUEST/REPLY COMMUNICATION
By Andrew D. Birrell and Bruce Jay Nelson Adapted from an earlier presentation by Abdussalam Alawini.
09/14/05 1 Implementing Remote Procedure Calls* Birrell, A. D. and Nelson, B. J. Presented by Emil Constantinescu *ACM Trans. Comput. Syst. 2, 1 (Feb.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
Web Services An Introduction Copyright © Curt Hill.
5. The Transport Layer 5.1 Role of Transport Layer It bridge the gab between applications and the network layer. Provides reliable cost-effective data.
Computer Science Lecture 3, page 1 CS677: Distributed OS Last Class: Communication in Distributed Systems Structured or unstructured? Addressing? Blocking/non-blocking?
Implementing Remote Procedure Calls Andrew D. Birrell and Bruce Jay Nelson 1894 Xerox Palo Alto Research Center EECS 582 – W16.
Implementing Remote Procedure Calls Andrew D. Birrell and Bruce Jay Nelson Xerox Palo Alto Research Center Published: ACM Transactions on Computer Systems,
4343 X2 – The Transport Layer Tanenbaum Ch.6.
Implementing Remote Procedure Call Landon Cox February 12, 2016.
© Oxford University Press 2011 DISTRIBUTED COMPUTING Sunita Mahajan Sunita Mahajan, Principal, Institute of Computer Science, MET League of Colleges, Mumbai.
Embedded Real-Time Systems Processing interrupts Lecturer Department University.
Distributed Computing & Embedded Systems Chapter 4: Remote Method Invocation Dr. Umair Ali Khan.
The Structuring of Systems Using Upcalls David D. Clark (Presented by John McCall)
Object Interaction: RMI and RPC 1. Overview 2 Distributed applications programming - distributed objects model - RMI, invocation semantics - RPC Products.
03 – Remote invoaction Request-reply RPC RMI Coulouris 5
Prof. Leonardo Mostarda University of Camerino
CS533 Concepts of Operating Systems
Implementing Remote Procedure Calls
Implementing RPC by Birrell & Nelson
Switching Techniques In large networks there might be multiple paths linking sender and receiver. Information may be switched as it travels through various.
Programming Models for Distributed Application
DISTRIBUTED COMPUTING
Lecture 4: RPC Remote Procedure Call Coulouris et al: Chapter 5
CSE 451: Operating Systems Autumn 2003 Lecture 16 RPC
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
Switching Techniques.
Remote Procedure Call Hank Levy 1.
Remote Procedure Call Hank Levy 1.
CSE 451: Operating Systems Winter 2003 Lecture 16 RPC
Remote Procedure Call Hank Levy 1.
Presentation transcript:

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

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

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? Communication Network Server Client Z=F(x,y) F(x,y) result Compute F(x,y) Compute F(x,y)

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 User Application User-stub Caller RPCRuntime Caller RPCRuntime Network Libraries (Server code) Libraries (Server code) Server-stub Callee RPCRuntime Callee RPCRuntime Normal Local Proc Call Import Interface Export Interface 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

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

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

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

Grapevine Database Locating an appropriate exporter Type (Group) Member-list FileAccess{Ebbets, Luther, Facc} Instance(Individual)Connect-site Ebbets3#22# Luther3#276# Facc3#43# Export Interface Type FileAccess Instance Ebbets Import Interface Type FileAccess Instance Ebbets Grapevine Database Server 1 (Ebbets) 3#22# Server 2 (Luther) 3#276# Server3 (Facc) 3#43#

Steps of Exporting an Interface (Making it available to a client) Callee Machine ServerRPCRuntimeServer-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 RPCRuntime Record exported interface in a table Table [tableIndex, InterfaceName,Dispa tcherProd, 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)

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

Caller Machine Callee Machine UserUser-stub RPCRuntime Server-stubServer Import [FA, Ebbets] Get Connect Bind[FA, Ebbets] Grapevine Database Lookup Record result Return Table lookup X= openFile(y) openFile -> 2 transmit Check 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 info Normal 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 information 2- Prepare call packet 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 After unpacking, Dispatcher uses the info to map to the right procedure Call the local procedure using provided arguments Lookup the table of current exports Send the corresponding binding info

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

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.

Simple Calls Example Caller Machine UserRPC+Stub Call Send Call Packet Wait Ack or Result Return Invoke proc Send results Do call Return Callee Machine Server RPC+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 Result CallIDresults If caller Seq# EQ Cseq then Ack if needed if 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. ) CallIDDP info Call Arugs Result packet is sufficient Ack to the caller.

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.

Complicated Call Example Caller Machine UserRPC+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 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 results Caller sends probe pkts periodically (can detect communication failure) Now all arguments are ready, so the dispatching process starts Send results And 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

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

Exception Handling Caller Machine UserRPC+Stub Call Send Call Packet Return With exception Invoke proc Send Exception Do call Return With exception Callee Machine Server RPC+Stub Exception CallIDException CallIDDP 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 CallIDDP 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

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 MachineCallee 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)

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.

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.

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 word array. Caller Resume and unwind exception handling.

Performance results

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.

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 of work that has been done)

Discussion