Advanced Message Queuing Protocol (AMQP) Binding to the Stream Control Transmission Protocol (SCTP) Version 1.0
Working Draft 01
26 August 2013
Technical Committee:
OASIS Advanced Message Queuing Protocol (AMQP) Bindings and Mappings (AMQP-BINDMAP) TC
Chair:
Steve Huston (), Individual
Editors:
Steve Huston (), Individual
Paul Knight (), Individual
Matthew Arrott (), Individual
other – Rob Godfrey?
Additional artifacts:
This prose specification is one component of a Work Product that also includes:
- XML schemas:(list file names or directory name)
- Other parts (list titles and/or file names)
Related work:
This specification is related to:
- OASIS Advanced Message Queuing Protocol (AMQP) Version 1.0. 29 October 2012. OASIS Standard.
- Stream Control Transmission Protocol. September 2007. IETF RFC4960.
Abstract:
This specification describes an approach to transporting AMQP messages over the SCTP transport layer protocol, RFC 4960. The binding interface maps the AMQP connection to the SCTP Association and maps the AMQP Channel to the SCTP Stream.
Status:
This Working Draft (WD) has been produced by one or more TC Members; it has not yet been voted on by the TC or approved as a Committee Draft (Committee Specification Draft or a Committee Note Draft). The OASIS document Approval Process begins officially with a TC vote to approve a WD as a Committee Draft. A TC may approve a Working Draft, revise it, and re-approve it any number of times as a Committee Draft.
Initial URI pattern:
(Managed by OASIS TC Administration; please don’t modify.)
Copyright © OASIS Open 2013. All Rights Reserved.
All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website.
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 section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, 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 OASIS or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Table of Contents
1Introduction
1.1 Terminology
1.2 Normative References
1.3 Non-Normative References
2AMQP and SCTP discussion
2.1 AMQP
2.2 SCTP
2.2.1 SCTP description
2.2.1.1 Basic SCTP Features
2.2.1.2 SCTP DATA Exchange Features
2.2.2 SCTP comparison to TCP and UDP
2.3 Use cases for AMQP over SCTP
2.3.1 Buyer negotiating price/quantity with multiple sellers
2.3.1.1 Level 4 section title is usually deepest for Table of Contents
3AMQP binding to SCTP
3.1 Mapping/binding mechanism
3.2 Security
4# Conformance
Appendix A.Acknowledgments
Appendix B.Revision History
amqp-sctp-v1.0-wd01Working Draft 0126 August2013
Standards Track DraftCopyright © OASIS Open 2013. All Rights Reserved.Page 1 of 14
1Introduction
This document specifies a method of binding or mapping the Advanced Message Queuing Protocol [AMQP] to the Stream Control Transmission Protocol [SCTP], an Internet Protocol (IP) transport protocol which provides capabilities not supported by the more commonly used alternatives, the Transmission Control Protocol [TCP] or the User Datagram Protocol [UDP].
This document is organized as follows:
Section 2 provides a non-normative discussion of AMQP and SCTP, including their attributes relevant to the specified bindings or mappings, and also provides descriptive use cases.
Section 3 provides a normative description and details of the mappings or bindings.The current Section 3 may be expanded to multiple sections as needed, covering items like:
- Security
- Reliability
- Performance
- (please suggest others)
1.1Terminology
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 [RFC2119].
References to the citations in the Normative References or Non-Normative References sections appear within brackets. References to other Internet-based resources are identified with complete visible hyperlinks enclosed in parentheses.
Text in red indicates commentary on areas in this document which require additional work, and should all be removed before publication at the OASIS Committee Specification level.
1.2Normative References
[RFC2119]Bradner, S.,“Key words for use in RFCs to Indicate Requirement Levels”, BCP 14, RFC 2119, March 1997.
[AMQP]OASIS Advanced Message Queuing Protocol (AMQP) Version 1.0. 29 October 2012. OASIS Standard.
[amqp-pt1-types]OASIS Advanced Message Queuing Protocol (AMQP) Version 1.0 Part 1: Types. 29 October 2012. OASIS Standard.
[amqp-pt2-transport]OASIS Advanced Message Queuing Protocol (AMQP) Version 1.0 Part 2: Transport. 29 October 2012. OASIS Standard.
[amqp-pt3-messaging]OASIS Advanced Message Queuing Protocol (AMQP) Version 1.0 Part 3: Messaging. 29 October 2012. OASIS Standard.
[amqp-pt4-transactions]OASIS Advanced Message Queuing Protocol (AMQP) Version 1.0 Part 4: Transactions. 29 October 2012. OASIS Standard.
[amqp-pt5-security]OASIS Advanced Message Queuing Protocol (AMQP) Version 1.0 Part 5: Security. 29 October 2012. OASIS Standard.
[RFC4960]R. Stewart, ed., “Stream Control Transmission Protocol”, RFC 4960, September 2007.
[RFC6096]M. Tuexen, R. Stewart, “Stream Control Transmission Protocol (SCTP) Chunk Flags Registration”, RFC6096, January 2011.
[TCP]Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981.
[UDP]Postel, J., "User Datagram Protocol", STD 6, RFC 768, August 1980.
[Reference] [Full reference citation]
1.3Non-Normative References
[RFC3286]L. Ong, J. Yoakum, “An Introduction to the Stream Control Transmission Protocol (SCTP)”, RFC 3286, May 2002.
[SCTP-Ref]Stream Control Transmission Protocol (SCTP): A Reference Guide. Randall R. Stewart, Qiaobing Xie. Addison-Wesley, 2002. ISBN 0-201-72186-4.
[Reference] [Full reference citation]
2AMQP and SCTP discussion
All text in this section, including subsections, is non-normative.
2.1AMQP
AMQP is defined in a multi-part specification, and the parts of AMQP which are of most interest within the present work are the Transport [amqp-pt2-transport] and Messaging [amqp-pt3-messaging] parts.
Although SCTP is mentioned in passing in the AMQP specification, the use of TCP [TCP]is typically assumed, with detailed specifications for version negotiation ( and connection handling (
SCTP-focused versions of the existing TCP-centric material in the AMQP specification will be developed in the normative sections below.
2.2SCTP
2.2.1SCTP description
Text from RFC3286, to be edited and focused as needed:
2.2.1.1Basic SCTP Features
SCTP is a unicast protocol, and supports data exchange between
exactly 2 endpoints, although these may be represented by multiple IP
addresses.
SCTP provides reliable transmission, detecting when data is
discarded, reordered, duplicated or corrupted, and retransmitting
damaged data as necessary. SCTP transmission is full duplex.
SCTP is message oriented and supports framing of individual message
boundaries. In comparison, TCP is byte oriented and does not
preserve any implicit structure within a transmitted byte stream
without enhancement.
SCTP is rate adaptive similar to TCP, and will scale back data
transfer to the prevailing load conditions in the network. It is
designed to behave cooperatively with TCP sessions attempting to use
the same bandwidth.
The name Stream Control Transmission Protocol is derived from the
multi-streaming function provided by SCTP. This feature allows data
to be partitioned into multiple streams that have the property of
independently sequenced delivery, so that message loss in any one
stream will only initially affect delivery within that stream, and
not delivery in other streams.
In contrast, TCP assumes a single stream of data and ensures that
delivery of that stream takes place with byte sequence preservation.
While this is desirable for delivery of a file or record, it causes
additional delay when message loss or sequence error occurs within
the network. When this happens, TCP must delay delivery of data
until the correct sequencing is restored, either by receipt of an
out-of-sequence message, or by retransmission of a lost message.
[…]
SCTP accomplishes multi-streaming by creating independence between
data transmission and data delivery. In particular, each payload
DATA "chunk" in the protocol uses two sets of sequence numbers, a
Transmission Sequence Number that governs the transmission of
messages and the detection of message loss, and the Stream ID/Stream
Sequence Number pair, which is used to determine the sequence of
delivery of received data.
This independence of mechanisms allows the receiver to determine
immediately when a gap in the transmission sequence occurs (e.g., due
to message loss), and also whether or not messages received following
the gap are within an affected stream. If a message is received
within the affected stream, there will be a corresponding gap in the
Stream Sequence Number, while messages from other streams will not
show a gap. The receiver can therefore continue to deliver messages
to the unaffected streams while buffering messages in the affected
stream until retransmission occurs.
Another core feature of SCTP is multi-homing, or the ability for a
single SCTP endpoint to support multiple IP addresses. The benefit
of multi-homing is potentially greater survivability of the session
in the presence of network failures.
2.2.1.2SCTP DATA Exchange Features
DATA chunk exchange in SCTP follows TCP's Selective ACK procedure.
Receipt of DATA chunks is acknowledged by sending SACK chunks, which
indicate not only the cumulative Transmission Sequence Number (TSN)
range received, but also any non-cumulative TSNs, implying gaps in
the received TSN sequence. Following TCP procedures, SACKs are sent
using the "delayed ack" method, normally one SACK per every other
received packet, but with an upper limit on the delay between SACKs
and an increase to once per received packet when there are gaps
detected.
Flow and Congestion Control follow TCP algorithms. The advertised
receive window indicates buffer occupancy at the receiver, while a
per-path congestion window is maintained to manage the packets in
flight. Slow start, Congestion avoidance, Fast recovery and Fast
retransmit are incorporated into the procedures as described in RFC
2581, with the one change being that the endpoints must manage the
conversion between bytes sent and received and TSNs sent and
received, since TSN is per chunk rather than per byte.
The application can specify a lifetime for data to be transmitted, so
that if the lifetime has expired and the data has not yet been
transmitted, it can be discarded (e.g., time-sensitive signaling
messages). If the data has been transmitted, it must continue to be
delivered to avoid creating a hole in the TSN sequence.
Other topics:
SCTP Shutdown Features
SCTP Message Format
Error handling- retransmission, path failure, endpoint failure
2.2.2SCTP comparison to TCP and UDP
Raw text from RFC3286:
Like TCP, SCTP provides a reliable transport service, ensuring that
data is transported across the network without error and in sequence.
Like TCP, SCTP is a session-oriented mechanism, meaning that a
relationship is created between the endpoints of an SCTP association
prior to data being transmitted, and this relationship is maintained
until all data transmission has been successfully completed.
Unlike TCP, SCTP provides a number of functions that are critical for
telephony signaling transport, and at the same time can potentially
benefit other applications needing transport with additional
performance and reliability.
The name Stream Control Transmission Protocol is derived from the
multi-streaming function provided by SCTP. This feature allows data
to be partitioned into multiple streams that have the property of
independently sequenced delivery, so that message loss in any one
stream will only initially affect delivery within that stream, and
not delivery in other streams.
In contrast, TCP assumes a single stream of data and ensures that
delivery of that stream takes place with byte sequence preservation.
While this is desirable for delivery of a file or record, it causes
additional delay when message loss or sequence error occurs within
the network. When this happens, TCP must delay delivery of data
until the correct sequencing is restored, either by receipt of an
out-of-sequence message, or by retransmission of a lost message.
2.3Use cases for AMQP over SCTP
This section provides a non-normative description of one or more use cases to provide the motivation for this specification.
The use cases identified to date include:
- buyer negotiating price and/or quantity with multiple sellers
- need more use cases
2.3.1Buyer negotiating price/quantity with multiple sellers
text
2.3.1.1Level 4 section title is usually deepest for Table of Contents
text
2.3.1.1.1Level 5 or deeper may be included in TOC with TC approval
text
3AMQP binding to SCTP
This section contains the normative description of binding mechanisms.
(Likely points, from email)
AMQP over SCTP binding specification layers AMQP messages over the SCTP transport layer protocol, RFC 4960 and RFC 3286. The binding interface maps the AMQP connection to the SCTP Association and the AMQP Channel to the SCTP Stream. The SCTP Message contains the content of the AMQP Frame Body. SCTP Stream “0” is designated as a reserved control stream between the AMQP Connection End Points to carry the AMQP Protocol headers, SASL Frames, Connection Open and Close performatives.
3.1Mapping/binding mechanism
straw-man for the SCTP mapping:
An AMQP Connection maps to an SCTP Association, an AMQP Channel maps to an SCTP Stream.
AMQP Framing is not used for the SCTP Mapping. The SCTP Message contains the contents of the AMQP Frame Body.
We register two Payload Protocol Identifiers one for “AMQP 1.0 Frame” and one for “AMQP SASL 1.0 Frame” (identifiers to be provided by IANA).
Protocol Headers will be sent with Payload Protocol Identifier 0.
Protocol Headers, SASL frames and the open and close performatives MUST be sent on stream 0.
AMQP frames received on streams other than stream 0 MUST be buffered until an open performative has been received on stream 0. Implementations SHOULD limit the number of frames that can be buffered and close the connection with an appropriate error code if the buffer is filled and no open has been received.
On receiving a close performative on stream 0, an implementation MAY choose to continue reading messages until no more data is incoming. An implementation SHOULD limit the number of frames that it reads after receiving a close.
In the open performative:
- the max-frame-size MUST be no greater than the negotiated maximum message size of the SCTP association
- channel-max MUST be no greater than the negotiated maximum stream number negotiated for the SCTP association
- idle-time-out MUST NOT be set
We should provide guidance on setting the maximum message size relative to the socket buffer size.
3.2Security
Describe what security protocols are needed and why.
The TLS security layer defined in Section 5.2 is not supported for SCTP
SASL Mechanisms which provide an encryption layer are not supported for SCTP
Q: What about replacing SASL & TLS w/ DTLS under SCTP as their replacement, given SCTP does not support them?
A: So, DTLS would not completely replace SASL - presuming you might still want to use username/password authentication on SCTP.
(text from email, needs cleaning: )
In terms of replacing SSL/TLS, it would certainly replace the case where the entire AMQP protocol is tunneled over TLS... In my comment about section 5.2 I was specifically referring to the mechanism where we do a “TLS upgrade” on an AMQP Connection which initially starts as pure AMQP (i.e. the first bytes on the wire are AMQPx2x1x0x0 rather than the TLS header. As far as I know no-one has actually implemented this layer anyway, and it does not seem it would be appropriate for DTLS.
4Conformance
The last numbered section in the specification must be the Conformance section. Conformance Statements/Clauses go here.
(Conformance must be in place before first OASIS-managed Public Review)
Appendix A.Acknowledgments
The following individuals are members of the OASIS Advanced Message Queuing Protocol (AMQP) Bindings and Mappings (AMQP-BINDMAP) TC as the date of this publication.
Those who have participated in the creation of this specification are gratefully acknowledged.
TC Members:
Sanjay Aiyagari / VMware, Inc.Matthew Arrott / Individual
Allan Beck / JPMorgan Chase Bank, N.A.
Mark Blair / Credit Suisse
Andrew Braddock / US Department of Homeland Security
Laurie Bryson / JPMorgan Chase Bank, N.A.
Raphael Cohn / Individual
Andrew Doddington / Bank of America
Rob Dolin / Microsoft
Robert Gemmell / JPMorgan Chase Bank, N.A.
Rob Godfrey / JPMorgan Chase Bank, N.A.
Philip Harvey / JPMorgan Chase Bank, N.A.
William Henry / Red Hat
Steve Huston / Individual
David Ingham / Microsoft
Ram Jeyaraman / Microsoft
James Kirkland / Red Hat
Paul Knight / Individual
Alex Kritikos / Software AG, Inc.
Shawn McAllister / Solace Systems
Dale Moberg / Axway Software
Andreas Moravec / Deutsche Boerse AG
John O'Hara / Individual
Duane Pauls / Solace Systems
Darryl Pierce / Red Hat
Jonathan Poulter / Kaazing
Sandeep Puri / Cisco Systems
Oleksandr Rudyy / JPMorgan Chase Bank, N.A.
Rafael Schloming / Red Hat
Jakub Scholz / Deutsche Boerse AG
Wolf Tombe / US Department of Homeland Security
The TC would also like to gratefully acknowledge the support and advice of Randall Stewart, co-author of the SCTP specification.
Appendix B.Revision History
Revision / Date / Editor / Changes Madewd01 / 26 August 2013 / Paul Knight / Initial strawman document
amqp-sctp-v1.0-wd01Working Draft 0126 August2013
Standards Track DraftCopyright © OASIS Open 2013. All Rights Reserved.Page 1 of 14