Practical Issues of RPCCS-4513, D-Term Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from Operating System Concepts, 7 th ed., by Silbershatz, Galvin, & Gagne, Modern Operating Systems, 2 nd ed., by Tanenbaum, and Distributed Systems: Principles & Paradigms, 2 nd ed. By Tanenbaum and Van Steen)
Practical Issues of RPCCS-4513, D-Term Review Message-oriented communication Connections Establishing a connection with a service Reliable communication via TCP Connection-less communication via UDP Remote Procedure Call Procedural interface between client and service IDL & stub compiler (hides communication details) Hiding data representation differences Restrictions on passing objects by reference
Practical Issues of RPCCS-4513, D-Term Practical RPC Systems DCE (Distributed Computing Environment) Open Software Foundation Basis for Microsoft DCOM Tanenbaum & Van Steen, §4.2.4 Sun’s ONC (Open Network Computing) Very similar to DCE Widely used rpcgen ON/HTML/AA-Q0R5B-TET1_html/TITLE.htmlhttp://h30097.www3.hp.com/docs/base_doc/DOCUMENTATI ON/HTML/AA-Q0R5B-TET1_html/TITLE.html
Practical Issues of RPCCS-4513, D-Term Practical RPC Systems (continued) Java RMI (Remote Method Invocation) java.rmi standard package Java-oriented approach — objects and methods CORBA (Common Object Request Broker Architecture) Standard, multi-language, multi-platform middleware Object-oriented Heavyweight …
Practical Issues of RPCCS-4513, D-Term Implementation Model for DCE
Practical Issues of RPCCS-4513, D-Term Differences for ONC program & version # rpcgen
Practical Issues of RPCCS-4513, D-Term Validating a Remote Service Purpose Avoid binding to wrong service or wrong version DCE Globally unique ID –Generated in template of IDL file Sun ONC Program numbers registered with Sun Version # and procedure # administered locally
Practical Issues of RPCCS-4513, D-Term RPC Binding — Sun ONC Service registers with portmapper on server OS Program # and version # Optional static port # Client Must know host name or IP address clnt_create(host, prog, vers, proto) –I.e., RPC to portmapper of host requesting to bind to prog, vers using protocol proto ( tcp or udp ) (Additional functions for authentication, etc.) Invokes remote functions by name
Practical Issues of RPCCS-4513, D-Term Sun ONC (continued) #include Header file for client and server rpcgen The stub compiler –Compiles interface.x –Produces.h files for client and service; also stubs See also rpcinfo RPC Programming Guide
Practical Issues of RPCCS-4513, D-Term Note on XDR (the interface definition language for ONC) Much like C Exceptions –string type – maps to char * –bool type – maps to bool_t
Practical Issues of RPCCS-4513, D-Term Sun ONC Online tutorial ON/HTML/AA-Q0R5B-TET1_html/TITLE.htmlhttp://h30097.www3.hp.com/docs/base_doc/DOCUMENTATI ON/HTML/AA-Q0R5B-TET1_html/TITLE.html CS-4513 code samples Any other resources you can find
Practical Issues of RPCCS-4513, D-Term Java RMI Based on objects & methods –I.e., an object may be located remotely –Accessed via methods –RMI causes methods to be invoked by RPC Stubs may be local or remote –Subject to security policy
Practical Issues of RPCCS-4513, D-Term Java RMI Binding Remote objects must be registered with RMI registry –May specify a port –Security policy compiled with object Client looks up object via Naming method –Specifies host (& port, if needed) –Remote stubs delivered with lookup, subject to security policy
Practical Issues of RPCCS-4513, D-Term Java Remote Object details Interface must extend java.RMI.Remote Must be public No new methods introduced by java.RMI.Remote Should also extend java.rmi.server.UnicastRemoteObject Replaces some Object class methods for proper operation in distributed environment Must throw java.rmi.RemoteException May impact definition of existing interfaces
Practical Issues of RPCCS-4513, D-Term Java Remote Object details (continued) Compiling object and stubs Object compiled to bytecodes with javac Stubs compiled with rmic RMI registry must be running before remote object can be launched rmiregistry command (part of JDK distribution) Multiple registries possible on different ports Remote object registers itself java.rmi.Naming interface
Practical Issues of RPCCS-4513, D-Term Java Client details Initialize RMI security manager System.setSecurityManager (…) If no security manager, only local stubs may be loaded Client must find and bind to remote object lookup () method in java.RMI.Naming Location of remote object specified in URL style –E.g., “rmi://garden.wpi.edu:1099/ObjectName” Remote stubs loaded by lookup –Per security policy
Practical Issues of RPCCS-4513, D-Term Java RMI CS-4513 examples – – – Uses terms “proxy” and “skeleton” for “client-side stub” and “service-side stub” respectively Identifies issues with SYNCHRONIZED remote objects Tanenbaum & Van Steen §10.3, esp. § Any other resources you can find
Practical Issues of RPCCS-4513, D-Term Questions?
Practical Issues of RPCCS-4513, D-Term Fundamental Issue With Sun ONC and Java RMI, client must know name or address of server machine in order to bind to remote service IP address or remote name (Sometimes) port number I.e., services are bound to server machines
Practical Issues of RPCCS-4513, D-Term Problems Location of remote objects not always known Location of remote objects not always constant Pointers/References to remote services are only useful to fixed servers Distributed & replicated services are difficult, at best Location independence is impossible …
Practical Issues of RPCCS-4513, D-Term Needed Location-independent object registry Any object can register itself Location-independent object naming Name of object does not imply location Distributed, replicated registry If any instance goes down, others can serve Distributed, replicated remote objects Any instance may serve in many cases …
Practical Issues of RPCCS-4513, D-Term Solutions Some or all of these things are typically provided in the major distributed object standards DCOM, CORBA, etc. “Global” registry is central component
Practical Issues of RPCCS-4513, D-Term But … None really get it right for broad spectrum of distributed systems & applications E.g., CORBA Very heavyweight (too cumbersome) Object can live in only one location –Inefficient for very commonly accessed objects –Distributed, replicated object difficult to support
Practical Issues of RPCCS-4513, D-Term Reading Assignment “Grapevine: An Exercise in Distributed Computing,” Communications of the ACM, April 1982 PDF link
Practical Issues of RPCCS-4513, D-Term Break