This site best when viewed with a modern standards-compliant browser. We recommend Firefox Get Firefox!.

Linux-HA project logo
Providing Open Source High-Availability Software for Linux and other OSes since 1999.

USA Flag UK Flag

Japanese Flag

Homepage

About Us

Contact Us

Legal Info

How To Contribute

Security Issues

21 December 2007 Heartbeat release 2.1.3 is now out Download it and install it!

11 October 2007 NEW educational HA/DR Blog hosted by Alan Robertson

9 April 2007 Check out the Cool Heartbeat Screencasts: Installation, Intro to the GUI Part of the Heartbeat Education project

Last site update:
2008-05-17 08:16:53

Remote Procedure Call

We use the term Remote Procedure Call here to mean any type of procedure call between one process and another. All of the remote procedure calls we're talking about here (up to now) are all really between processes on the same machine, not across machines.

This greatly simplifies the security aspects of this design, since ClientAuthentication is much simpler when clients are local on the same machine.

Normal (synchronous) remote procedure calls are performed by:

  • Client packaging the arguments up in a big blob
  • Client sends them to the server
  • Server receives the request and unpackages the arguments
  • Server processes the request
  • Server packages up return results into a blob
  • Server sends return results to client

Asynchronous remote procedure calls are performed similarly, but the return result is sent later.

  • Client packaging the arguments up in a big blob
  • Client sends them to the server
  • Server receives the request and unpackages the arguments
  • Server validates the request, assigns it an AsyncRequestId, and queues it for execution

  • Server packages the AsyncRequestId (or error return)

  • Server sends the immediate return result to the client
  • Server performs the request specified by the AsyncRequestId

  • Request completes on the server
  • Server packages up return results into a blob
  • Server sends return results to client as an AsyncEventMessage

  • Client reads AsyncEventMessage to learn the real return result from the request.

The process of "packaging up arguments into a big blob" and doing the unpackaging goes by various names. Common names include marshalling/demarshalling, pickling, or serializing.