Internet DRAFT - draft-ibbotson-reliable-messaging-reqts
draft-ibbotson-reliable-messaging-reqts
Network Working Group J. Ibbotson
Internet-Draft R. King
Expires: May 13, 2002 IBM
November 12, 2001
Requirements for reliable message delivery
draft-ibbotson-reliable-messaging-reqts-00.txt
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on May 13, 2002.
Copyright Notice
Copyright (C) The Internet Society (2001). All Rights Reserved.
Abstract
This memo identifies a set of requirements for the reliable delivery
of messages over the Internet. It defines what is meant by reliable
delivery between two software agents and what requirements this
places on an inter-agent protocol to ensure reliable message delivery
between them.
Ibbotson & King Expires May 13, 2002 [Page 1]
Internet-Draft Requirements for reliable message delivery November 2001
1. Reliable delivery of messages
The use of HTTP/1.1 as defined by RFC2616 is standard within the
Internet. In addition to interactions between a browser and a web
server, it is increasingly being used as the protocol for message
exchanges as part of business transactions in both business-to-
consumer and business-to-business scenarios. However, HTTP/1.1 is
not a reliable protocol; the failure or non-operation of a software
component at either end of the network link or failure of the link
itself will result in a client being in doubt as to whether an
interaction completed successfully or not. (The reliability of TCP
[RFC793], over which HTTP runs, does not eliminate the possibility of
connection failure, let alone failures in the client, in the server,
or in any proxies or other intermediaries between the two.) If the
failure occurred after the request was processed by the server, but
before the acknowledgement could reach the client, then the client
must not resend the request, as that would cause duplicate
processing. On the other hand, if the failure occurred before the
server received a complete, intact request, then the client must
resend the request, as otherwise it will be lost.
In a browser-based interaction driven by a human, where most actions
are idempotent, recovery actions may be managed by the human operator
and doubts may be resolved by resubmitting the transaction or
manually performing a query to see if the transaction completed. In
automated, business-to-business interactions, correct recovery
becomes critical and has to be managed by application-level software
which may be part of a distributed business process. Thus, if a
fault occurs during the delivery of a single message or batch of
messages, the client and server must be able to re-synchronise
automatically so that any in-doubt states can be resolved.
The requirements for reliable messaging are:
1.1 Message Delivery
In addition to ensuring that no messages are lost, reliable message
delivery must also ensure that no duplicates are received at the
server. For reliable delivery, exactly-once semantics must be
supported.
1.2 Message Ordering
When a sequence of messages is sent between a client and server, the
order of the messages must be preserved at the server.
Ibbotson & King Expires May 13, 2002 [Page 2]
Internet-Draft Requirements for reliable message delivery November 2001
1.3 Multiple Hops
In addition to requiring reliable message delivery over a single hop,
applications may be connected by a multi-hop environment. Any
single-hop protocol must be capable of operating within a multi-hop
environment where the multiple hops are reduced to cascaded single
hops. It is assumed that each intermediary will store and forward
the message reliably between each hop.
1.4 Compatibility, Migration and Coexistence
A natural evolutionary path must be offered for entities that
currently send and receive requests (i.e., messages) only using HTTP.
The existing network structure, with its firewalls and proxies must
be taken into account. The agents engaged in reliable messaging must
coexist with servers and services that are already in place, so that
both the old and new messaging mechanisms can operate without
interference.
Ibbotson & King Expires May 13, 2002 [Page 3]
Internet-Draft Requirements for reliable message delivery November 2001
2. Operations for reliable delivery
In messaging systems, the terms client and server are rarely used
since a peer to peer relationship between the endpoints is more
appropriate. In this document, a client will be the software agent
that initiates a reliable message delivery. The server will respond
to the client's request. This usage of the terms client and server
is similar to HTTP/1.1.
For reliable delivery of messages between a client and server we
require:
1. A description of the state machines operating at the client and
server.
2. A protocol which allows state information to be moved between the
client and server allowing the state machines to cooperate.
These may be described in an abstract manner as a set of operations
that are required for reliable message delivery to take place between
a client and server.
2.1 Capability Negotiation
The client and server must be aware of each others capabilities to
support reliable delivery. These capabilities govern the way
messages are exchanged between the client and server. They indicate
limits on timeouts, message and batch sizes, and which operations are
permitted for message transmission. For example, some servers may be
configured to only receive messages, so that only messages pushed
from a client will be accepted.
A set of default values can be assigned for the capabilities. A
negotiation operation that allows a client and server to agree on
their delivery capabilities is required before any reliable message
exchange can take place between parties that cannot support the
default values, or that would, for example, show a performance
benefit from other values.
2.2 Message Push
The message push operation allows a client to reliably send a single
or batch of messages to a server. Each batch of messages should be
uniquely identified with a transaction identifier to allow
resynchronization of the delivery in the case of system or network
failure.
Ibbotson & King Expires May 13, 2002 [Page 4]
Internet-Draft Requirements for reliable message delivery November 2001
2.3 Message Pull
The message pull operation allows a client to ask a server to send it
any messages waiting for delivery to applications located at the
client. The response to a message pull operation may be empty if the
server has nothing waiting for delivery to the client or a batch of
one or more messages. The batch of messages returned to the client
is uniquely identified with a transaction identifier.
2.4 Message Exchange
The message exchange operation combines a push and pull into a single
operation. It allows a client to push a batch of messages to the
server and then invites any messages waiting on the server to be
returned to the client. Both outgoing and returning message batches
are uniquely identified with transaction identifiers generated by
their respective sources.
2.5 State Reporting
The state reporting operation allows a client to report to a server
exactly which messages it has received and stored, and to ask the
server to send back similar information about messages the client had
pushed to the server. For example, when a system or network failure
interrupts a message pull operation, the client would report its
current state, thereby allowing the server to determine which
messages had arrived safely at the client. This allows the client to
resynchronize and resend any messages not received by the server due
to the failure. For exactly-once delivery it permits a client to
rollback its state on messages it has sent but (according to the
state resolution) have not been received and stored persistently by
the server.
Ibbotson & King Expires May 13, 2002 [Page 5]
Internet-Draft Requirements for reliable message delivery November 2001
3. Further requirements for reliable delivery
The following set of requirements have also been identified for a
reliable message delivery protocol.
3.1 Relationship to HTTP
A reliable message delivery protocol which operates in an environment
based on internet standards must be defined as a set of
request/response messages as defined by HTTP/1.1.
3.2 Messaging Service URI
The reliable messaging service represented by a particular software
agent must be represented by a URI as defined by RFC2396.
3.3 Units of Work
As soon as a batch of messages is sent, the sender is in doubt as to
its safe arrival. The sender must record these doubts in some kind
of persistent storage, using transactional mechanisms sufficient to
guarantee that failure of the sender, regardless of when, will not
lead to loss or duplication of messages; the receiver has similar
problems. The nature of these mechanisms is beyond the scope of this
protocol. Still, the protocol must take these actions into account,
especially as they relate to communication between sender and
receiver to provide resolution of failures, to determine which, if
any, messages require retransmission. Thus, the protocol must call
for exchange of information on identified units of work or
transactions at appropriate times, and must describe the kinds of
information that must be stored if correct functioning of the
protocol is to be achieved, even if it doesn't specify how those
transactions are actually performed.
3.4 Message Ordering
A sequence of messages sent from one application to another via a
reliable delivery protocol must be received in exactly the same order
as they were sent. To preserve ordering across a network, there must
only be one path for the messages. If there are multiple paths, then
ordering may be lost.
3.5 Session Support
Capability negotiation has sufficient cost that unnecessary
renegotiation should be avoided. However, the vagaries of HTTP
request processing, with the possibility of different TCP/IP
connections being routed to different origin servers, makes reuse
Ibbotson & King Expires May 13, 2002 [Page 6]
Internet-Draft Requirements for reliable message delivery November 2001
difficult. It would be a beneficial option to support the
association of a session identifier with a set of interactions such
that negotiated capabilities would apply to all of them, even across
multiple TCP/IP connections.
3.6 Data Conversion
Data conversion should always be the responsibility of the software
agent that receives the message. In the case of the pull operation,
this will be the client. In the case of the push operation, this
will be the server. The data conversion mechanism will take
advantage of any encoding or content type information provided as
part of the received message.
3.7 Security
A reliable message delivery protocol should take advantage of
underlying security mechanisms such as HTTPS to achieve point-to-
point authentication and privacy for the messages. Such a protocol
should not make provision for end-to-end authentication and privacy
where a message flows over a multi-hop infrastructure. Support for
these security features should be separate to the design of the
reliable delivery protocol.
Ibbotson & King Expires May 13, 2002 [Page 7]
Internet-Draft Requirements for reliable message delivery November 2001
4. Relationship to Other Protocols
SCTP [RFC2960 [1]] is a transmission protocol intended to provide
reliability similar to TCP while overcoming some of TCP's
limitations. Some applications, for example, don't need the ordering
guarantees provided by TCP, while others want greater reliability
through the use of multi-homed server groups. SCTP does not,
however, address problems of recovery that span total server
failures, and does not guarantee freedom from the possibility of the
duplication of application messages.
BEEP [RFC3080 [2]] provides connection-oriented, asynchronous
request/response interactions, but lacks the generality necessary for
arbitrary application messaging. Reliable messaging also requires
consideration of connection failure and use of persistent storage,
which are ignored by BEEP, as it only deals with what goes on within
a single BEEP session, which takes place during a single TCP/IP
connection.
Ibbotson & King Expires May 13, 2002 [Page 8]
Internet-Draft Requirements for reliable message delivery November 2001
References
[1] Stewart, R., "Stream Control Transmission Protocol", RFC 2960,
October 2000.
[2] Rose, M., "The Blocks Extensible Exchange Protocol Core", RFC
3080, March 2001.
Authors' Addresses
John B Ibbotson
IBM UK Ltd
Hursley Park
Winchester SO21 2JN
UK
Phone: +44 (0)1962 815188
Fax: +44 (0)1962 816898
EMail: john_ibbotson@uk.ibm.com
Richard P King
IBM Research
30 Saw Mill River Road
Hawthorne NY 10532
Phone: +1 914 784 7245
EMail: rpk@us.ibm.com
Ibbotson & King Expires May 13, 2002 [Page 9]
Internet-Draft Requirements for reliable message delivery November 2001
Full Copyright Statement
Copyright (C) The Internet Society (2001). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Ibbotson & King Expires May 13, 2002 [Page 10]