draft-ietf-tsvwg-sctp-udp-encaps-11.txt   draft-ietf-tsvwg-sctp-udp-encaps-12.txt 
Network Working Group M. Tuexen Network Working Group M. Tuexen
Internet-Draft Muenster Univ. of Appl. Sciences Internet-Draft Muenster Univ. of Appl. Sciences
Intended status: Standards Track R. Stewart Intended status: Standards Track R. R. Stewart
Expires: August 23, 2013 Adara Networks Expires: September 12, 2013 Adara Networks
February 19, 2013 March 11, 2013
UDP Encapsulation of SCTP Packets for End-Host to End-Host Communication UDP Encapsulation of SCTP Packets for End-Host to End-Host Communication
draft-ietf-tsvwg-sctp-udp-encaps-11.txt draft-ietf-tsvwg-sctp-udp-encaps-12.txt
Abstract Abstract
This document describes a simple method of encapsulating SCTP Packets This document describes a simple method of encapsulating SCTP Packets
into UDP packets and its limitations. This allows the usage of SCTP into UDP packets and its limitations. This allows the usage of SCTP
in networks with legacy NAT not supporting SCTP. It can also be used in networks with legacy NAT not supporting SCTP. It can also be used
to implement SCTP on hosts without directly accessing the IP-layer, to implement SCTP on hosts without directly accessing the IP-layer,
for example implementing it as part of the application without for example implementing it as part of the application without
requiring special privileges. requiring special privileges.
Please note that this document does not provide all techniques Please note that this document only describes the functionality
necessary for building a complete NAT-capable application using SCTP. required within an SCTP stack to add on UDP encapsulation, providing
This document focuses on the functionality required within the SCTP only those mechanisms for two end-hosts to communicate with each
stack and making this available via an API. It does not cover other over UDP ports. In particular, it does not provide mechanisms
mechanism to determine whether UDP encapsulation is required to reach to determine whether UDP encapsulation is being used by the peer, nor
the peer and, if UDP encapsulation is used, which remote UDP port the mechanisms for determining which remote UDP port number can be
number can be used. used. These functions are are out of scope for this document.
This document covers only end-hosts and not tunneling (egress or This document covers only end-hosts and not tunneling (egress or
ingress) end-points. ingress) end-points.
Status of this Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on August 23, 2013. This Internet-Draft will expire on September 12, 2013.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
skipping to change at page 2, line 19 skipping to change at page 2, line 22
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1. Portable SCTP Implementations . . . . . . . . . . . . . . 3 3.1. Portable SCTP Implementations . . . . . . . . . . . . . . 3
3.2. Legacy NAT Traversal . . . . . . . . . . . . . . . . . . . 4 3.2. Legacy NAT Traversal . . . . . . . . . . . . . . . . . . 4
4. Unilateral Self-Address Fixing (UNSAF) Considerations . . . . 4 4. Unilateral Self-Address Fixing (UNSAF) Considerations . . . . 4
5. SCTP over UDP . . . . . . . . . . . . . . . . . . . . . . . . 4 5. SCTP over UDP . . . . . . . . . . . . . . . . . . . . . . . . 4
5.1. Architectural Considerations . . . . . . . . . . . . . . . 4 5.1. Architectural Considerations . . . . . . . . . . . . . . 4
5.2. Packet Format . . . . . . . . . . . . . . . . . . . . . . 5 5.2. Packet Format . . . . . . . . . . . . . . . . . . . . . . 5
5.3. Encapsulation Procedure . . . . . . . . . . . . . . . . . 6 5.3. Encapsulation Procedure . . . . . . . . . . . . . . . . . 6
5.4. Decapsulation Procedure . . . . . . . . . . . . . . . . . 6 5.4. Decapsulation Procedure . . . . . . . . . . . . . . . . . 6
5.5. ICMP Considerations . . . . . . . . . . . . . . . . . . . 7 5.5. ICMP Considerations . . . . . . . . . . . . . . . . . . . 7
5.6. Path MTU Considerations . . . . . . . . . . . . . . . . . 7 5.6. Path MTU Considerations . . . . . . . . . . . . . . . . . 7
5.7. Handling of Embedded IP-addresses . . . . . . . . . . . . 8 5.7. Handling of Embedded IP-addresses . . . . . . . . . . . . 7
5.8. ECN Considerations . . . . . . . . . . . . . . . . . . . . 8 5.8. ECN Considerations . . . . . . . . . . . . . . . . . . . 8
6. Socket API Considerations . . . . . . . . . . . . . . . . . . 8 6. Socket API Considerations . . . . . . . . . . . . . . . . . . 8
6.1. Get or Set the Remote UDP Encapsulation Port Number 6.1. Get or Set the Remote UDP Encapsulation Port Number
(SCTP_REMOTE_UDP_ENCAPS_PORT) . . . . . . . . . . . . . . 8 (SCTP_REMOTE_UDP_ENCAPS_PORT) . . . . . . . . . . . . . . 8
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
8. Security Considerations . . . . . . . . . . . . . . . . . . . 9 8. Security Considerations . . . . . . . . . . . . . . . . . . . 9
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
10.1. Normative References . . . . . . . . . . . . . . . . . . . 10 10.1. Normative References . . . . . . . . . . . . . . . . . . 9
10.2. Informative References . . . . . . . . . . . . . . . . . . 11 10.2. Informative References . . . . . . . . . . . . . . . . . 10
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 11 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11
1. Introduction 1. Introduction
This document describes a simple method of encapsulating SCTP packets This document describes a simple method of encapsulating SCTP packets
into UDP packets. SCTP as defined in [RFC4960] runs directly over into UDP packets. SCTP as defined in [RFC4960] runs directly over
IPv4 or IPv6. There are two main reasons for encapsulating SCTP IPv4 or IPv6. There are two main reasons for encapsulating SCTP
packets: packets:
o Allow SCTP traffic to pass through legacy NATs, which do not o Allow SCTP traffic to pass through legacy NATs, which do not
provide native SCTP support as specified in provide native SCTP support as specified in
skipping to change at page 4, line 39 skipping to change at page 4, line 43
It doesn't cover generic tunneling end-points. It doesn't cover generic tunneling end-points.
Obviously, the exit strategy is to use hosts supporting SCTP natively Obviously, the exit strategy is to use hosts supporting SCTP natively
and middleboxes supporting SCTP as specified in and middleboxes supporting SCTP as specified in
[I-D.ietf-behave-sctpnat] and [I-D.ietf-tsvwg-natsupp]). [I-D.ietf-behave-sctpnat] and [I-D.ietf-tsvwg-natsupp]).
5. SCTP over UDP 5. SCTP over UDP
5.1. Architectural Considerations 5.1. Architectural Considerations
Each SCTP stack uses a single local UDP encapsulation port number as
the destination port for all its incoming SCTP packets.
If there is only a single SCTP implementation on a host (for example,
a kernel implementation being part of the operating system), using a
single local UDP encapsulation port number per host can be
advantageous (e.g., this reduces the number of mappings in firewalls
and NATs, among other things). Using a single local UDP
encapsulation port number per host is not possible if the SCTP stack
is implemented as part of each application, there are multiple
applications, and some of the applications want to use the same IP-
address.
An SCTP implementation supporting UDP encapsulation MUST store a An SCTP implementation supporting UDP encapsulation MUST store a
remote UDP encapsulation port number per destination address for each remote UDP encapsulation port number per destination address for each
SCTP association. SCTP association.
Each SCTP stack uses a single local UDP encapsulation port number as UDP encapsulated SCTP is communicated over the IANA-assigned UDP port
the destination port for all its incoming SCTP packets. UDP
encapsulated SCTP is communicated over the IANA-assigned UDP port
number 9899 (sctp-tunneling). However, implementations SHOULD allow number 9899 (sctp-tunneling). However, implementations SHOULD allow
other port numbers to be specified through APIs, as applications may other port numbers to be specified as a local or remote UDP
have the need to communicate over different port numbers. If there encapsulation port number through APIs, as applications may have the
is only a single SCTP implementation on a host (for example, a kernel need to communicate over different port numbers.
implementation being part of the operating system), using a single
UDP encapsulation port number per host can be advantageous (e.g.,
this reduces the number of mappings in firewalls and NATs, among
other things). Using a single UDP encapsulation port number per host
is not possible if the SCTP stack is implemented as part of each
application, there are multiple applications, and some of the
applications want to use the same IP-address.
5.2. Packet Format 5.2. Packet Format
To encapsulate an SCTP packet, a UDP header as defined in [RFC0768] To encapsulate an SCTP packet, a UDP header as defined in [RFC0768]
is inserted between the IP header as defined in [RFC0791] and the is inserted between the IP header as defined in [RFC0791] and the
SCTP common header as defined in [RFC4960]. SCTP common header as defined in [RFC4960].
Figure 1 shows the packet format of an encapsulated SCTP packet when Figure 1 shows the packet format of an encapsulated SCTP packet when
IPv4 is used. IPv4 is used.
skipping to change at page 6, line 41 skipping to change at page 6, line 36
Within the UDP header, the source port MUST be the local UDP Within the UDP header, the source port MUST be the local UDP
encapsulation port number of the SCTP stack, the destination port encapsulation port number of the SCTP stack, the destination port
MUST be the remote UDP encapsulation port number stored for the MUST be the remote UDP encapsulation port number stored for the
association and the destination address to which the packet is sent association and the destination address to which the packet is sent
(see Section 5.1). (see Section 5.1).
Because the SCTP packet is the UDP payload, the length of the UDP Because the SCTP packet is the UDP payload, the length of the UDP
packet MUST be the length of the SCTP packet plus the size of the UDP packet MUST be the length of the SCTP packet plus the size of the UDP
header. header.
For IPv4, the UDP checksum SHOULD be computed and the SCTP checksum The SCTP checksum MUST be computed and the UDP checksum SHOULD be
MUST be computed, whereas for IPv6, the UDP checksum and the SCTP computed (see [RFC5405] and [I-D.ietf-6man-udpzero] for UDP checksum
checksum MUST be computed. considerations).
5.4. Decapsulation Procedure 5.4. Decapsulation Procedure
When an encapsulated packet is received, the UDP header is removed. When an encapsulated packet is received, the UDP header is removed.
Then the generic lookup is performed, as done by an SCTP stack Then the generic lookup is performed, as done by an SCTP stack
whenever a packet is received, to find the association for the whenever a packet is received, to find the association for the
received SCTP packet. After finding the SCTP association (which received SCTP packet. After finding the SCTP association (which
includes checking the verification tag), the UDP source port MUST be includes checking the verification tag), the UDP source port MUST be
stored as the encapsulation port for the destination address the SCTP stored as the encapsulation port for the destination address the SCTP
packet is received from (see Section 5.1). packet is received from (see Section 5.1).
skipping to change at page 9, line 23 skipping to change at page 9, line 19
destination port number for UDP encapsulation. Providing a value destination port number for UDP encapsulation. Providing a value
of 0 disables UDP encapsulation. of 0 disables UDP encapsulation.
7. IANA Considerations 7. IANA Considerations
This document refers to the already assigned UDP port 9899 (sctp- This document refers to the already assigned UDP port 9899 (sctp-
tunneling). IANA is requested to update this assignment to refer to tunneling). IANA is requested to update this assignment to refer to
this document. As per [RFC6335] the Assignee should be [IESG] and this document. As per [RFC6335] the Assignee should be [IESG] and
the Contact should be [IETF_Chair]. the Contact should be [IETF_Chair].
Please note that this document does not cover TCP port 9899 (sctp- Please note that the TCP port 9899 (sctp-tunneling) assignment is not
tunneling). needed anymore and IANA is asked to remove this TCP port number
assignment.
8. Security Considerations 8. Security Considerations
Encapsulating SCTP into UDP does not add any additional security Encapsulating SCTP into UDP does not add any additional security
considerations to the ones given in [RFC4960] and [RFC5061]. considerations to the ones given in [RFC4960] and [RFC5061].
Firewalls inspecting SCTP packets must also be aware of the Firewalls inspecting SCTP packets must also be aware of the
encapsulation and apply corresponding rules to the encapsulated encapsulation and apply corresponding rules to the encapsulated
packets. packets.
skipping to change at page 10, line 14 skipping to change at page 10, line 8
Stiemerling, Irene Ruengeler, and Dan Wing for their invaluable Stiemerling, Irene Ruengeler, and Dan Wing for their invaluable
comments. comments.
10. References 10. References
10.1. Normative References 10.1. Normative References
[RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
August 1980. August 1980.
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, September
September 1981. 1981.
[RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, [RFC0792] Postel, J., "Internet Control Message Protocol", STD 5,
RFC 792, September 1981. RFC 792, September 1981.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 [RFC2460] Deering, S.E. and R.M. Hinden, "Internet Protocol, Version
(IPv6) Specification", RFC 2460, December 1998. 6 (IPv6) Specification", RFC 2460, December 1998.
[RFC4443] Conta, A., Deering, S., and M. Gupta, "Internet Control [RFC4443] Conta, A., Deering, S., and M. Gupta, "Internet Control
Message Protocol (ICMPv6) for the Internet Protocol Message Protocol (ICMPv6) for the Internet Protocol
Version 6 (IPv6) Specification", RFC 4443, March 2006. Version 6 (IPv6) Specification", RFC 4443, March 2006.
[RFC4820] Tuexen, M., Stewart, R., and P. Lei, "Padding Chunk and [RFC4820] Tuexen, M., Stewart, R., and P. Lei, "Padding Chunk and
Parameter for the Stream Control Transmission Protocol Parameter for the Stream Control Transmission Protocol
(SCTP)", RFC 4820, March 2007. (SCTP)", RFC 4820, March 2007.
[RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU [RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU
Discovery", RFC 4821, March 2007. Discovery", RFC 4821, March 2007.
[RFC4895] Tuexen, M., Stewart, R., Lei, P., and E. Rescorla, [RFC4895] Tuexen, M., Stewart, R., Lei, P., and E. Rescorla,
"Authenticated Chunks for the Stream Control Transmission "Authenticated Chunks for the Stream Control Transmission
Protocol (SCTP)", RFC 4895, August 2007. Protocol (SCTP)", RFC 4895, August 2007.
[RFC4960] Stewart, R., "Stream Control Transmission Protocol", [RFC4960] Stewart, R., "Stream Control Transmission Protocol", RFC
RFC 4960, September 2007. 4960, September 2007.
[RFC5061] Stewart, R., Xie, Q., Tuexen, M., Maruyama, S., and M. [RFC5061] Stewart, R., Xie, Q., Tuexen, M., Maruyama, S., and M.
Kozuka, "Stream Control Transmission Protocol (SCTP) Kozuka, "Stream Control Transmission Protocol (SCTP)
Dynamic Address Reconfiguration", RFC 5061, Dynamic Address Reconfiguration", RFC 5061, September
September 2007. 2007.
10.2. Informative References 10.2. Informative References
[RFC3424] Daigle, L. and IAB, "IAB Considerations for UNilateral [RFC3424] Daigle, L. IAB, "IAB Considerations for UNilateral Self-
Self-Address Fixing (UNSAF) Across Network Address Address Fixing (UNSAF) Across Network Address
Translation", RFC 3424, November 2002. Translation", RFC 3424, November 2002.
[RFC5405] Eggert, L. and G. Fairhurst, "Unicast UDP Usage Guidelines
for Application Designers", BCP 145, RFC 5405, November
2008.
[RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. [RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S.
Cheshire, "Internet Assigned Numbers Authority (IANA) Cheshire, "Internet Assigned Numbers Authority (IANA)
Procedures for the Management of the Service Name and Procedures for the Management of the Service Name and
Transport Protocol Port Number Registry", BCP 165, Transport Protocol Port Number Registry", BCP 165, RFC
RFC 6335, August 2011. 6335, August 2011.
[RFC6458] Stewart, R., Tuexen, M., Poon, K., Lei, P., and V. [RFC6458] Stewart, R., Tuexen, M., Poon, K., Lei, P., and V.
Yasevich, "Sockets API Extensions for the Stream Control Yasevich, "Sockets API Extensions for the Stream Control
Transmission Protocol (SCTP)", RFC 6458, December 2011. Transmission Protocol (SCTP)", RFC 6458, December 2011.
[I-D.ietf-6man-udpzero]
Fairhurst, G. and M. Westerlund, "Applicability Statement
for the use of IPv6 UDP Datagrams with Zero Checksums",
draft-ietf-6man-udpzero-12 (work in progress), February
2013.
[I-D.ietf-behave-sctpnat] [I-D.ietf-behave-sctpnat]
Stewart, R., Tuexen, M., and I. Ruengeler, "Stream Control Stewart, R., Tuexen, M., and I. Ruengeler, "Stream Control
Transmission Protocol (SCTP) Network Address Translation", Transmission Protocol (SCTP) Network Address Translation",
draft-ietf-behave-sctpnat-07 (work in progress), draft-ietf-behave-sctpnat-08 (work in progress), February
October 2012. 2013.
[I-D.ietf-tsvwg-natsupp] [I-D.ietf-tsvwg-natsupp]
Stewart, R., Tuexen, M., and I. Ruengeler, "Stream Control Stewart, R., Tuexen, M., and I. Ruengeler, "Stream Control
Transmission Protocol (SCTP) Network Address Translation Transmission Protocol (SCTP) Network Address Translation
Support", draft-ietf-tsvwg-natsupp-04 (work in progress), Support", draft-ietf-tsvwg-natsupp-05 (work in progress),
October 2012. February 2013.
Authors' Addresses Authors' Addresses
Michael Tuexen Michael Tuexen
Muenster University of Applied Sciences Muenster University of Applied Sciences
Stegerwaldstrasse 39 Stegerwaldstrasse 39
48565 Steinfurt 48565 Steinfurt
DE DE
Email: tuexen@fh-muenster.de Email: tuexen@fh-muenster.de
 End of changes. 23 change blocks. 
71 lines changed or deleted 87 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/