Dismiss
InnovationQ will be updated on Sunday, Oct. 22, from 10am ET - noon. You may experience brief service interruptions during that time.
Browse Prior Art Database

Chaining of Remote Procedure Calls in Distributed Computer Environment/ Remote Procedure Call

IP.com Disclosure Number: IPCOM000106183D
Original Publication Date: 1993-Oct-01
Included in the Prior Art Database: 2005-Mar-20
Document File: 4 page(s) / 132K

Publishing Venue

IBM

Related People

Lin, D: AUTHOR [+3]

Abstract

The Remote Procedure Call (RPC) is the component of Distributed Computer Environment (DCE) platform that allows an application to use a network service in a way similar to calling a local function. RPC is well suited for implementing Distributed Databases. However, the current RPC functions are not sufficient enough to implement DRDA (Distributed Relational Database Architecture). One of the problems is that DRDA allows commands to be chained together to reduce network overhead and improve performance. But DCE/RPC allows only one Remote Procedure Call at a time. This invention proposes a RPC enhancement so that a number of Remote Procedure Calls can be grouped together. We believe this performance enhancement feature is not only useful for Distributed Database, but also for other client and server applications.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 44% of the total text.

Chaining of Remote Procedure Calls in Distributed Computer Environment/ Remote Procedure Call

      The Remote Procedure Call (RPC) is the component of Distributed
Computer Environment (DCE) platform that allows an application to use
a network service in a way similar to calling a local function.  RPC
is well suited for implementing Distributed Databases.  However, the
current RPC functions are not sufficient enough to implement DRDA
(Distributed Relational Database Architecture).  One of the problems
is that DRDA allows commands to be chained together to reduce network
overhead and improve performance.  But DCE/RPC allows only one Remote
Procedure Call at a time.  This invention proposes a RPC enhancement
so that a number of Remote Procedure Calls can be grouped together.
We believe this performance enhancement feature is not only useful
for Distributed Database, but also for other client and server
applications.

      In order to enhance DCE/RPC to have chaining capability, our
design is two-fold: firstly, enhance IDL compiler semantics to
include a new paradigm -- "group", for which IDL compiler can
generate chaining codes in both client and server stubs; secondly,
design three new APIs in the current DCE/RPC runtime --
rpc_group_mgr, rpc_group_calls_transceive and rpc_group_dispatcher.
These new APIs will be used to manage grouped RPCs in the client and
server stub code.

      The rpc_group_mgr API is responsible for packing/unpacking all
the grouped RPCs' parameters into a group table, which will contain
two parts: IN parameters and OUT parameters.  The IN parameters will
have all the RPC names and their corresponding parameters (all these
parameters are marshalled into data stream buffer).  It is a link
list structure where suitable for various number of chained RPCs.
The OUT parameters are for the return value of each chained RPC.  The
data structure will be similar to IN parameters.  The parameter of
roc_group_mgr consists of a PACK/UNPACK flag, group table, and
variable RPCs (based on the "group" data definition in the IDL file
of the application).  The PACK/UNPACK flag instructs rpc_group_mgr to
invoke marshalling routines for IN parameters or unmarshalling
routines for OUT parameters in the group table.

      The rpc_group_calls_transceive is the new API in the RPC
runtime to handle the client side communication protocol of the
chained RPCs.  It sends all the chained RPCs (i.e. group table) to
the server side and wait for the returned parameters while all RPCs
completed in the server end.  The API will have three parameters:
number for RPCs, group table, and status.  The number of RPCs
indicates how many RPCs are chained in the group table structure.

      The third new API -- rpc_group_dispatcher is responsible, on
the server side to dispatch the chained RPCs to proper local
procedure calls.  It has three parameters, namely the group_num,
group_table, and status for the call.  Based on the g...