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