Internet DRAFT - draft-ietf-rserpool-tcpmapping
draft-ietf-rserpool-tcpmapping
Network Working Group P. Lei
Internet-Draft Cisco Systems, Inc.
Expires: April 9, 2006 P. Conrad
University of Delaware
October 6, 2005
TCP Mapping for Reliable Server Pooling Enhanced Mode
draft-ietf-rserpool-tcpmapping-03.txt
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
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 April 9, 2006.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
This memo defines the shim protocol that maps the requirements of the
ASAP protocol [5] to the capabilities of the TCP protocol [3]. In
particular, this shim protocol adds the following capabilties that
are required by ASAP, but not provided by TCP: (1) message
orientation, (2) heartbeat messages, (3) multiple streams, and (4)
undelivered message retrieval (if provided).
Lei & Conrad Expires April 9, 2006 [Page 1]
Internet-Draft RSerPool Mapping for TCP October 2005
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Brief overview of RSerPool . . . . . . . . . . . . . . . . 3
1.2. Role of the TCP Mapping Protocol . . . . . . . . . . . . . 3
1.3. Consistency of Service . . . . . . . . . . . . . . . . . . 5
2. Conventions Used In This Document . . . . . . . . . . . . . . 6
3. Packet Format . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1. Basic Chunk Format . . . . . . . . . . . . . . . . . . . . 6
3.2. DATA Chunk . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3. INIT Chunk . . . . . . . . . . . . . . . . . . . . . . . . 11
3.4. ACK Chunk . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5. HEARTBEAT Chunk . . . . . . . . . . . . . . . . . . . . . 14
3.6. HEARTBEAT ACK Chunk . . . . . . . . . . . . . . . . . . . 15
4. Protocol Operations . . . . . . . . . . . . . . . . . . . . . 16
5. Security Considerations . . . . . . . . . . . . . . . . . . . 17
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 17
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 18
Intellectual Property and Copyright Statements . . . . . . . . . . 19
Lei & Conrad Expires April 9, 2006 [Page 2]
Internet-Draft RSerPool Mapping for TCP October 2005
1. Introduction
This memo defines the shim protocol that maps the requirements of the
ASAP protocol [5] to the capabilities of the TCP protocol [3]. See
[6] for details of these mapping requirements.
1.1. Brief overview of RSerPool
The RSerPool framework is designed to provide high availability for
client/server applications. Servers (called "pool elements" or
"PEs") are grouped into "pools". Each pool is named by a "pool
handle", which is simply an octet string that identifies the pool.
PEs join or leave a pool by registering and deregistering with an
RSerPool nameserver (called an "ENRP server", after the ENRP protocol
[8] that is used to share information among RSerPool nameservers).
Clients (called "pool users" or "PUs") that want to obtain service
contact the ENRP server; the PU provides a pool handle, and the ENRP
server returns a list of available servers. Associated with each
server is a policy value; the PU then uses a "pool element selection
policy" (such as round robin, or least used) to determine which of
the PEs to contact.
The ASAP protocol [5] is used to communicate between the PU and the
ENRP server, and between the PE and ENRP server, while the ENRP
protocol [8] is used to communicate between and among RSerPool ENRP
nameservers.
The RSerPool services framework provides two distinct channels,
control and data, for delivery of RSerPool control messages and
application layer data messages. Mappings provide the adaptions of
the ASAP services to the specific transport protocols.
1.2. Role of the TCP Mapping Protocol
The actual application-specific communication between the PU and PE
is defined by the application layer protocol, and does not use the
ASAP protocol, per se. However, when failover services (such as
forwarding of undelivered/unacknowledged messages) are desired by the
application, all communication between a PU and a PE takes place
through services provided by RSerPool, and more specifically, by the
ASAP entity on the PU or PE. Furthermore, in order for the RSerPool
framework to provide a consistent set of services for both
application-specific data and RSerPool messages, this transport
service must follow a particular model. This model includes features
that are present in SCTP, but are lacking in TCP. Specifically,
these are:
Lei & Conrad Expires April 9, 2006 [Page 3]
Internet-Draft RSerPool Mapping for TCP October 2005
(1) Message Orientation. Messages must be framed within the TCP byte
stream to allow for undelivered message retrieval (see below), and
so that ASAP transport services can be consistent between SCTP and
TCP.
(2) Heartbeat Messages. Heartbeats are needed so that a failed
connection can be detected in a timely manner, even if that
connection is idle. The "keepalive" mechanism provided in some
TCP implementations (but not a standard feature of the protocol;
see RFC1122) is not sufficient for this purpose.
(3) Retreival of Undelivered Messages. A PU can request that the ASAP
layer detects when the transport layer association/connection
between that PU and some PE has failed, and automatically failover
to a new PE. In this case, it is necessary for the ASAP layer to
determine which messages were not successfully delivered to the
PE, retrieve them from the transport layer below, and resend them
to the new PE. SCTP provides the RETRIEVE_UNSENT primitive
(Section 10.1, item (E) of RFC2960) to enable this retrieval. TCP
has no such facility.
To provide this capability over TCP, the mapping protocol provides
another layer of acknowledgements on top of TCP; these acks are
sent only when a message is actually delivered to the end system
application (as opposed to when the message is handed up from the
IP layer to the TCP layer). The sending side buffers messages
until this acknowledgement is received, so that in the event of
failover, these messages can be retrieved by the ASAP entity, and
resent to the new PE.
This feature is optional and is NOT required. However, an
appropriate error code must be returned to the upper layer if this
feature is requested, but is unavailable (not implemented).
(4) Other features present in SCTP. Two other features present in
SCTP are simulated by the TCP mapping layer, namely the multiple
streams feature and the protocol payload identifier field (PPID).
Strictly speaking these features are not necessary for RSerPool
operation. However, it is trivial to provide these features in
the TCP mapping layer, and providing them offers an important
benefit, without significantly increasing the complexity of the
protocol or the on-the-wire overhead. This is discussed further
in Section 1.3
NOTE: PU-PE communication that is NOT mediated by the RSerPool
framework is allowable when the application layer does not require
data channel services. In this case, no mapping for application
layer data is used regardless of the transport protocol used as they
Lei & Conrad Expires April 9, 2006 [Page 4]
Internet-Draft RSerPool Mapping for TCP October 2005
will be tranported over the appropriate application-defined tranport
protocol.
1.3. Consistency of Service
The main benefit of including provision for multiple streams and the
PPID field in the RSerPool TCP mapping protocol is "consistency of
service." By "consistency of service", we mean that the data
transport service provided by RSerPool is consistent regardless of
the underlying transport protocol used.
To see the benefit of consistency of service, consider an RSerPool
enabled application that will be used by clients with a wide range of
capabilities, e.g. wired desktop PCs at the one end, down to PDAs or
cell phones at the other. On some of these platforms, SCTP may be
available, while on others, only TCP will be available. If the
multiple stream and PPID features are provided in the TCP mapping,
then the application designer can design once to a single API, where
regardless of the underlying transport used, multiple streams can be
used to multiplex various kinds of messages. On PUs where SCTP is
supported, an additional benefit is available, in that partial order
delivery allows head of line blocking to be avoided. This is not the
case for the systems where the TCP mapping is used, since all streams
are mapped onto a single ordered TCP byte-stream. However, either
way, the application designer doesn't have to be concerned; one can
write to a single API, and the software will function correctly over
either protocols, taking advantage of optimizations where available.
The alternative is to omit these features from the TCP mapping, and
indicate that when the underlying protocol is TCP, that all data is
implicitly sent over stream zero, and that the PPID field is ignored.
However, this will encourage designers of application that run in a
"mixed" environment to write to the "lowest common denominator" of
functionality to avoid having to maintain special case code for each
transport layer mapping. Thus, few applications will take advantage
of the features offered by SCTP. The result may be that application
with multiple streams will do their own multiplexing within the
application layer protocol, send all data over stream zero, thus
defeating the SCTP mechanism for avoiding head of line blocking.
Similiarly, few applications will take advantage of the PPID field,
meaning that it will be wasted space in the case where SCTP is
available.
Of course, providing these extra features is not without some cost;
in particular extra fields in the protocol header, and extra
complexity in the implementation. Our compromise solution to the
overhead of the extra fields is to include them in the data chunk
definition, however to allow the service user to turn them off as an
Lei & Conrad Expires April 9, 2006 [Page 5]
Internet-Draft RSerPool Mapping for TCP October 2005
optimization if they are not going to be used (see Section 3.3 and
Section 3.2 for more details.)
As for the complexity, it turns out that because the TCP byte-stream
preserves the order of each stream, providing for multiple streams is
trivial; it involves only passing the stream number through just as
the PPID is "passed through".
Thus, for minimal extra cost, "consistency of service" is preserved
by including multiple streams and the PPID field in the TCP mapping.
It is RECOMMENDED that any future mappings of RSerPool to other
transport protocols SHOULD follow this model of providing
"consistency of service" where possible.
2. Conventions Used In This Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [2].
The terms "transmission sequence number" (TSN), "stream number",
"stream identifier", "stream sequence number", and "payload protocol-
id(PPID)" are used in this document with meanings analogous to their
meanings in RFC2960 [4]; it is assumed that the reader is familiar
with these terms as they appear in that document.
Comparisons and arithmetic on TSNs and stream sequence numbers are
governed by the rules in Section 1.6 of RFC2960 [4].
3. Packet Format
In the RSerPool TCP mapping protocol, each peer transmits a series of
chunks over the TCP byte stream. The format of these chunks is
similar to that of the chunk format of SCTP.
3.1. Basic Chunk Format
The figure below illustrates the field format for the chunks to be
transmitted in the SCTP packet. Each chunk is formatted with a Chunk
Type field, a chunk-specific Flag field, a Chunk Length field, and a
Value field.
Lei & Conrad Expires April 9, 2006 [Page 6]
Internet-Draft RSerPool Mapping for TCP October 2005
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Chunk Type | Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Chunk Value /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Lei & Conrad Expires April 9, 2006 [Page 7]
Internet-Draft RSerPool Mapping for TCP October 2005
Chunk Type: 8 bits (unsigned integer)
This field identifies the type of information contained in the
Chunk Value field. It takes a value from 0 to 254. The value
of 255 is reserved for future use as an extension field.
The values of Chunk Types are defined as follows:
ID Value Chunk Type
-------- ----------
0 - Payload Data (DATA)
1 - Initiation (INIT)
2 - reserved by IETF
3 - Acknowledgement (ACK)
4 - Heartbeat Request (HEARTBEAT)
5 - Heartbeat Acknowledgement (HEARTBEAT ACK)
6 to 255 - reserved by IETF
Chunk Flags: 8 bits
The usage of these bits depends on the chunk type as given by
the Chunk Type. Unless otherwise specified, they are set to
zero on transmit and are ignored on receipt.
Chunk Length: 16 bits (unsigned integer)
This value represents the size of the chunk in bytes including
the Chunk Type, Chunk Flags, Chunk Length, and Chunk Value
fields. Therefore, if the Chunk Value field is zero-length, the
Length field will be set to 4. The Chunk Length field does not
count any padding.
Chunk Value: variable length
The Chunk Value field contains the actual information to be
transferred in the chunk. The usage and format of this field
is dependent on the Chunk Type.
The total length of a chunk (including Type, Length and Value
fields) MUST be a multiple of 4 bytes. If the length of the chunk
is not a multiple of 4 bytes, the sender MUST pad the chunk with
all zero bytes and this padding is not included in the chunk
length field. The sender should never pad with more than 3 bytes.
The receiver MUST ignore the padding bytes.
Lei & Conrad Expires April 9, 2006 [Page 8]
Internet-Draft RSerPool Mapping for TCP October 2005
3.2. DATA Chunk
The figure below illustrates the field format for the DATA chunk.
Note that it is nearly identical to the format of the DATA chunk in
SCTP. The following differences should be noted: (1) No B and E bits
for fragmentation (2) the second, third, and fourth 32-bit words are
all optional, and can be supressed (independently) through flags in
the INIT message (as explained further below.)
All ASAP protocol messages and application-layer data (when sent
through the RSerPool framework data channel) MUST be carried in DATA
chunks.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0 | Reserved|U|R R| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TSN |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stream Identifier S | Stream Sequence Number n |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Protocol Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ User Data (seq n of Stream S) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Reserved, and bits marked "R": 5 bits and 2 bits, respectively
The sender SHOULD set all '0's and the receiver SHOULD ignore.
U bit: 1 bit
The (U)nordered bit, if set to '1', indicates that this is an
unordered DATA chunk, and there is no Stream Sequence Number
assigned to this DATA chunk. Therefore, the receiver MUST
ignore the Stream Sequence Number field.
Length: 16 bits (unsigned integer)
This field indicates the length of the DATA chunk in bytes from
the beginning of the type field to the end of the user data
field excluding any padding.
Lei & Conrad Expires April 9, 2006 [Page 9]
Internet-Draft RSerPool Mapping for TCP October 2005
TSN : 32 bits (unsigned integer)
This value represents the TSN for this DATA chunk. The valid
range of TSN is from 0 to 4294967295 (2**32 - 1). TSN wraps
back to 0 after reaching 4294967295. In the TCP mapping
protocol (unlike in SCTP), this field MUST start at 0 with each
new connection. Also note that this field is redundant; TSN of
each data chunk is implicit by its position in the TCP byte
stream. It does server the purpose of providing additional
robustness against errors in a sender or receiver protocol
implementation, however if desired, it MAY be supressed for the
lifetime of the TCP connection via a flag in the INIT chunk.
Stream Identifier S: 16 bits (unsigned integer)
Identifies the stream to which the following user data belongs.
if desired, the entire 32-bit word containing Stream Identifier
and Stream Sequence Number MAY be supressed to save bandwidth;
in this case, all data chunks MUST be interpreted by the receiver
to be part of stream 0, and should be delivered to the end user
as such.
Stream Sequence Number n: 16 bits (unsigned integer)
This value represents the stream sequence number of the following
user data within the stream S. Valid range is 0 to 65535. Note
that this field, like TSN, is redundant, but it provides extra
robustness.
Note that unlike SCTP, there is no concept of fragmentation in
the TCP mapping protocol.
Payload Protocol Identifier: 32 bits (unsigned integer)
This value represents an application (or upper layer) specified
protocol identifier. This value is passed to the TCP mapping
layer from the upper layer and sent to its peer. This identifier
is not used by the TCP mapping layer but can be used by certain
network entities as well as the peer application to identify the
type of information being carried in this DATA chunk.
The IANA assigned SCTP protocol payload identifier value for
ASAP (11) MUST be used for the transport of ASAP messages (eg.
RSerPool control channel messages).
The value 0 indicates no application identifier is specified by
the upper layer for this payload data. If the application has
no use for this field, it can be supressed for all data chunks
Lei & Conrad Expires April 9, 2006 [Page 10]
Internet-Draft RSerPool Mapping for TCP October 2005
over the lifetime of the TCP connection via a flag in the INIT
message.
User Data: variable length
This is the payload user data. The implementation MUST pad the
end of the data to a 4 byte boundary with all-zero bytes. Any
padding MUST NOT be included in the length field. A sender MUST
never add more than 3 bytes of padding.
3.3. INIT Chunk
The figure below illustrates the field format for the INIT chunk.
The INIT chunk is transmitted only once at the beginning of the TCP
connection. The purpose of the INIT chunk is to transmit flags
indicating which fields will be enabled/disabled in all subsequent
data chunks over the lifetime of the TCP connection.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 1 |reservd |P|S|T| Chunk Length = 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Type: 8 bits (unsigned integer)
0x01, indicating INIT chunk
Chunk Flags: 8 bits
The five high order bits are reserved; the sender SHOULD
set them to zero, and the receiver SHOULD ignore them.
The three low order bits are to be intepreted as follows;
0x01: The TSN value is omitted in subsequent DATA chunks.
Additionally, this indicates that the receiver of the
INIT chunk SHOULD omit the TSN on ACK chunks.
0x02: The Stream Number/Stream Seq Number is omitted in
subsequent DATA chunks
0x04: The PPID value is omitted in subsequent DATA chunks
Chunk Length: 16 bits (unsigned integer)
MUST be set to 0x0004.
Lei & Conrad Expires April 9, 2006 [Page 11]
Internet-Draft RSerPool Mapping for TCP October 2005
NOTE: Unlike SCTP, there is no INIT-ACK defined in the RSerPool TCP
mapping protocol.
The following examples illustrate the use of the flags in the INIT
message.
Example 1: Flags in the INIT are 0x00. Data chunk format is:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0 | Reserved|U|R R| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TSN |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stream Identifier S | Stream Sequence Number n |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Protocol Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ User Data (seq n of Stream S) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Example 2: Flags in the INIT are 0x01. Data chunk format is:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0 | Reserved|U|R R| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stream Identifier S | Stream Sequence Number n |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Protocol Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ User Data (seq n of Stream S) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
In this example, TSN is implicit from the order in which the chunk
appears in the TCP byte stream.
Lei & Conrad Expires April 9, 2006 [Page 12]
Internet-Draft RSerPool Mapping for TCP October 2005
Example 3: Flags in the INIT are 0x05. Data chunk format is:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0 | Reserved|U|R R| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stream Identifier S | Stream Sequence Number n |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ User Data (seq n of Stream S) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
In this example, TSN is implicit from the order in which the chunk
appears in the TCP byte stream, and PPID is treated as zero.
Example 4: Flags in the INIT are 0x07. Data chunk format is:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0 | Reserved|U|R R| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ User Data (seq n of Stream S) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
In this example, TSN and Stream Sequence Number are implicit from
the order in which the chunk appears in the TCP byte stream, and
Stream Identifier and PPID are always considered zero.
3.4. ACK Chunk
The figure below illustrates the field format for the ACK chunk. An
RSerPool TCP mapping layer entity MUST transmit exactly one
corresponding ACK chunk over the TCP connection immediately after
delivering each DATA chunk to the upper layer. Each such ACK chunk
SHOULD contain the TSN corresponding to the DATA chunk that was
delivered, unless inclusion of the TSN has been supressed by receipt
of the 0x01 flag value in a previous INIT chunk from the data sender
to the data receiver.
Lei & Conrad Expires April 9, 2006 [Page 13]
Internet-Draft RSerPool Mapping for TCP October 2005
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 3 |Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cumulative TSN Ack |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
Set to all zeros on transmit and ignored on receipt.
Cumulative TSN Ack: 32 bits (unsigned integer)
This field is OPTIONAL, and SHOULD NOT be included if the side
sending the ack previously received a value of 0x01 in the INIT
from the peer. The receiver of an ACK chunk can determine
whether the TSN field is present by checking whether the length
of the ACK chunk is 4 bytes or 8 bytes.
This field contains the TSN of the last DATA chunk delivered to
the upper layer protocol. Note that this value is implicit from
the position of the ACK chunk in the TCP byte stream.
3.5. HEARTBEAT Chunk
The figure below illustrates the field format for the HEARTBEAT
chunk.
Lei & Conrad Expires April 9, 2006 [Page 14]
Internet-Draft RSerPool Mapping for TCP October 2005
The parameter field contains the Heartbeat Information which is
a variable length opaque data structure understood only by the
sender.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 4 | Chunk Flags | Heartbeat Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Heartbeat Information TLV (Variable-Length) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
Set to zero on transmit and ignored on receipt.
Heartbeat Length: 16 bits (unsigned integer)
Set to the size of the chunk in bytes, including the chunk header
and the Heartbeat Information field.
Heartbeat Information: variable length
Defined as a variable-length parameter using the format described
in Section 3.2.1, i.e.:
Variable Parameters Status Type Value
-------------------------------------------------------------
Heartbeat Info Mandatory 1
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Heartbeat Info Type=1 | HB Info Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Sender-specific Heartbeat Info /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3.6. HEARTBEAT ACK Chunk
The figure below illustrates the field format for the HEARTBEAT ACK
chunk. The RSerPool TCP mapping layer MUST transmit exactly one
HEARTBEAT ACK chunk in response to each HEARTBEAT chunk received.
The Heartbeat Information parameter received in the HEARTBEAT chunk
Lei & Conrad Expires April 9, 2006 [Page 15]
Internet-Draft RSerPool Mapping for TCP October 2005
MUST be included in the HEARTBEAT ACK chunk.
The parameter field contains a variable length opaque data
structure which was received in the HEARTBEAT.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 5 | Chunk Flags | Heartbeat Ack Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Heartbeat Information TLV (Variable-Length) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
Set to zero on transmit and ignored on receipt.
Heartbeat Ack Length: 16 bits (unsigned integer)
Set to the size of the chunk in bytes, including the chunk header
and the Heartbeat Information field.
Heartbeat Information: variable length
This field MUST contain the Heartbeat Information parameter of
the Heartbeat Request to which this Heartbeat Acknowledgement is
responding.
Variable Parameters Status Type Value
-------------------------------------------------------------
Heartbeat Info Mandatory 1
4. Protocol Operations
[TBD: In this section describe the basic operation of the protocol.
Most of this is already pretty much spelled out in the descriptions
of the packets, but a few details need to be ironed out, mainly how
and under what conditions the TCP mapping layer decides that a
failure occured. Perhaps the upper layer needs to be able to specify
a timeout value for data, and a heartbeat interval? Are there any
other details that need to specified in this section?]
Lei & Conrad Expires April 9, 2006 [Page 16]
Internet-Draft RSerPool Mapping for TCP October 2005
5. Security Considerations
There are no known additional security considerations over what is
already present for TCP.
6. IANA Considerations
[Open Issue TBD: Will there be an enumeration of the various
transport layer mappings that must be registered with IANA?]
7. Acknowledgements
8. References
[1] Bradner, S., "The Internet Standards Process -- Revision 3",
BCP 9, RFC 2026, October 1996.
[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[3] Postel, J., "Transmission Control Protocol", STD 7, RFC 793,
September 1981.
[4] Stewart, R., Xie, Q., Morneault, K., Sharp, C., Schwarzbauer,
H., Taylor, T., Rytina, I., Kalla, M., Zhang, L., and V. Paxson,
"Stream Control Transmission Protocol", RFC 2960, October 2000.
[5] Stewart, R., "Aggregate Server Access Protocol (ASAP)",
draft-ietf-rserpool-asap-12 (work in progress), July 2005.
[6] Lei, P. and P. Conrad, "Services Provided By Reliable Server
Pooling", draft-ietf-rserpool-service-02 (work in progress),
October 2005.
[7] Tuexen, M., "Architecture for Reliable Server Pooling",
draft-ietf-rserpool-arch-10 (work in progress), July 2005.
[8] Stewart, R., "Endpoint Handlespace Redundancy Protocol (ENRP)",
draft-ietf-rserpool-enrp-12 (work in progress), July 2005.
Lei & Conrad Expires April 9, 2006 [Page 17]
Internet-Draft RSerPool Mapping for TCP October 2005
Authors' Addresses
Peter Lei
Cisco Systems, Inc.
8735 W Higgins Rd, Suite 300
Chicago, IL 60631
US
Phone: +1 773 695 8201
Email: peterlei@cisco.com
Phillip T. Conrad
University of Delaware
Dept. of Computer and Information Sciences
103 Smith Hall
Newark, DE 19716
US
Phone: +1 302 831 8622
Email: conrad@acm.org
URI: http://udel.edu/~pconrad
Lei & Conrad Expires April 9, 2006 [Page 18]
Internet-Draft RSerPool Mapping for TCP October 2005
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM 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.
Copyright Statement
Copyright (C) The Internet Society (2005). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Lei & Conrad Expires April 9, 2006 [Page 19]