RPC -- Practical Issues
Download
Report
Transcript RPC -- Practical Issues
Remote Procedure Call
Practical Issues
CS-4513
Distributed Computing Systems
(Slides include materials from Operating System Concepts, 7th ed., by Silbershatz, Galvin, & Gagne,
Modern Operating Systems, 2nd ed., by Tanenbaum, and Distributed Systems: Principles & Paradigms, 2nd
ed. By Tanenbaum and Van Steen)
CS-4513, D-Term 2007
Practical Issues of RPC
1
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
CS-4513, D-Term 2007
Practical Issues of RPC
2
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
• http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATI
ON/HTML/AA-Q0R5B-TET1_html/TITLE.html
CS-4513, D-Term 2007
Practical Issues of RPC
3
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
• …
CS-4513, D-Term 2007
Practical Issues of RPC
4
Implementation Model for DCE
CS-4513, D-Term 2007
Practical Issues of RPC
5
Differences for ONC
program & version #
rpcgen
CS-4513, D-Term 2007
Practical Issues of RPC
6
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
CS-4513, D-Term 2007
Practical Issues of RPC
7
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
CS-4513, D-Term 2007
Practical Issues of RPC
8
Sun ONC (continued)
• #include <rpc/rpc.h>
• 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
CS-4513, D-Term 2007
Practical Issues of RPC
9
Note on XDR
(the interface definition language for ONC)
• Much like C
• Exceptions
– string type – maps to char *
– bool type – maps to bool_t
CS-4513, D-Term 2007
Practical Issues of RPC
10
Sun ONC
• Online tutorial
• http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATI
ON/HTML/AA-Q0R5B-TET1_html/TITLE.html
• CS-4513 code samples
• http://web.cs.wpi.edu/~rek/DCS/D04/SunRPC.html
• http://web.cs.wpi.edu/~goos/Teach/cs4513-d05/
• http://web.cs.wpi.edu/~cs4513/b05/week4-sunrpc.pdf
• Any other resources you can find
CS-4513, D-Term 2007
Practical Issues of RPC
11
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
CS-4513, D-Term 2007
Practical Issues of RPC
12
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
CS-4513, D-Term 2007
Practical Issues of RPC
13
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
CS-4513, D-Term 2007
Practical Issues of RPC
14
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
CS-4513, D-Term 2007
Practical Issues of RPC
15
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
CS-4513, D-Term 2007
Practical Issues of RPC
16
Java RMI
• CS-4513 examples
– http://web.cs.wpi.edu/~cs4513/b05/week4-javarmi.pdf
– http://web.cs.wpi.edu/~goos/Teach/cs4513-d05/
– http://web.cs.wpi.edu/~rek/DCS/D04/Comm_Part2.pdf
• 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. §10.3.4
• Any other resources you can find
CS-4513, D-Term 2007
Practical Issues of RPC
17
Questions?
CS-4513, D-Term 2007
Practical Issues of RPC
18
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
CS-4513, D-Term 2007
Practical Issues of RPC
19
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
• …
CS-4513, D-Term 2007
Practical Issues of RPC
20
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
• …
CS-4513, D-Term 2007
Practical Issues of RPC
21
Solutions
• Some or all of these things are typically
provided in the major distributed object
standards
• DCOM, CORBA, etc.
• “Global” registry is central component
CS-4513, D-Term 2007
Practical Issues of RPC
22
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
CS-4513, D-Term 2007
Practical Issues of RPC
23
Reading Assignment
• “Grapevine: An Exercise in Distributed
Computing,” Communications of the ACM,
April 1982
• PDF link
CS-4513, D-Term 2007
Practical Issues of RPC
24
Break
CS-4513, D-Term 2007
Practical Issues of RPC
25