RFC 955 UNKNOWN TRANSPORT · DISCUSSION PAPER · REQUEST-REPLY

Transport for Transactions: Towards a transport service for transaction processing applications

A 1985 proposal for the transport service that request-and-reply applications need.

On rfc-editor.org ↗
PUBLISHED
September 1985
AUTHORS
R.T. Braden
STREAM
Legacy
UDP LIMIT ON A SINGLE QUERY OR RESPONSE
548 bytes
TYPICAL TRANSACTION DURATION
Hundreds of milliseconds up to tens of seconds
A SIMPLE TRANSACTION
Two packets, a request and a reply
RANGE OF INTERNET DELAYS
Four decimal orders of magnitude
FIXED TIMEOUT USED BY NAME SERVERS
30 seconds or more
SUGGESTED BOUND ON A NAME SERVER QUERY
2K bytes
DOI
10.17487/RFC0955

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                          R. Braden
Request for Comments: 955                                       UCLA OAC
                                                          September 1985

                    Towards a Transport Service for
                  Transaction Processing Applications


STATUS OF THIS MEMO

   This RFC is concerned with the possible design of one or more new
   protocols for the ARPA-Internet, to support kinds of applications
   which are not well supported at present.  The RFC is intended to spur
   discussion in the Internet research community towards the development
   of new protocols and/or concepts, in order to meet these unmet
   application requirements.  It does not represent a standard, nor even
   a concrete protocol proposal.  Distribution of this memo is
   unlimited.

1.  INTRODUCTION

   The DoD Internet protocol suite includes two alternative transport
   service [1] protocols, TCP and UDP, which provide virtual circuit and
   datagram service, respectively [RFC-793, RFC-768].  These two
   protocols represent points in the space of possible transport service
   attributes which are quite "far apart".  We want to examine an
   important class of applications, those which perform what is often
   called "transaction processing".  We will see that the communication
   needs for these applications fall into the gap "between" TCP and UDP
   -- neither protocol is very appropriate.

   We will then characterize the attributes of a possible new
   transport-level protocol, appropriate for these ill-served
   transaction-processing applications.

   In writing this memo, the author had in mind several assumptions
   about Internet protocol development.

      *  Assumption 1: The members of the Internet research community
         now understand a great deal about protocols, and given a list
         of consistent attributes we can probably generate a reasonable
         protocol to meet that specification.

         This is not to suggest that design of good protocols is easy.
         It does reflect an assumption (perhaps wrong) that the set of
         basic protocol techniques we have invented so far is sufficient
         to give a good solution for any point in the attribute space,
         and that we can forsee (at least in a general way) many of the
         consequences of particular protocol design choices.

Transaction Protocol


      *  Assumption 2: We need to develop appropriate service
         requirements for a "transaction processing protocol".

         The classifications "virtual circuit" and "datagram"
         immediately define in our minds the most important attributes
         of TCP and UDP.  We have no such immediate agreement about the
         services to be provided for transaction processing.  The
         existing and proposed transaction-oriented protocols show a
         number of alternative choices [e.g., Cour81, BiNe84, Coop84,
         Cher85, Crow85, Gurw85, Mill85].

   Many of the ideas discussed here are not new.  For example, Birrell
   and Nelson [BiNe84] and Watson [Wats81] have described
   transport-level protocols appropriate for transactions.  Our purpose
   here is to urge the solution of this problem within the Internet
   protocol family.

2.  TRANSACTION PROCESSING COMMUNICATIONS

   We begin by listing the characteristics of the communication patterns
   typical in "transaction processing" applications.

      *  Unsymmetrical Model

         The two end points of the communication typically take
         different roles, generally called "client" and "server".  This
         leads to an unsymmetrical communication pattern.

         For example, the client always initiates a communication
         sequence or "transaction".  Furthermore, an important subclass
         of applications uses only a simple exchange of messages, a
         "request" to the server followed by a "reply" to the client.

         Other applications may require a continuing exchange of
         messages, a dialog or "conversation".  For example, a request
         to read a file from a file server might result in a series of
         messages, one per file block, in reply. More complex patterns
         may occur.

      *  Simplex Transfers

         Regardless of the pattern, it always consists of a series of
         SIMPLEX data transfers; at no time is it necessary to send data
         in both directions simultaneously.

Transaction Protocol


      *  Short Duration

         Transaction communication sequences generally have short
         duration, typically 100's of milliseconds up to 10's of
         seconds, but never hours.

      *  Low Delay

         Some applications require minimal communication delay.

      *  Few Data Packets

         In many applications, the data to be sent can be compressed
         into one or a few IP packets.  Applications which have been
         designed with LAN's in mind are typically very careful to
         minimize the number of data packets for each request/reply
         sequence.

      *  Message Orientation

         The natural unit of data which is passed in a transaction is an
         entire message ("record"), not a stream of bytes.

3.  EXAMPLE: NAME SERVERS

   To focus our ideas, we will now discuss several particular types of
   distributed applications which are of pressing concern to members of
   the Internet research community, and which require
   transaction-oriented communication.

   First, consider the name server/name resolver system [RFC-882,
   RFC-883] which is currently being introduced into the (research)
   Internet.  Name servers must use TCP and/or UDP as their transport
   protocol.  TCP is appropriate for the bulk transfers needed to update
   a name server's data base.  For this case, reliability is essential,
   and virtual-circuit setup overhead is negligible compared to the data
   transfer itself.  However, the choice of a transport protocol for the
   transaction traffic -- queries and responses -- is problematic.

      *  TCP would provide reliable and flow-controlled transfer of
         arbitrary-sized queries and responses.  However, TCP exacts a
         high cost as a result of its circuit setup and teardown phases.

      *  UDP avoids the overhead of TCP connection setup.  However, UDP
         has two potentially-serious problems -- (1) unreliable
         communication, so that packets may be lost, duplicated, and/or

Transaction Protocol


         reordered; and (2) the limitation of a data object
         (query/response) to the 548-byte maximum in a single UDP
         packet.

   At present, name servers are being operated using UDP for transaction
   communication.  Note that name server requests have a special
   property, idempotency; as a result, lost, duplicated, or reordered
   queries do not prevent the name-server system from working.  This
   would seem to favor the use of UDP.

   However, it seems quite likely that the defects of UDP will make it
   unusable for an increasing fraction of queries.

      *  The average size of individual replies will certainly increase,
         as the more esoteric mail lookup features are used, as the host
         population explodes (resulting in a logarithmic increase in
         domain name sizes), and as the number of alternate acceptable
         answers increases.  As a result, a single response will more
         often overflow a single UDP packet.

      *  The average end-to-end reliability will decrease as some of the
         flakier paths of the Internet are brought into use by name
         resolvers.

         This will lead to a serious problem of choosing an appropriate
         retransmission timeout.  A name resolver using UDP cannot
         distinguish packet loss in the Internet from queueing delay in
         the server.  As a result, name servers we have seen have chosen
         long fixed timeouts (e.g., 30 seconds or more).  This will
         result in long delays in name resolution when packets are lost.

         One might think that delays in name resolution might not be an
         issue since most name lookups are done by a mailer daemon.
         However, ARPANET experience with user mail interfaces has shown
         that it is always desirable to verify the correctness of each
         host name as the user enters the "To:" and "CC:" addresses for
         a message. Hence, delays due to lost UDP packets will be
         directly visible to users.

   More generally, the use of UDP violates sound communication system
   design in two important ways:

      *  The name resolver/server applications have to provide timeouts
         and retransmissions to protect against "errors" (losses) in the
         communication system.  This certainly violates network
         transparency, and requires the application to make decisions
         for which it is not well-equipped.

Transaction Protocol


         As a general design principle, it seems that (Inter-) network
         properties, especially bad properties, ought to a large extent
         to be hidden below the transport-service boundary [2].

      *  The name resolver/server applications must know the maximum
         size of a UDP datagram.

         It is clearly wrong for an application program to contain
         knowledge of the number 576 or 548!  This does not imply that
         there cannot be a limitation on the size of a message, but any
         such limitation should be imposed by the particular
         application-level protocol, not the transport or internetwork
         level.

   It seems that the TCP/UDP choice for name servers presents an ugly
   dilemma.  We suggest that the solution should be a new
   transaction-oriented transport protocol with the following features:

      *  Reliable ("at-least-once") Delivery of Data;

      *  No Explicit Connection Setup or Teardown Phases;

      *  Fragmentation and Reassembly of Messages;

      *  Minimal Idle State in both Client and Server.

4.  ANOTHER EXAMPLE: DISTRIBUTED OPERATING SYSTEMS

   Distributed operating systems represent another potential application
   for a transaction-oriented transport service.  A number of examples
   of distributed operating systems have been built using high-speed
   local area networks (LAN's) for communication (e.g, Cronus, Locus,
   V-System).  Typically, these systems use private communication
   protocols above the network layer, and the private transport-level
   protocol is carefully designed to minimize latency across the LAN.
   They make use of the inherent reliability of the LAN and of simple
   transactions using single-packet exchanges.

   Recently there have been efforts to extend these systems to operate
   across the Internet [Cher85, Shel85].  Since these are not "open"
   systems, there is no requirement that they use a standard transport
   protocol. However, the availability of a suitable transport protocol
   for transactions could considerably simplify development of future
   distributed systems.

   The essential requirement here seems to be packet economy.  The same

Transaction Protocol


   minimal two-packet exchange used over the LAN should be possible
   across the Internet.  This leads to two requirements for supporting
   distributed operating systems:

      *  No Explicit Connection Setup or Teardown Phases;

      *  Implicit ("piggy-backed") Acknowledgments Whenever Possible.

         This implies that the response packet will serve as an implicit
         acknowledgment to the request packet (when timing makes this
         possible).  Similarly, a new request (for the same pair of
         addressable entities) would implicitly acknowledge the previous
         response, if it came soon enough.

   The nature of the application imposes two other requirements:

      *  Reliable ("at-most-once"), Ordered Delivery

         However, it should be possible to relax the reliability to take
         advantage of special cases like an idempotent request.

      *  Multicast Capability

         The transport service should mesh cleanly with the proposed
         Internet multicast facility, using host groups [ChDe85].

5.  OBJECTIVES FOR A PROTOCOL

   We believe that it is possible to design a new transport protocol for
   the Internet which is suitable for a wide variety of
   transaction-oriented applications.  Such a transport protocol would
   have the following attributes:

      *  Reliable Delivery

         Data will be delivered reliably, i.e., exactly once, or the
         sender will be informed.  The protocol must be able to handle
         loss, duplication, and reordering of request and response
         packets.  In particular, old duplicate request packets must not
         cause erroneous actions.

         It should also be possible for the application programs to
         request that the reliability be relaxed for particular
         transactions.  This would allow communication economies in the
         case of idempotent requests or of notification without reply.

Transaction Protocol


      *  Minimum Number of Packets in Simple Cases

         In the simplest case (small messages, no packet losses, and the
         interval between requests and replies between the same pair of
         addressable entities shorter than applicable timeouts), a
         simple two-packet exchange should result.

      *  No Explicit Connection Setup or Teardown Phases

         The protocol will not create virtual circuits, but will provide
         what is sometimes (confusingly) called "reliable datagram"
         service.

         However, in order to provide a minimum two-packet exchange,
         there must be some implicit state or "soft" virtual circuit
         between a pair of addressable entities. In recent discussions
         this has been dubbed a "conversation", to distinguish it from a
         connection.

      *  Minimal Idle State

         When a server is not processing a transaction, there will be no
         state kept (except enough to recognize old duplicate packets
         and to suppress unneeded ACK packets).

      *  Fragmentation/Reassembly of Large Messages

         There is a range of possible objectives here. The minimum
         requirement is that the application not have to know the number
         576, 548, etc. For example, each application might establish
         its own "natural" upper limit on the size of a message, and
         always provide a buffer of that size [3].

         At the other extreme, the protocol might allow very large
         messages (e.g., a megabyte or more).  In this case, the
         proposed protocol would, in the large-message limit, be
         performing the bulk data transfer function of TCP.  It would be
         interesting to know whether this is possible, although it is
         not necessarily a requirement.

         The introduction of multi-packet messages leads to the complex
         issues of window sizes and flow control.  The challenge is to
         handle these efficiently in the absence of connection setup.

      *  Message Orientation

Transaction Protocol


         The basic unit of communication will be an entire message, not
         a stream of bytes.  If a message has to be segmented, it will
         be delivered in units of segments or buffers, not bytes.

      *  Multicast Capability

   Based on this discussion, we can suggest some of the key issues and
   problems in design of this protocol.

      *  Choice of Addressable Entity

         What will be the addressable entity?  It must be unique in
         space; must it be unique in time (even across system crashes) ?

      *  Timeout Dynamics

         Timeouts must be the key to operation of this protocol.
         Experience with TCP has shown the need for dynamic selection of
         an appropriate timeout, since Internet delays range over four
         decimal orders of magnitude.

         However, the absence of connection setup and the
         typically-short duration of a single interaction seem to
         preclude the dynamic measurement of delays.

      *  Multi-Packet Messages

         How can flow control be provided for multi-packet messages, to
         provide reasonable throughput over long-delay paths without
         overrun with short-delay paths, when there is no virtual
         circuit setup?

      *  Implementation Efficiency

         The protocol should lend itself to efficient (which probably
         implies simple) implementations, so that hosts will be willing
         to use it over LAN's as well as for general Internet
         communication.

   We believe further study is needed on these questions.

   The reader may wonder: how is the proposed protocol related to an RPC
   (Remote Procedure Call) facility?  The intent is that RPC facilities
   and message-passing IPC facilities will be built on top of the
   proposed transport layer.  These higher-level mechanisms will need to
   address a number of additional issues, which are not relevant to the
   communication substrate:

Transaction Protocol


      1.  Application Interface

         This includes binding and stub generators.

      2.  Structured Data Encoding

      3.  Server Location and Binding

      4.  Authentication and Access Control

6.  CONCLUSION

   Distributed processing and distributed data bases will underlie many
   of the future computer system research projects and applications
   based upon the Internet.  As a result, transaction-based
   communication will be an increasingly important activity on the
   Internet.  We claim that there is a pressing need for an appropriate
   transport protocol for transaction processing.  In this memo, we have
   given examples to support this claim, and have outlined the service
   which such a new transport protocol would provide.

   This memo is based upon discussions within the New End-to-End
   Protocols taskforce, and it is a pleasure to acknowledge the
   participation and sagacity of the members of that group.  I want to
   thank Dave Clark, an ex officio taskforce member, for his
   contribution to these discussions, and Robert Cole for very helpful
   suggestions.

NOTES:

   [1]  For the purposes of this RFC, in fact, the reader may consider
        "transport service" to be defined as that protocol layer which
        contains TCP and UDP, as in Figure 1 of RFC-791.  Alternatively,
        we may use the ISO definition -- the transport service is the
        lowest layer providing end-to-end service which is essentially
        independent of the characteristics of the particular (Inter-)
        network used to support the communication.

   [2]  This idea is implicit in the ISO definition of a transport
        service.

   [3]  It would be reasonable for the name server definition to specify
        an upper bound on the size of a single query or response; e.g.,
        2K bytes.  This would imply (large) limits on the number of RR's
        that could be returned per response. If that limit is exceeded,
        we are doing something wrong!

Transaction Protocol


REFERENCES

   BiNe84   Birrell, Andrew D. and Nelson, Bruce Jay, "Implementing
            Remote Procedure Calls". ACM TOCS, Vol. 2, No. 1, February
            1984.

   ChDe85   Cheriton, David R. and Deering, Steven, "Host Groups: a
            Multicast Extension for Datagram Networks".  To be presented
            to 9th Data Communication Symposium.

   Cher85   Cheriton, David R., "V Message Transaction Protocol".
            Private communication, July 1985.

   Cour81   Xerox Corp., "Courier: The Remote Procedure Call Protocol".
            XSIS 038112, Xerox Corp., Stamford, Conn., December 1981.

   Coop84   Cooper, Eric C., "Circus: a Replicated Procedure Call
            Facility".  Proc. 4th Symposium on Reliability in
            Distributed Software and Database Systems, October 1984.

   Crow85   Crowcroft, Jon, "A Sequential Exchange Protocol".  Internal
            Note 1688, Computer Science Department, University College
            London, June 1985.

   Gurw85   Gurwitz, Robert F., "Object Oriented Interprocess
            Communication in the Internet".  Private communication,
            April 1985.

   Mill85   Miller, Trudy, "Internet Reliable Transaction Protocol --
            Functional and Interface Specification".  RFC-938, February
            1985.

   Shel85   Sheltzer, Alan B. , "Network Transparency in an Internetwork
            Environment", PhD Thesis, UCLA Department of Computer
            Science, July 1985.

   Wats81   Watson, Richard W., "Timer-based Mechanisms in Reliable
            Transport Protocol Connection Management".  Computer
            Networks, Vol. 5, pp47-56, 1981 (also distributed as
            IEN-193).

ISO Plain Language

On this page
PROBLEMThe Internet had two transport protocols. TCP is reliable but charges for setting up a connection, which is wasteful for a single short question. UDP avoids that cost but loses messages and caps a message at 548 bytes, leaving the application to handle both.
MECHANISMThe RFC describes the traffic pattern of transaction processing applications, then lists the attributes a third transport protocol would need: reliable delivery, no connection setup, fragmentation and reassembly of messages, and minimal state when idle.
WHY IT FADEDThe document is a discussion paper and says so: it is not a standard, nor even a concrete protocol proposal. It was intended to spur discussion in the research community.

§1Why a Third Transport Protocol

The DoD Internet protocol suite includes two alternative transport service protocols, TCP and UDP, which provide virtual circuit and datagram service respectively. The RFC observes that these two represent points in the space of possible transport service attributes which are quite far apart. The document sets out to examine an important class of applications, those that perform what is often called transaction processing, and shows that their communication needs fall into the gap between TCP and UDP, so that neither protocol is very appropriate.

The status of the memo is stated at the top and is unusual for an RFC. It is concerned with the possible design of one or more new protocols for the ARPA-Internet, to support kinds of applications which are not well supported at present. It is intended to spur discussion in the Internet research community towards the development of new protocols or concepts, and it does not represent a standard, nor even a concrete protocol proposal.

Two assumptions underpin the work. The first is that the members of the Internet research community now understand a great deal about protocols, and that given a list of consistent attributes they can probably generate a reasonable protocol to meet that specification. The author is careful to add that this is not to suggest that designing good protocols is easy, and that it reflects an assumption, perhaps wrong, that the basic protocol techniques invented so far are sufficient to give a good solution for any point in the attribute space. The second assumption is that appropriate service requirements for a transaction processing protocol need to be developed, because the classifications of virtual circuit and datagram immediately define the most important attributes of TCP and UDP in our minds, while there is no such immediate agreement about the services to be provided for transaction processing. The author also notes that many of the ideas discussed are not new, and that the purpose is to urge the solution of this problem within the Internet protocol family.

TCP and UDP sit at opposite ends of the range of possible transport services. A program that asks a question and waits for the answer needs something in between, and this paper argues that the Internet should have it. The document is a discussion paper: it lists requirements rather than proposing a protocol.

THE TWO EXISTING TRANSPORT SERVICES AND WHAT TRANSACTIONS WANT
AttributeTCPUDPWanted for transactions
ConnectionSetup and teardown requiredNoneNone
DeliveryReliable and flow-controlledBest effortReliable, with the option to relax it
Message sizeArbitrary548 bytes per datagramLarge messages fragmented and reassembled
Unit of dataA stream of bytesA datagramA whole message

§2What Transaction Traffic Looks Like

The RFC begins by listing the characteristics of the communication patterns typical in transaction processing applications.

They are unsymmetrical: the two end points typically take different roles, generally called client and server. The client always initiates a communication sequence or transaction, and an important subclass of applications uses only a simple exchange of messages, a request to the server followed by a reply to the client. Other applications need a continuing exchange, a dialog or conversation; a request to read a file from a file server might result in a series of messages, one per file block, in reply, and more complex patterns may occur.

Regardless of the pattern, it always consists of a series of simplex data transfers: at no time is it necessary to send data in both directions simultaneously. The sequences generally have short duration, typically hundreds of milliseconds up to tens of seconds, but never hours. Some applications require minimal communication delay.

In many applications the data to be sent can be compressed into one or a few IP packets, and applications designed with local area networks in mind are typically very careful to minimise the number of data packets in each request and reply sequence. Finally the communication is message oriented: the natural unit of data passed in a transaction is an entire message or record, not a stream of bytes.

Transaction traffic has a shape. One side asks, the other answers, and they never need to talk at the same time. Each exchange is over in a fraction of a second, the request and the answer each fit in a packet or two, and the unit of data is a whole message rather than a trickle of bytes.

THE CHARACTERISTICS OF TRANSACTION TRAFFIC
  • UnsymmetricalThe client always starts. The usual pattern is one request and one reply, though some applications need a continuing exchange of messages.
  • SimplexThe traffic is a series of one-way transfers. There is never a need to send data in both directions at once.
  • ShortSequences typically last hundreds of milliseconds up to tens of seconds, but never hours.
  • Low delaySome applications need the communication delay to be as small as possible.
  • Few packetsThe data often fits in one or a few IP packets, and applications built for local networks are careful to keep the packet count down.
  • Message orientedThe natural unit of data is a whole message or record, not a stream of bytes.

§3The Name Server Dilemma

The RFC works the problem out in a concrete case: the name server and name resolver system then being introduced into the research Internet. Name servers must use TCP or UDP as their transport protocol. TCP is appropriate for the bulk transfers needed to update a name server's database, where reliability is essential and the virtual circuit setup overhead is negligible compared with the data transfer itself. For the transaction traffic, the queries and responses, the choice is problematic. TCP would provide reliable and flow-controlled transfer of arbitrary-sized queries and responses, but it exacts a high cost as a result of its circuit setup and teardown phases. UDP avoids the overhead of TCP connection setup, but it has two potentially serious problems: unreliable communication, so that packets may be lost, duplicated or reordered, and a limitation of a data object to the 548-byte maximum in a single UDP packet.

At present, name servers were being operated using UDP for transaction communication, and name server requests have the special property of idempotency, so that lost, duplicated or reordered queries do not prevent the system from working. That favours UDP. However, the author argues that the defects of UDP will make it unusable for an increasing fraction of queries. The average size of individual replies will increase as more esoteric mail lookup features are used, as the host population explodes, which results in a logarithmic increase in domain name sizes, and as the number of alternate acceptable answers increases, so a single response will more often overflow a single UDP packet. The average end-to-end reliability will decrease as some of the flakier paths of the Internet are brought into use by name resolvers.

That leads to a serious problem of choosing an appropriate retransmission timeout. A name resolver using UDP cannot distinguish packet loss in the Internet from queueing delay in the server, and so name servers seen by the author had chosen long fixed timeouts, 30 seconds or more, which will result in long delays in name resolution when packets are lost. The author notes that one might think delays in name resolution might not be an issue since most name lookups are done by a mailer daemon, but that ARPANET experience with user mail interfaces has shown it is always desirable to verify the correctness of each host name as the user enters the To and Cc addresses of a message, so delays will be directly visible to users.

More generally, the RFC says that the use of UDP violates sound communication system design in two important ways. The name resolver and server applications have to provide timeouts and retransmissions to protect against losses, which certainly violates network transparency and requires the application to make decisions for which it is not well equipped; as a general design principle, network properties, especially bad ones, ought to a large extent to be hidden below the transport service boundary. And the applications must know the maximum size of a UDP datagram: it is clearly wrong for an application program to contain knowledge of the number 576 or 548. The author adds that this does not imply there cannot be a limitation on the size of a message, but that any such limitation should be imposed by the application-level protocol rather than the transport or internetwork level.

From this the RFC suggests the solution should be a new transaction-oriented transport protocol with reliable, at-least-once, delivery of data; no explicit connection setup or teardown phases; fragmentation and reassembly of messages; and minimal idle state in both client and server.

Name lookups show the squeeze. TCP would work but charges for a connection each time, and UDP is cheap but can lose a reply, and the resolver cannot tell a lost packet from a slow server, so it waits a long time before trying again. The RFC argues that an application should not have to know the maximum size of a datagram, and that the network's bad behaviour should be handled below the transport layer.

§4Distributed Operating Systems

Distributed operating systems represent another potential application. A number of examples have been built using high speed local area networks for communication, such as Cronus, Locus and V-System. Typically these systems use private communication protocols above the network layer, and the private transport-level protocol is carefully designed to minimise latency across the local network. They make use of the inherent reliability of the local network and of simple transactions using single-packet exchanges.

Recently there have been efforts to extend these systems to operate across the Internet. Since these are not open systems, there is no requirement that they use a standard transport protocol; however, the availability of a suitable transport protocol for transactions could considerably simplify the development of future distributed systems.

The essential requirement here seems to be packet economy: the same minimal two-packet exchange used over the local network should be possible across the Internet. This leads to two requirements for supporting distributed operating systems. There should be no explicit connection setup or teardown phases, and there should be implicit, or piggy-backed, acknowledgements whenever possible. The second of these implies that the response packet will serve as an implicit acknowledgement to the request packet when timing makes this possible, and similarly a new request for the same pair of addressable entities would implicitly acknowledge the previous response, if it came soon enough.

The nature of the application imposes two other requirements: reliable, at-most-once, ordered delivery, although it should be possible to relax the reliability to take advantage of special cases such as an idempotent request; and multicast capability, so that the transport service meshes cleanly with the proposed Internet multicast facility, using host groups.

Systems built on a local network can afford two packets for a request and a reply, and they rely on the network to be reliable. The same has to work across the Internet. That means no connection to set up, and no separate acknowledgement packets: the reply acknowledges the question, and the next question acknowledges the reply.

§5What Such a Protocol Would Provide

The RFC believes it is possible to design a new transport protocol for the Internet suitable for a wide variety of transaction-oriented applications, with the following attributes.

Reliable delivery. Data will be delivered reliably, that is exactly once, or the sender will be informed. The protocol must handle loss, duplication and reordering of request and response packets, and in particular old duplicate request packets must not cause erroneous actions. It should also be possible for application programs to request that the reliability be relaxed for particular transactions, allowing communication economies in the case of idempotent requests or of notification without reply.

Minimum number of packets in simple cases. In the simplest case, with small messages, no packet losses and the interval between requests and replies shorter than the applicable timeouts, a simple two-packet exchange should result.

No explicit connection setup or teardown phases. The protocol will not create virtual circuits, but will provide what is sometimes, confusingly, called reliable datagram service. However, in order to provide a minimum two-packet exchange there must be some implicit state, or soft virtual circuit, between a pair of addressable entities, which in recent discussions has been dubbed a conversation to distinguish it from a connection.

Minimal idle state. When a server is not processing a transaction there will be no state kept, except enough to recognise old duplicate packets and to suppress unneeded acknowledgement packets.

Fragmentation and reassembly of large messages. There is a range of possible objectives here. The minimum requirement is that the application not have to know the number 576, 548 and so on; each application might establish its own natural upper limit on the size of a message and always provide a buffer of that size. At the other extreme the protocol might allow very large messages, a megabyte or more, in which case it would in the large-message limit be performing the bulk data transfer function of TCP; the author says it would be interesting to know whether this is possible, although it is not necessarily a requirement. The introduction of multi-packet messages leads to the complex issues of window sizes and flow control, and the challenge is to handle these efficiently in the absence of connection setup.

Message orientation and multicast capability. The basic unit of communication will be an entire message, not a stream of bytes, and if a message has to be segmented it will be delivered in units of segments or buffers, not bytes. The service should also support multicast.

The RFC then names the key issues and problems in the design of such a protocol. The first is the choice of addressable entity: what will it be? It must be unique in space, and must it be unique in time, even across system crashes? The second is timeout dynamics: timeouts must be key to the operation of the protocol, and experience with TCP has shown the need for dynamic selection of an appropriate timeout, since Internet delays range over four decimal orders of magnitude; however, the absence of connection setup and the typically short duration of a single interaction seem to preclude the dynamic measurement of delays. The third is multi-packet messages: how can flow control be provided without a virtual circuit setup, to give reasonable throughput over long-delay paths without overrunning short-delay paths? The fourth is implementation efficiency: the protocol should lend itself to efficient, which probably implies simple, implementations, so that hosts will be willing to use it over local area networks as well as for general Internet communication. The author concludes that further study is needed on these questions.

The protocol would deliver each message exactly once or tell the sender it failed, with no connection to set up and almost nothing remembered between transactions. Large messages would be broken up and put back together without the application needing to know a maximum size. The hard parts it leaves open are choosing a timeout, handling flow control without a connection, and keeping the implementation simple enough that people will use it.

THE ATTRIBUTES THE PROPOSED PROTOCOL WOULD HAVE
  • Reliable deliveryDelivered exactly once, or the sender is told. Loss, duplication and reordering are handled, and an old duplicate must not cause an erroneous action.
  • Two packets in the simple caseA small message with no losses should cost one request packet and one reply packet.
  • No connection setupNo virtual circuit is created, but an implicit soft circuit, called a conversation, keeps the two ends in step.
  • Minimal idle stateWhen a server is idle it keeps nothing, except enough to spot old duplicates and to suppress unneeded acknowledgements.
  • Fragmentation and reassemblyThe application never has to know a maximum message size, and a very large message might even be allowed.
  • Message oriented, with multicastThe unit of communication is a whole message, and the service should fit with host-group multicast.

§6Conclusion and Relation to RPC

The reader may wonder how the proposed protocol relates to a remote procedure call facility. The intent is that RPC facilities and message-passing interprocess communication facilities will be built on top of the proposed transport layer. These higher-level mechanisms will need to address a number of additional issues which are not relevant to the communication substrate: the application interface, including binding and stub generators; structured data encoding; server location and binding; and authentication and access control.

The conclusion is that distributed processing and distributed data bases will underlie many of the future computer system research projects and applications based upon the Internet, so that transaction-based communication will be an increasingly important activity on the Internet. The author claims a pressing need for an appropriate transport protocol for transaction processing, and states that the memo has given examples to support this claim and outlined the service which such a new transport protocol would provide. The document is based on discussions within the New End-to-End Protocols taskforce.

The proposal stops at the transport layer. Remote procedure calls and other ways of talking to a program on another machine would sit on top of it, and would have to solve their own problems of encoding, finding the server and checking who is asking. The closing argument is that more and more applications will run across the Internet, so the way they ask each other questions needs its own place in the protocol suite.

§7References

[RFC-938]RFC 938Miller, T., "Internet Reliable Transaction Protocol -- Functional and Interface Specification", RFC 938, February 1985.February 1985
[BiNe84]Birrell, A. D., and B. J. Nelson, "Implementing Remote Procedure Calls", ACM TOCS, Vol. 2, No. 1, February 1984.
[Wats81]Watson, R. W., "Timer-based Mechanisms in Reliable Transport Protocol Connection Management", Computer Networks, Vol. 5, pp. 47-56, 1981.
[ChDe85]Cheriton, D. R., and S. Deering, "Host Groups: a Multicast Extension for Datagram Networks", to be presented to the 9th Data Communication Symposium.