1 / 43

RPC Remote Procedure Call

RPC Remote Procedure Call. Dave Hollinger Rensselaer Polytechnic Institute Troy, NY. Distributed Program Design. Typical Sockets Approach. Communication-Oriented Design Design protocol first. Build programs that adhere to the protocol. Application-Oriented Design

emma
Télécharger la présentation

RPC Remote Procedure Call

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RPCRemoteProcedure Call Dave Hollinger RensselaerPolytechnic Institute Troy, NY

  2. Distributed Program Design Typical Sockets Approach • Communication-Oriented Design • Design protocol first. • Build programs that adhere to the protocol. • Application-Oriented Design • Build application(s). • Divide programs up and add communication protocols. RPC Netprog: RPC Overview

  3. RPCRemote Procedure Call • Call a procedure (subroutine) that is running on another machine. • Issues: • identifying and accessing the remote procedure • parameters • return value Netprog: RPC Overview

  4. Remote Subroutine Client Server blah, blah, blah bar = foo(a,b); blah, blah, blah int foo(int x, int y ) { if (x>100) return(y-2); else if (x>10) return(y-x); else return(x+y); } protocol Netprog: RPC Overview

  5. Sun RPC • There are a number of popular RPC specifications. • Sun RPC (ONC RPC) is widely used. • NFS (Network File System) is RPC based. • Rich set of support tools. Netprog: RPC Overview

  6. ClassicProcedure Call • Call Stack • Parameter Passing • Error and exception • Semantics

  7. Implementing RPC Seems to be complex as we need to go through the network The trick: • Create stub functions to make it appear to the user that the call is local • Stub function contains the function’s interface

  8. client server Stub functions 1. Client calls stub (params on stack) client functions server functions client stub server stub(skeleton) network routines network routines

  9. client server Stub functions 2. Stub marshals params to net message client functions server functions client stub server stub(skeleton) network routines network routines

  10. client server Stub functions 3. Network message sent to server client functions server functions client stub server stub(skeleton) network routines network routines

  11. client server Stub functions 4. Receive message: send to stub client functions server functions client stub server stub(skeleton) network routines network routines

  12. client server Stub functions 5. Unmarshal parameters, call server func client functions server functions client stub server stub(skeleton) network routines network routines

  13. client server Stub functions 6. Return from server function client functions server functions client stub server stub(skeleton) network routines network routines

  14. client server Stub functions 7. Marshal return value and send message client functions server functions client stub server stub(skeleton) network routines network routines

  15. client server Stub functions 8. Transfer message over network client functions server functions client stub server stub(skeleton) network routines network routines

  16. client server Stub functions 9. Receive message: direct to stub client functions server functions client stub server stub(skeleton) network routines network routines

  17. client server Stub functions 10. Unmarshal return, return to client code client functions server functions client stub server stub(skeleton) network routines network routines

  18. RPCL : an example program MESSAGE_PROG { version MESSAGE_VERS { int PRINT_MESSAGE (string) = 1 ; } = 1 ; } = 0x 2000 0001 ;

  19. Procedure Arguments • To reduce the complexity of the interface specification, Sun RPC includes support for a single argument to a remote procedure.* • Typically the single argument is a structure that contains a number of values (the parameters). * Newer versions can handle multiple args. Netprog: RPC Overview

  20. Procedure Identification • Each procedure is identified by: • Hostname (IP Address) • Program identifier (32 bit integer) • Procedure identifier (32 bit integer) • Program Version identifier • for testing and migration • Used also to detect out dated version of a server Netprog: RPC Overview

  21. Procedure Identifiers &Program Version Numbers • Procedure Identifiers usually start at 1 and are numbered sequentially • Version Numbers typically start at 1 and are numbered sequentially. • Service number is coded on 32 bits • Possible user value range : 0x 2000 0000 à 0x 3fff ffff Netprog: RPC Overview

  22. Iterative Server • Sun RPC specifies that at most one remote procedure within a program can be invoked at any given time. • If a 2nd procedure is called, the call blocks until the 1st procedure has completed. Netprog: RPC Overview

  23. Call Semantics • What does it mean to call a local procedure? • the procedure is run exactly one time. • What does it mean to call a remote procedure? • It might not mean "run exactly once"! Netprog: RPC Overview

  24. Remote Call Semantics • To act like a local procedure (exactly one invocation per call) - a reliable transport (TCP) is necessary. • Sun RPC does not support reliable call semantics. • "At Least Once" Semantics • "Zero or More" Semantics Netprog: RPC Overview

  25. Sun RPC Call Semantics • At Least Once Semantics • if we get a response (a return value) • Zero or More Semantics • if we don't hear back from the remote subroutine. Netprog: RPC Overview

  26. Remote Procedure deposit() deposit(DavesAccount,$100) • Always remember that you don't know how many times the remote procedure was run! • The net can duplicate the request (UDP). Netprog: RPC Overview

  27. Network Communication • The actual network communication is nothing new - it's just TCP/IP. • Many RPC implementations are built upon the sockets library. • the RPC library does all the work! • The programmer may select UDP or TCP based on his/her requirements Netprog: RPC Overview

  28. Dynamic Port Mapping • How to determine where the server is waiting requests ? • Servers typically do not use well known protocol ports • Clients know the Program ID (and host IP address). • RPC includes support for looking up the port number of a remote program. Netprog: RPC Overview

  29. The portmapper • Each system which will support RPC servers runs a port mapper server that provides a central registry for RPC services. • Servers tell the port mapper what services they offer. Netprog: RPC Overview

  30. More on the portmapper • Clients ask a remote port mapper for the port number corresponding to Remote Program ID. • The portmapper is itself an RPC server! • The portmapper is available on a well-known port (111). Netprog: RPC Overview

  31. RPCGEN • There is a tool for automating the creation of RPC clients and servers. • The program rpcgen does most of the work for you. • The input to rpcgen is a protocol definition in the form of a list of remote procedures and parameter types. Netprog: RPC Overview

  32. Protocol Definition: simp.x struct operands { int x; int y; }; program SIMP_PROG { version SIMP_VERSION { int ADD(operands) = 1; int SUB(operands) = 2; } = VERSION_NUMBER; } = 555555555; RPC Programming

  33. RPCGEN Protocol Description Input File rpcgen Server skeleton XDR filters header file Client Stubs C Source Code Netprog: RPC Overview

  34. rpcgen Output Files > rpcgen –C foo.x foo_clnt.c (client stubs) foo_svc.c (server main) foo_xdr.c (xdr filters) foo.h (shared header file) Netprog: RPC Overview

  35. client stub compiler client data conv. RPCcompiler headers compiler server data conv. server skeleton RPC compiler in action client code (main) IDL Code you write server functions Code RPC compiler generates

  36. XDR • Powerful paradigm for creation and transfer of complex data structures • XDR provides a service associated with the OSI Presentation Layer. • Common data representation • Library • not part of the O.S. • Easy to port to new architectures • Independence from transport layer XDR

  37. Data Conversion • Asymmetric Data Conversion • client always converts to the server’s data representation. • Symmetric Data Conversion • both client and server convert to/from some standard representation. XDR is Symmetric Data Conversion XDR

  38. Implicit vs. Explicit Typing • Explicit typing • each piece of data includes information about the type • Implicit typing • the sender and receiver must agree on the order and type of all data XDR uses Implicit Typing XDR

  39. XDR Data Types • enumeration • structure • string • fixed length array (1-D) • variable length array (1-D) • union • opaque data • boolean • char • short • int • long • float • double XDR

  40. XDR Programming • XDR libraries are based on a stream paradigm • The process of converting local data to XDR also puts the data in the XDR stream • When extracting an item from a stream, conversion is done to the local representation • Streams can be attached to a file, pipe, socket or memory • Individual data items are added to (removed from) the stream one at a time XDR

  41. Conversion Terminology • Converting from local representation to XDR representation is called Encoding. • Converting from XDR representation to local representation is called Decoding. Sender Receiver XDR ENCODE DECODE XDR

  42. Information for the labs • You are going to experiment : • how to go from a classic procedure call to an RPC • How to run a server and activate clients calls • What is the magic (the work of rpcgen) behind the scene in terms of socket management, connections, errors and fault detection. • Get the initial insights for all the otherparadigms (distributedobject, Java RMI, web services…) work and are handled

  43. Survey • RPC is a powerfulway to program distributed system quiteeasily • It wasinitialy an OS featurethat has been moved to the programmer’s world • Numerousbenefits in terms of transparencies and above all faulttolerance

More Related