Text preview for : 19770711_Data_Structure_Transmission_Protocol_Version_2.pdf part of xerox 19770711 Data Structure Transmission Protocol Version 2 xerox sdd memos_1977 19770711_Data_Structure_Transmission_Protocol_Version_2.pdf



Back to : 19770711_Data_Structure_T | Home

Inter-Office McmonmdlllU

To Distribution Date 11 July 77


From Jim White location Palo Alto


Subject Data Structure Transmission Protocol Organi7:ttion SDD/SD/es
(Version 2)

XEROX
Filed on:



Pteface
This is the fourth in a series of memos [1. 2, 3] aimed at identifying new Mesa facilities
for simplifying the construction of distributed systems. This memo obsoletes its
predecessors by defining Version 2 of a Data StruclUre Transmission Protocol (DSTP)
that facilitates the transmission of Mesa data structures between hosts. This second
iteration provides support for strings, array descriptor~. and pointers. and incorporates
background and motivational material from previous memos.

Thanks are due Will Crowther and Hal Murray, who made themselves available for
numerous discussions, and Jay Israel and Chuck Geschke, who cOlltributed valuable
information on the use of similar techniques within Juniper and SiI.


Outline
The present memo is organized along the following lines:
General Goals
Specific Goals
Scope of the Protocol
Specification of the Protocol
Implications of the Protocol
SpecifiCation of the Package
Conclusions
Appendix A: Byte Stream Procedures
Appendix B: A Slice of a Client Protocol and its Implementation
References



XEr.OX SDD ARCHIVES
I have read and underBtoo~
Pages _________ To _________
Reviewer
----
Date
# of Pages_..-;Ref .. ??.sJ)/)-p26g
Data Structure Transmission Protocol (Version 2) 2


General Goals
A variety of network communication facilities are currently available within the Mesa
programming environment. Depending upon his requirements for generality and efficiency,
the programmer can select from among a number of subroutine packages, each providing a
different grade of service (e.g. raw packet mode, packet stream mode, byte stream mode, and
file transfer mode).

While providing an important spectrum of communication services, all of the existing
facilities require the programmer to manipulate remote objects in ways that are different
and typically more cumbersome than those used to manipulate local objects of the same
type. Local program modules, for example, are accessible by procedure call; to
communicate with a remote module, however, the programmer must construct (say) a packet
stream, encode and transmit a service request to tbe remote module, and await and decode
the remote module's reply. To read a local file, the programmer need only invoke the
appropriate file system primitives; to read a remote file, on the other hand. he must first
transport tbe file to his local machine using the File Transfer Package.

Some of the problems associated with providing uniform access to objects in a distributed
system, especially problems in the area of distributed file systems, are already being tackled
in the Mesa environment. A Page Level Access Protocol, for example, is being developed as
a vehicle for more direct manipulation of remote files. The Mesa compiler is also being
augmented to automatically retrieve from a remote file system any XM files it needs which
aren't availahle locally.

The present memo addresses the uniform access problem in a more general way and
describes a new Mesa facility that greatly simplifies the construction of distributed systems
generally, rather than just aiding in the construction of one particular distributed service
(e.g. a distributed file system). The author's ultimate aim is to extend the application
domain of the Mesa programming system itself to include distributed programs, and so to
reduce the cost of building and maintaining distributed systems.


Specific Goals
Underlying every distributed service is a protocol that specifies, among other things, t.he
content and format of messages exchanged between the local program that requires the
service and the remote program that provides it. Although the interface between consumer
and supplier is thus ultimately message oriented, it is usually advantageolls to interpose an
additional piece of software local to the consumer that provides him with a procedural
interface to the remote service. Doing so both localizes knowledge of the protocol (which
may change from time to time) and makes the service easier and more natural to use.

One important task of the module that implements the procedural interface is to prepare
messages for transmission to the remote system and interpret the messages it receives in
response. To accomplish this task, the module must convert outgoing data structures (e.g.
those that originate as arguments to its public procedures) from their standard internal
representation, dictated by the Mesa compiler, to their standard external representation,
dictated by the protocol. Similarly, it must convert incoming data structures (e.g. those
destined to be returned as results of its public procedures) from their external
representation to their internal one. Because the required formats for even the most
common data types (such as integers and character strings) vary from one protocol to
another, specialized conversion code must be written for each distributed service.

As an initial step toward simplifying the construction of distributed systems in the Tv1esa
environment, this memo defines a standard, service-independent, Data Structure
Transmission Protocol (DSTP) ihat facilitates the transmission of Mesa data structures
between hosts by specifying a standard external representation for each Mesa data type
Data Structure Transmission Protocol (Version 2) 3


(including, of course,. integers and character strings). DSTP is thus a first step toward
extending the domain of the f\1esa type system to include network protocols. DSTP's two
immediate results are, first, to reduce