Internet DRAFT - draft-boucadair-pcp-rtp-rtcp
draft-boucadair-pcp-rtp-rtcp
PCP WG M. Boucadair
Internet-Draft France Telecom
Intended status: Standards Track S. Sivakumar
Expires: April 18, 2013 Cisco
October 15, 2012
Reserving N and N+1 Ports with PCP
draft-boucadair-pcp-rtp-rtcp-05
Abstract
This document defines a new PCP Option to reserve a pair of ports (N
and N+1) by a PCP-controlled device while preserving the parity and
contiguity. This PCP Option eases the NAT traversal for applications
having requirements on the port parity and contiguity (e.g., RTP/
RTCP).
Requirements Language
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 [RFC2119].
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 April 18, 2013.
Copyright Notice
Copyright (c) 2012 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
Boucadair & Sivakumar Expires April 18, 2013 [Page 1]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
(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
2. Why N/N+1 Option is Needed? . . . . . . . . . . . . . . . . . 3
3. Definition of the Port Reservation Option . . . . . . . . . . 4
3.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Rationale . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3. PCP Port Reservation Option . . . . . . . . . . . . . . . 5
4. Client Behaviour . . . . . . . . . . . . . . . . . . . . . . . 5
5. Server Behaviour . . . . . . . . . . . . . . . . . . . . . . . 6
6. Illustration Examples . . . . . . . . . . . . . . . . . . . . 7
6.1. Port Reservation Option Not Supported by The PCP Server . 7
6.2. Port Reservation Option Is Supported by The PCP Server . . 8
6.3. Delete the Mappings . . . . . . . . . . . . . . . . . . . 10
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
8. Security Considerations . . . . . . . . . . . . . . . . . . . 12
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 12
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13
10.1. Normative References . . . . . . . . . . . . . . . . . . . 13
10.2. Informative References . . . . . . . . . . . . . . . . . . 13
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 13
Boucadair & Sivakumar Expires April 18, 2013 [Page 2]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
1. Introduction
This document defines a new PCP Option [I-D.ietf-pcp-base] which aims
to ease the traversal of RTP/RTCP based applications [RFC3550] when a
NAT is involved in the path.
The main advantage of using PCP is it does not need any further
feature to be supported by the outbound proxy to assist the remote
endpoint to successfully establish media sessions. In particular,
ALGs are not required in the NAT for this purpose and no dedicated
functions at the media gateway are needed.
The base PCP specification allows to retrieve the external IP address
and external port to be conveyed in the SIP signaling messages
[RFC3261]. Therefore SIP Proxy Servers do not need to support means
to ease the NAT traversal of SIP messages (e.g., [RFC5626],
[RFC6223], etc.). Another advantage of using the external IP address
and port is this provides a hint to the proxy server there is no need
to return a small expire timer (e.g., 60s).
This option has been implemented as reported in
[I-D.boucadair-pcp-nat64-experiments]; no issue has been reported in
that document.
2. Why N/N+1 Option is Needed?
Traditionally the voice/video applications that use RTP and RTCP
would specify only the RTP port that the application would use for
streaming the RTP data. The inherent assumption is that the RTCP
traffic will be sent on the next higher port. Below is provided an
excerpt from [RFC3550]:
"RTP relies on the underlying protocol(s) to provide de-
multiplexing of RTP data and RTCP control streams. For UDP and
similar protocols, RTP SHOULD use an even destination port number
and the corresponding RTCP stream SHOULD use the next higher (odd)
destination port number. For applications that take a single port
number as a parameter and derive the RTP and RTCP port pair from
that number, if an odd number is supplied then the application
SHOULD replace that number with the next lower (even) number to
use as the base of the port pair. For applications in which the
RTP and RTCP destination port numbers are specified via explicit,
separate parameters (using a signaling protocol or other means),
the application MAY disregard the restrictions that the port
numbers be even/odd and consecutive although the use of an even/
odd port pair is still encouraged."
Boucadair & Sivakumar Expires April 18, 2013 [Page 3]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
[RFC3605] defines an explicit "a=RTCP" SDP attribute for some
applications using a distinct port than RTP+1. Even though [RFC3605]
defines a new attribute for explicitly specifying the RTCP attribute
for the SDP based applications, but since it is not a MUST to use
this attribute, there are still applications that are not compliant
with this RFC. There are also non-SDP based applications that use
RTP/RTCP like H323, that make the assumption that RTCP streaming will
happen on RTP+1 port.
In order for these applications to work across NAT, the NAT device
must have an application layer gateway, that would allocate two
consecutive ports. In a PCP context, a similar functionality need to
be provided for the PCP Client to request two consecutive ports and
the PCP Server to allocate and respond with the information of the
allocated port.
This document describes the mechanism to request a pair of
consecutive ports for a PCP-controlled device and the corresponding
mechanism for the PCP Server to allocate and respond to the port
allocation request.
It is acknowledged that modern applications adopt new approaches
(e.g., use the same port for both RTP and RTCP) which does not
encounter the problem raised above. This document do not target
those applications but "legacy" ones.
3. Definition of the Port Reservation Option
3.1. Requirements
The PCP Option used to reserve a port pair should meet the following
requirements:
1. Preserve the port parity as discussed in Section 4.2.2 of
[RFC4787].
2. Preserve port contiguity as discussed in Section 4.2.3 of
[RFC4787] (i.e., RTCP = RTP+1).
3.2. Rationale
Since PCP does not support a mechanism to include multiple port
numbers in the same request/response, only the RTP port is explicitly
signaled in PCP messages. The companion port (i.e., RTCP port) is
reserved too by the PCP Server.
Boucadair & Sivakumar Expires April 18, 2013 [Page 4]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
3.3. PCP Port Reservation Option
The format of the PCP Port Reservation Option is defined in Figure 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PORT_RESRV_OPT | Reserved | 0..0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This Option:
Option Name: Port Reservation Option (PORT_RESRV_OPT)
Number: TBA (IANA)
Purpose: Used to retrieve a pair of ports
Valid for Opcodes: MAP
Length: 0
May appear in: both request and response
Maximum occurrences: 1
Figure 1: Port Reservation Option (a.k.a., N/N+1 port)
4. Client Behaviour
To retrieve a pair of ports following the requirements listed in
Section 3.1, the PCP Client adds the Port Reservation Option to its
PCP MAP request. The PCP Client MAY indicate its preferred external
port. This port number is likely to be equal to the internal port
indicated in the PCP request.
Once a response is received from the PCP Server, the PCP Client
checks whether the Port Reservation Option is supported by the peer
PCP Server following the procedure defined in Section 7.3 of
[I-D.ietf-pcp-base].
If the answer is positive, the PCP Client retrieves the mapping
returned by the PCP Server; in particular the external port number
should be even. For the RTP case, this port is indicated to the
remote peer as the port number used for RTP flows; RTCP is assumed
to use the returned external port number + 1.
If the Port Reservation Option is not supported by the PCP Server,
and according to the port quota, only the RTP port can be signaled
to the remote endpoint (e.g., SDP offer/answer [RFC4566]). RTCP
flows are likely to fail if no mechanism to assist the traversal
Boucadair & Sivakumar Expires April 18, 2013 [Page 5]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
of RTCP flows is supported (e.g., "a=RTCP" attribute).
When a pair of ports is retrieved from the PCP Server, two mappings
are instantiated in both the PCP Server and PCP Client. For explicit
deletion of these mappings, the PCP Client and PCP Server follow the
procedure defined in Section 11.5 of [I-D.ietf-pcp-base] for each
port mapping.
To reduce the delay to establish media sessions, the PCP Client MAY
reserve a pair of ports once the (SIP) registration phase has been
successfully completed. These pair of ports will be included in SDP
offers/answsers for instance.
5. Server Behaviour
Upon receiving the Port Reservation Option in a PCP request, the PCP
Server validates the request for the supported OpCode values. If an
unrecognized value is received a Invalid request error is returned to
the PCP Client (e.g., using MALFORMED_REQUEST error). The reason for
rejecting the request could be an invalid internal IP address,
invalid Internal port, etc.
For a valid request, the PCP Server collects the Internal port and
the hinted external port and verify against any administrative rules
to allow or disallow the PCP Client from making this request. An
example of an administrative rule will be by fulfilling the request
it would put the client over its administratively allowed limits. In
those cases, the PCP Server will treat this as an error and this is
handled the same way as described in [I-D.ietf-pcp-base] for the
denial of honoring the request with the appropriate Opcode.
To handle the PCP Reservation Option by the PCP Server, the procedure
defined in Section 7.3 of [I-D.ietf-pcp-base] should be followed.
When PCP Reservation Option is not supported, the PCP Server MUST
treat the request as any PCP request to create an individual mapping.
If port parity preservation is supported by the PCP Server, an even
port is likely to be returned to the PCP Client. Otherwise, a port
is returned if the port quota is not reached.
The following describes the behavior of the PCP Server when the PCP
Reservation Option is supported.
The PCP Server should request the controlling NAT device to allocate
a pair of consecutive ports. If there is a hinted external port
present in the request, the server MAY try to honor the request. The
PCP Server MUST honor the parity by requesting the allocation of
ports that match the parity. However, there is no guarantee that the
Boucadair & Sivakumar Expires April 18, 2013 [Page 6]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
hinted external ports are available or be allocated. Two mappings
are therefore instantiated by the PCP Server with the same lifetime
value. These mappings are treated as any individual mapping.
If a mapping already exists and the PCP Reservation Option can be
honored, the PCP Server instantiate the companion mapping and sends
back a positive answer to the requesting PCP Client.
If the port allocation failed either because of the unavailability of
ports or the port parity could not be honored, the PCP Server SHOULD
reserve only one external port. The PCP Server SHOULD indicate in
the response that the PCP Reservation Option has not been honored as
specified in Section 6.3 of [I-D.ietf-pcp-base].
If the request contains the PREFER_FAILURE option and one or both
hinted external ports (i.e., the hinted external port number and
hinted external port number + 1) cannot be allocated, the PCP Server
MUST reply with result code CANNOT_PROVIDE_EXTERNAL_PORT.
6. Illustration Examples
This section provides a list of examples to illustrate the usage of
PCP Port Reservation Option.
6.1. Port Reservation Option Not Supported by The PCP Server
Figure 2 shows an example of the flow exchange which is observed when
the PORT_RESERVATION_OPTION is not supported by the PCP Server.
Boucadair & Sivakumar Expires April 18, 2013 [Page 7]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
+------+ +------+
| PCP | | PCP |
|Client| |Server|
+------+ +------+
| (1) PCP MAP Request |
| protocol= UDP |
| internal-ip-address= 198.51.100.1 |
| internal-port= 6000 |
| PORT_RESERVATION_OPTION |
|---------------------------------->|
| |
| (2) PCP MAP Response |
| protocol= UDP |
| internal-ip-address= 198.51.100.1 |
| internal-port= 6000 |
| external-ip-address= 192.0.2.1 |
| external-port= 15659 |
| assigned-lifetime= 3600 |
| UNSUPP_OPTION(PORT_RESRV_OPT) |
|<----------------------------------|
| |
Figure 2: Flow Example of a PCP Server which does not support the
Port Reservation Option
6.2. Port Reservation Option Is Supported by The PCP Server
Figure 3 and Figure 4 illustrate two examples of the flow exchanges
which are observed when the PORT_RESERVATION_OPTION is supported by
the PCP Server. Figure 3 shows an example of a PCP Server supporting
the option and honoring the requested external port number. Figure 4
shows an example of a PCP Server supporting the option but not
honoring the requested external port number.
Boucadair & Sivakumar Expires April 18, 2013 [Page 8]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
+------+ +------+
| PCP | | PCP |
|Client| |Server|
+------+ +------+
| (1) PCP MAP Request |
| protocol= UDP |
| internal-ip-address= 198.51.100.1 |
| internal-port= 6000 |
| PORT_RESERVATION_OPTION |
|---------------------------------->|
| |
| (2) PCP MAP Response |
| protocol= UDP |
| internal-ip-address= 198.51.100.1 |
| internal-port= 6000 |
| external-ip-address= 192.0.2.1 |
| external-port= 6000 |
| assigned-lifetime= 3600 |
| PORT_RESERVATION_OPTION |
|<----------------------------------|
| |
Figure 3: Flow Example of a PCP Server supporting the option and
honoring the hinted external port
Boucadair & Sivakumar Expires April 18, 2013 [Page 9]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
+------+ +------+
| PCP | | PCP |
|Client| |Server|
+------+ +------+
| (1) PCP MAP Request |
| protocol= UDP |
| internal-ip-address= 198.51.100.1 |
| internal-port= 6000 |
| PORT_RESERVATION_OPTION |
|---------------------------------->|
| |
| (2) PCP MAP Response |
| protocol= UDP |
| internal-ip-address= 198.51.100.1 |
| internal-port= 6000 |
| external-ip-address= 192.0.2.1 |
| external-port= 12000 |
| assigned-lifetime= 3600 |
| PORT_RESERVATION_OPTION |
|<----------------------------------|
| |
Figure 4: Flow Example of a PCP Server supporting the option but not
honoring the hinted external port
6.3. Delete the Mappings
Figure 5 and Figure 6 shows the exchanges that occur to delete the
created mappings.
Boucadair & Sivakumar Expires April 18, 2013 [Page 10]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
+------+ +------+
| PCP | | PCP |
|Client| |Server|
+------+ +------+
| PCP MAP Request |
| protocol= UDP |
| internal-ip-address= 198.51.100.1 |
| internal-port= 6000 |
| external-ip-address= 192.0.2.1 |
| external-port= 6000 |
| requested-lifetime= 0 |
|---------------------------------->|
| |
| PCP MAP Request |
| protocol= UDP |
| internal-ip-address= 198.51.100.1 |
| internal-port= 6001 |
| external-ip-address= 192.0.2.1 |
| external-port= 6001 |
| requested-lifetime= 0 |
|---------------------------------->|
| |
Figure 5: Flow example to delete the mappings
Boucadair & Sivakumar Expires April 18, 2013 [Page 11]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
+------+ +------+
| PCP | | PCP |
|Client| |Server|
+------+ +------+
| |
| PCP MAP Request |
| protocol= UDP |
| internal-ip-address= 198.51.100.1 |
| internal-port= 6000 |
| external-ip-address= 192.0.2.1 |
| external-port= 12000 |
| requested-lifetime= 0 |
|---------------------------------->|
| |
| PCP MAP Request |
| protocol= UDP |
| internal-ip-address= 198.51.100.1 |
| internal-port= 6001 |
| external-ip-address= 192.0.2.1 |
| external-port= 12001 |
| requested-lifetime= 0 |
|---------------------------------->|
| |
Figure 6: Flow example to delete the mappings (2)
7. IANA Considerations
This document requests the assignment of a new PCP Option code:
Option Name Value
----------------- -----
PORT_RESERVATION_OPTION TBA
8. Security Considerations
This document does not introduce any security issue in addition to
what is taken into account in [I-D.ietf-pcp-base].
9. Acknowledgments
Many thanks to S. Perrault for his comments.
10. References
Boucadair & Sivakumar Expires April 18, 2013 [Page 12]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
10.1. Normative References
[I-D.ietf-pcp-base]
Wing, D., Cheshire, S., Boucadair, M., Penno, R., and P.
Selkirk, "Port Control Protocol (PCP)",
draft-ietf-pcp-base-28 (work in progress), October 2012.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
June 2002.
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V.
Jacobson, "RTP: A Transport Protocol for Real-Time
Applications", STD 64, RFC 3550, July 2003.
[RFC3605] Huitema, C., "Real Time Control Protocol (RTCP) attribute
in Session Description Protocol (SDP)", RFC 3605,
October 2003.
[RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
Description Protocol", RFC 4566, July 2006.
[RFC4787] Audet, F. and C. Jennings, "Network Address Translation
(NAT) Behavioral Requirements for Unicast UDP", BCP 127,
RFC 4787, January 2007.
10.2. Informative References
[I-D.boucadair-pcp-nat64-experiments]
Abdesselam, M., Boucadair, M., Hasnaoui, A., and J.
Queiroz, "PCP NAT64 Experiments",
draft-boucadair-pcp-nat64-experiments-00 (work in
progress), September 2012.
[RFC5626] Jennings, C., Mahy, R., and F. Audet, "Managing Client-
Initiated Connections in the Session Initiation Protocol
(SIP)", RFC 5626, October 2009.
[RFC6223] Holmberg, C., "Indication of Support for Keep-Alive",
RFC 6223, April 2011.
Boucadair & Sivakumar Expires April 18, 2013 [Page 13]
Internet-Draft PCP Port Reservation Option (N/N+1) October 2012
Authors' Addresses
Mohamed Boucadair
France Telecom
Rennes, 35000
France
Email: mohamed.boucadair@orange.com
Senthil Sivakumar
Cisco
7100 Kit Creek Road
Research Triangle Park, North Carolina 27709
USA
Email: ssenthil@cisco.com
Boucadair & Sivakumar Expires April 18, 2013 [Page 14]