draft-ietf-tsvwg-sctp-udp-encaps-01.txt   draft-ietf-tsvwg-sctp-udp-encaps-02.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. Stewart
Expires: May 1, 2012 Adara Networks Expires: June 10, 2012 Adara Networks
October 29, 2011 December 8, 2011
UDP Encapsulation of SCTP Packets UDP Encapsulation of SCTP Packets
draft-ietf-tsvwg-sctp-udp-encaps-01.txt draft-ietf-tsvwg-sctp-udp-encaps-02.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.
skipping to change at page 1, line 36 skipping to change at page 1, line 36
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 May 1, 2012. This Internet-Draft will expire on June 10, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2011 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
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. SCTP over UDP . . . . . . . . . . . . . . . . . . . . . . . . . 4 4. SCTP over UDP . . . . . . . . . . . . . . . . . . . . . . . . 4
4.1. Architectural Considerations . . . . . . . . . . . . . . . 4 4.1. Architectural Considerations . . . . . . . . . . . . . . . 4
4.2. Packet Format . . . . . . . . . . . . . . . . . . . . . . . 4 4.2. Packet Format . . . . . . . . . . . . . . . . . . . . . . 4
4.3. Encapsulation Procedure . . . . . . . . . . . . . . . . . . 5 4.3. Encapsulation Procedure . . . . . . . . . . . . . . . . . 6
4.4. Decapsulation Procedure . . . . . . . . . . . . . . . . . . 5 4.4. Decapsulation Procedure . . . . . . . . . . . . . . . . . 6
4.5. ICMP considerations . . . . . . . . . . . . . . . . . . . . 6 4.5. ICMP considerations . . . . . . . . . . . . . . . . . . . 6
4.6. Path MTU considerations . . . . . . . . . . . . . . . . . . 6 4.6. Path MTU considerations . . . . . . . . . . . . . . . . . 7
4.7. Handling of Embedded IP-addresses . . . . . . . . . . . . . 6 4.7. Handling of Embedded IP-addresses . . . . . . . . . . . . 7
4.8. ECN considerations . . . . . . . . . . . . . . . . . . . . 6 4.8. ECN considerations . . . . . . . . . . . . . . . . . . . . 7
5. Socket API Considerations . . . . . . . . . . . . . . . . . . . 6 5. Socket API Considerations . . . . . . . . . . . . . . . . . . 7
5.1. Get or Set the Remote UDP Encapsulation Port Number 5.1. Get or Set the Remote UDP Encapsulation Port Number
(SCTP_REMOTE_UDP_ENCAPS_PORT) . . . . . . . . . . . . . . . 7 (SCTP_REMOTE_UDP_ENCAPS_PORT) . . . . . . . . . . . . . . 7
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 7 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
7. Security Considerations . . . . . . . . . . . . . . . . . . . . 7 7. Security Considerations . . . . . . . . . . . . . . . . . . . 8
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 7 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 8
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8
9.1. Normative References . . . . . . . . . . . . . . . . . . . 8 9.1. Normative References . . . . . . . . . . . . . . . . . . . 8
9.2. Informative References . . . . . . . . . . . . . . . . . . 8 9.2. Informative References . . . . . . . . . . . . . . . . . . 9
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 9 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 10
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 is defined in [RFC4960]. There are two main into UDP packets. SCTP as defined in [RFC4960] runs directly over
reasons for this: IPv4 or IPv6. There are two main reasons for encapsulating SCTP
packets:
o Allow SCTP traffic to pass legacy NATs, which do not provide o Allow SCTP traffic to pass legacy NATs, which do not provide
native SCTP support as specified in [I-D.ietf-behave-sctpnat] and native SCTP support as specified in [I-D.ietf-behave-sctpnat] and
[I-D.ietf-tsvwg-natsupp]. [I-D.ietf-tsvwg-natsupp].
o Allow SCTP to be implemented on hosts which do not provide direct o Allow SCTP to be implemented on hosts which do not provide direct
access to the IP-layer. In particular, applications can use their access to the IP-layer. In particular, applications can use their
own SCTP implementation if the operating system does not provide own SCTP implementation if the operating system does not provide
one. one.
skipping to change at page 4, line 23 skipping to change at page 4, line 23
reconfiguration extension described in [RFC5061] must be used with reconfiguration extension described in [RFC5061] must be used with
wildcard addresses in combination with [RFC4895]. wildcard addresses in combination with [RFC4895].
For multi-homed SCTP association the address management as described For multi-homed SCTP association the address management as described
in Section 4.7 MUST be performed. in Section 4.7 MUST be performed.
4. SCTP over UDP 4. SCTP over UDP
4.1. Architectural Considerations 4.1. Architectural Considerations
An SCTP implementation supporting UDP encapsulation MUST store a UDP An SCTP implementation supporting UDP encapsulation MUST store a
encapsulation port per destination address for each SCTP association. 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. The IANA
assigned value of 9989 MAY be used as this port number. 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). However, this is not possible if the SCTP stack is
implemented as part of an application.
4.2. Packet Format 4.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 5, line 37 skipping to change at page 6, line 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SCTP Chunk #n | | SCTP Chunk #n |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2 Figure 2
The UDP checksum MUST NOT be zero. The UDP checksum MUST NOT be zero.
4.3. Encapsulation Procedure 4.3. Encapsulation Procedure
When inserting the UDP header, the source port is 9899, the When inserting the UDP header, the source port is the local UDP
destination port is the one stored for the destination address the encapsulation port number of the SCTP stack, the destination port is
packet is sent to or 9899 if no destination address is stored. the remote UDP encapsulation port number stored for the destination
address the packet is sent to (see Section 4.1).
The length of the UDP packet is the length of the SCTP packet plus The length of the UDP packet is the length of the SCTP packet plus
the size of the UDP header. the size of the UDP header.
The UDP checksum and the SCTP checksum MUST be computed. The UDP checksum and the SCTP checksum MUST be computed.
4.4. Decapsulation Procedure 4.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 a lookup is performed to find the association the received SCTP Then a lookup is performed to find the association the received SCTP
packet belongs to. The UDP source port is stored as the packet belongs to. The UDP source port is stored as the
encapsulation port for the destination address the SCTP packet is encapsulation port for the destination address the SCTP packet is
received from (see Section 4.1). received from (see Section 4.1).
Please note that when a non-encapsulated SCTP packet is received, the Please note that when a non-encapsulated SCTP packet is received, the
encapsulation of outgoing packets belonging to the same association encapsulation of outgoing packets belonging to the same association
and the corresponding destination address is disabled. and the corresponding destination address is disabled.
4.5. ICMP considerations 4.5. ICMP considerations
When receiving ICMP or ICMPv6 response packet, there might not be When receiving ICMP or ICMPv6 response packets, there might not be
enough bytes in the payload to identify the SCTP association which enough bytes in the payload to identify the SCTP association which
the SCTP packet triggering the ICMP or ICMPv6 packet belongs to. If the SCTP packet triggering the ICMP or ICMPv6 packet belongs to. If
a received ICMP or ICMPv6 packet can not be related to a specific a received ICMP or ICMPv6 packet can not be related to a specific
SCTP association, it MUST be discarded silently. SCTP association, it MUST be discarded silently. This means in
particular that the SCTP stack MUST NOT rely on receiving ICMP or
ICMPv6 messages. There MAY be implementation constraints not
allowing to process received ICMP or ICMPv6 messages at all.
If received ICMP or ICMPv6 messages are processed, the following
mapping SHOULD apply:
1. ICMP messages with type 'Destination Unreachable' and code 'Port
Unreachable' SHOULD be treated as ICMP messages with type
'Protocol Unreachable' and code 'Destination Port unreachable.
See [RFC0792] for more details.
2. ICMPv6 messages with type 'Destination Unreachable' and code
'Port unreachable' SHOULD be treated as ICMPv6 messages with type
'Parameter Problem' and code 'Unrecognized Next Header type
encountered'. See [RFC4443] for more details.
4.6. Path MTU considerations 4.6. Path MTU considerations
If an SCTP endpoint starts to encapsulate the packets of a path, it If an SCTP endpoint starts to encapsulate the packets of a path, it
MUST decrease the path MTU of that path by the size of the UDP MUST decrease the path MTU of that path by the size of the UDP
header. If it stops encapsulating them, the path MTU SHOULD be header. If it stops encapsulating them, the path MTU SHOULD be
increased by the size of the UDP header. increased by the size of the UDP header.
When performing path MTU discovery as described in [RFC4820] and When performing path MTU discovery as described in [RFC4820] and
[RFC4821] it MUST be taken into account that one cannot rely on the [RFC4821] it MUST be taken into account that one cannot rely on the
skipping to change at page 7, line 26 skipping to change at page 8, line 14
struct sctp_udpencaps { struct sctp_udpencaps {
sctp_assoc_t sue_assoc_id; sctp_assoc_t sue_assoc_id;
struct sockaddr_storage sue_address; struct sockaddr_storage sue_address;
uint16_t sue_port; uint16_t sue_port;
}; };
sue_assoc_id: This parameter is ignored for one-to-one style sue_assoc_id: This parameter is ignored for one-to-one style
sockets. For one-to-many style sockets the application may fill sockets. For one-to-many style sockets the application may fill
in an association identifier or SCTP_FUTURE_ASSOC for this query. in an association identifier or SCTP_FUTURE_ASSOC for this query.
It is an error to use SCTP_{CURRENT|ALL}_ASSOC in spp_assoc_id. It is an error to use SCTP_{CURRENT|ALL}_ASSOC in sue_assoc_id.
sue_address: This specifies which address is of interest. If a sue_address: This specifies which address is of interest. If a
wildcard address is provided it applies only to future paths. wildcard address is provided it applies only to future paths.
sue_port: The UDP port number used as the destination port number sue_port: The UDP port number in network byte order used as the
for UDP encapsulation. Providing a value of 0 disables UDP destination port number for UDP encapsulation. Providing a value
encapsulation. of 0 disables UDP encapsulation.
6. IANA Considerations 6. IANA Considerations
This document does not require any actions from IANA. This document does not require any actions from IANA.
7. Security Considerations 7. 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].
8. Acknowledgments 8. Acknowledgments
The authors wish to thank Irene Ruengeler for her invaluable The authors wish to thank Irene Ruengeler and Dan Wing for their
comments. invaluable comments.
9. References 9. References
9.1. Normative References 9.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 1981. 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 [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. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998. (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 [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.
 End of changes. 15 change blocks. 
42 lines changed or deleted 78 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/