25
Practical Issues of RPC CS-4513, D-Term 2007 1 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 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

  • View
    217

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 1

Remote Procedure CallPractical Issues

CS-4513Distributed 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)

Page 2: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 2

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

Page 3: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 3

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/DOCUMENTATION/HTML/AA-Q0R5B-TET1_html/TITLE.html

Page 4: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 4

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

• …

Page 5: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 5

Implementation Model for DCE

Page 6: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 6

Differences for ONCprogram & version #program & version #

rpcgen

Page 7: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 7

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

Page 8: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 8

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

Page 9: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 9

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

Page 10: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 10

Note on XDR(the interface definition language for ONC)

• Much like C

• Exceptions– string type – maps to char *– bool type – maps to bool_t

Page 11: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 11

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

Page 12: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 12

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

Page 13: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 13

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

Page 14: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 14

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

Page 15: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 15

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

Page 16: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 16

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

Page 17: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 17

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

Page 18: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 18

Questions?

Page 19: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 19

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

Page 20: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 20

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

• …

Page 21: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 21

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

• …

Page 22: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 22

Solutions

• Some or all of these things are typically provided in the major distributed object standards

• DCOM, CORBA, etc.

• “Global” registry is central component

Page 23: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 23

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

Page 24: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 24

Reading Assignment

• “Grapevine: An Exercise in Distributed Computing,” Communications of the ACM, April 1982

• PDF link

Page 25: Practical Issues of RPCCS-4513, D-Term 20071 Remote Procedure Call Practical Issues CS-4513 Distributed Computing Systems (Slides include materials from

Practical Issues of RPCCS-4513, D-Term 2007 25

Break