Internet DRAFT - draft-boucadair-pcp-nat64-prefix64-option
draft-boucadair-pcp-nat64-prefix64-option
PCP Working Group M. Boucadair
Internet-Draft France Telecom
Intended status: Standards Track September 12, 2012
Expires: March 16, 2013
Learn NAT64 PREFIX64s using PCP
draft-boucadair-pcp-nat64-prefix64-option-02
Abstract
This document defines a new PCP Option/OpCode to learn the
Prefix64(s) used by a PCP-controlled NAT64 device to build IPv4-
embedded IPv6 addresses. This Option/OpCode is needed for successful
communications when IPv4 addresses are used in referrals (e.g., SIP).
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 March 16, 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
(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.
Boucadair Expires March 16, 2013 [Page 1]
Internet-Draft PCP & NAT64 September 2012
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Requirements Language . . . . . . . . . . . . . . . . . . . . 4
4. PREFIX64 Option . . . . . . . . . . . . . . . . . . . . . . . 4
4.1. Format . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.2. Behaviour . . . . . . . . . . . . . . . . . . . . . . . . 5
5. GET_PREFIX64 OpCode . . . . . . . . . . . . . . . . . . . . . 6
6. Flow Examples . . . . . . . . . . . . . . . . . . . . . . . . 7
6.1. Examples with PREFIX64 PCP Option . . . . . . . . . . . . 7
6.2. Examples with GET_PREFIX64 OpCode . . . . . . . . . . . . 9
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11
8. Security Considerations . . . . . . . . . . . . . . . . . . . 11
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 11
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12
10.1. Normative References . . . . . . . . . . . . . . . . . . . 12
10.2. Informative References . . . . . . . . . . . . . . . . . . 12
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 12
Boucadair Expires March 16, 2013 [Page 2]
Internet-Draft PCP & NAT64 September 2012
1. Introduction
This document defines a new PCP Option/OpCode [I-D.ietf-pcp-base] to
inform PCP Clients about the Prefix64 [RFC6052] used by a PCP-
controlled NAT64 device [RFC6146].
This Option is required to help establishing communications between
IPv6-only hosts and remote IPv4-hosts. An illustration example is
shown in Figure 1. In this example, NAT64 is co-located with a PCP
server while IPv6-only SIP UA interacts with a PCP Client.
In Figure 1, the PCP Client issues a PCP MAP request with
PORT_RESERVATION_OPTION to reserve a pair of ports preserving parity
and contiguity [I-D.boucadair-pcp-rtp-rtcp]. A pair of ports and an
external IPv4 address are then returned by the PCP server to the
requesting PCP Client. This information is used by the IPv6-only SIP
UA to build its SDP offer which contains exclusively IPv4 addresses
(especially in the "c=" line, the port indicated for media port is
the external port assigned by the PCP server). The INVITE request
including the SDP offer is then forwarded by the NAT64 to the Proxy
Server which will relay it to the called party (i.e., IPv4-only SIP
UA) (Steps (1) to (3)). IPv4-only SIP UA accepts the offer and sends
back its SDP answer in a "200 OK" message which is relayed by the SIP
Proxy Server and NAT64 until being delivered to IPv6-only SIP UA
(Steps (4) to (6)). At the end of this process, IPv4-only SIP UA can
send media streams to the IPv4 address/port as indicated in the SDP
offer while IPv6-only SIP UA can not send media streams as only IPv4
addresses are present in the SDP answer.
+---------+ +-----+ +------------+ +---------+
|IPv6-only| |NAT64| | IPv4 SIP | |IPv4-only|
| SIP UA | | | |Proxy Server| | SIP UA |
+---------+ +-----+ +------------+ +---------+
| (a) PCP MAP REQUEST | | |
|PORT_RESERVATION_OPTION| | |
|======================>| | |
| (b) PCP MAP RESPONSE | | |
|PORT_RESERVATION_OPTION| | |
|<======================| | |
| | | |
| (1) SIP INVITE | (2) SIP INVITE | (3) SIP INVITE |
|======================>|===============>|================>|
| (6) SIP 200 OK | (5) SIP 200 OK | (4) SIP 200 OK |
|<======================|<===============|<================|
| | | |
Figure 1
Boucadair Expires March 16, 2013 [Page 3]
Internet-Draft PCP & NAT64 September 2012
A solution is proposed in Section 4 and Section 5.
2. Use Cases
This issue is not specific to SIP but it is valid for all
applications using IP addresses in referrals. The option/OpCode
defined in this document can be used in various schemes as listed
below (the list is not exhaustive):
o For hosts with DNS64 capability, added to the host's stub-
resolver. The stub resolver on the host will try to obtain
(native) AAAA records and if it they are not found, the DNS64
function on the host will query for A records and then synthesizes
AAAA records. Using the PREFIX64 PCP Option, the host's stub-
resolver can learn the prefix used for IPv6/IPv4 translator and
synthesize AAAA records accordingly.
o As Peer-to-Peer (P2P) communications for real-time communication
is becoming popular with RTCWEB (e.g., P2P for Media, data
channels for file transfer etc), this option can be used to help
for NAT64 traversal. SIP is only one example among those
protocols.
o Can be used for any application using referrals.
3. 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 [RFC2119].
4. PREFIX64 Option
4.1. Format
The format of PREFIX64 PCP Option is depicted in Figure 2.
Boucadair Expires March 16, 2013 [Page 4]
Internet-Draft PCP & NAT64 September 2012
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Code | Reserved | Option Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix64 (Variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Prefix64 PCP Option
The description of the fields is as follows:
o Option Code: To be assigned by IANA.
o Option Length: Indicates in octets the length of the Prefix64.
Allowed values are 4, 5, 6, 7, 8, or 12 [RFC6052].
o Prefix64: This field identifies the IPv6 unicast prefix to be used
for constructing an IPv4-embedded IPv6 address from an IPv4
address. The address synthesize MUST follow the guidelines
documented in [RFC6052].
Option Name: PREFIX64
Number: To be assigned by IANA.
Purpose: Learn the prefix used by the NAT64 to build
IPv4-embedded IPv6 addresses. This is be used by a host
for local address synthesis (e.g., when IPv4 address is
present in referrals).
Valid for Opcodes: MAP
Length: Variable
May appear in: request, response.
Maximum occurrences: 1
4.2. Behaviour
A PCP Client MAY include a PREFIX64 PCP Option in a MAP request to
learn the IPv6 prefix used by an upstream PCP-controlled NAT64
device. When enclosed in a MAP request, PREFIX64 MUST be set to
::/96.
A PCP Server controlling a NAT64 SHOULD be configured to return the
value of the Prefix64 used to build IPv4-embedded IPv6 addresses to
requesting PCP Clients. When allowed, PREFIX64 PCP Option conveys
the value of Prefix64.
A PCP Server controlling a NAT64 SHOULD inject a PREFIX64 PCP Option
in MAP responses even if the option is not listed in the associated
request.
Boucadair Expires March 16, 2013 [Page 5]
Internet-Draft PCP & NAT64 September 2012
Upon receipt of the PREFIX64 PCP Option, the host embedding the PCP
Client uses Prefix64 for local address synthesize [RFC6052].
A PCP Client SHOULD associate each received Prefix64 with the PCP
Server from which the Prefix64 information was retrieved.
5. GET_PREFIX64 OpCode
Discussion: Both PREFIX64 option and OpCode are maintained in this
version of the document. Based on the WG inputs, both or only one
of them will be maintained.
This OpCode allows to retrieve a list of Prefix64s configured on the
PCP-controlled NAT64 (see Figure 3). "Prefix64/IPv4 Prefix Count"
indicates the number of Prefix64 prefixes included in the response.
Each Prefix64 is associated with an IPv4 prefix. "Prefix64/IPv4
Prefix Count" field MUST be set to 0 in a request and MUST be set to
the number of included {Prefix64, IPv4 subnet} in a response.
This allows to return in the same response the list of configured
PREFIX64s per IPv4 prefix range.
An IPv4 prefix is represented as "IPv4 Address/IPv4 Prefix Length".
IPv6 Prefix Length field indicates in bits the length of the
Prefix64; allowed values are 32, 40, 48, 56, 64 and 96. Prefix64
field MUST be set to ::/96 in a request and MUST be set to the value
of the Prefix64 used to construct IPv4-embedded IPv6 addresses for a
given IPv4 subnet. a wildcard "IPv4 Address/IPv4 Prefix Length" means
the associated Prefix64 is valid for any IPv4 address.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix64/IPv4 Prefix Count | Reserved (16bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Prefix Length | IPv6 Prefix Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Address (32 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
: Prefix64 (Variable) :
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: GET_PREFIX64 Opcode
Boucadair Expires March 16, 2013 [Page 6]
Internet-Draft PCP & NAT64 September 2012
A server MUST be configured to accept or ignore this OpCode. At
receipt of a request, if it is configured to accept this OpCode, the
PCP Server controlling a NAT64 MUST return the list of configured
Prefix64s for each IPv4 subnet. If a single Prefix64 is configured
for all IPv4 addresses, a wildcard IPv4 prefix MUST be returned in
the response together with the configured Prefix64.
Retrieved Prefix64s are used locally to construct IPv4-embedded IPv6
addresses. If several Prefix64s are discovered, if the destination
IPv4 address matches an IPv4 prefix in the list, the associated
Prefix64 is used to construct the corresponding IPv6 address.
6. Flow Examples
6.1. Examples with PREFIX64 PCP Option
Figure 4 shows an example of the use of the option defined in
Section 4.
+---------+ +-----+ +------------+ +---------+
|IPv6-only| |NAT64| | IPv4 SIP | |IPv4-only|
| SIP UA | | | |Proxy Server| | SIP UA |
+---------+ +-----+ +------------+ +---------+
| (a) PCP MAP REQUEST | | |
|PORT_RESERVATION_OPTION| | |
| PREFIX64_OPTION | | |
|======================>| | |
| (b) PCP MAP RESPONSE | | |
|PORT_RESERVATION_OPTION| | |
| PREFIX64_OPTION | | |
|<======================| | |
| (1) SIP INVITE | (2) SIP INVITE | (3) SIP INVITE |
|======================>|===============>|================>|
| (6) SIP 200 OK | (5) SIP 200 OK | (4) SIP 200 OK |
|<======================|<===============|<================|
| (7) SIP ACK | (8) SIP ACK | (9) SIP ACK |
|======================>|===============>|================>|
| | | |
|<======IPv6 RTP=======>|<============IPv4 RTP============>|
|<===== IPv6 RTCP======>|<============IPv4 RTCP===========>|
| | |
Figure 4: Example of IPv6 to IPv4 SIP initiated Session
In Steps (a) and (b), the IPv6-only SIP UA retrieves a pair of ports
Boucadair Expires March 16, 2013 [Page 7]
Internet-Draft PCP & NAT64 September 2012
to be used for RTP/RTCP, the external IPv4 address and the Prefix64
to be used to build IPv4-embedded IPv6 addresses. The retrieved IPv4
address and port numbers are used to build the SDP offer in Step (1)
while Prefix64 is used to construct a corresponding IPv6 address of
the IPv4 address enclosed in the SDP answer made by the IPv4-only SIP
UA (Step 6). RTP/RTCP flows are exchanged between an IPv6-only SIP
UA and an IPv4-only UA without requiring any ALG at the NAT64 and no
particular function to be supported by the IPv4-only SIP Proxy Server
to help establishing the session (e.g., Hosted NAT traversal).
Now when the session is initiated from IPv4 SIP UA (see Figure 5):
Steps (a) and (b), the IPv6-only SIP UA retrieves a pair of ports to
be used for RTP/RTCP, the external IPv4 address and the Prefix64 to
be used to build IPv4-embedded IPv6 addresses. These two steps can
be delayed until receiving the INVITE message (Step 3).
It is recommended to pre-reserve a pair of port to optimize the
required session establishment delay.
The retrieved IPv4 address and port numbers are used to build the SDP
answer in Step (4) while Prefix64 is used to construct a
corresponding IPv6 address of the IPv4 address enclosed in the SDP
offer made by the IPv4-only SIP UA (Step 3). RTP/RTCP flows are
exchanged between an IPv6-only SIP UA and an IPv4-only UA without
requiring any ALG at the NAT64 and no particular function to be
supported by the IPv4-only SIP Proxy Server to help establishing the
session (e.g., Hosted NAT traversal).
Boucadair Expires March 16, 2013 [Page 8]
Internet-Draft PCP & NAT64 September 2012
+---------+ +-----+ +------------+ +---------+
|IPv6-only| |NAT64| | IPv4 SIP | |IPv4-only|
| SIP UA | | | |Proxy Server| | SIP UA |
+---------+ +-----+ +------------+ +---------+
| (a) PCP MAP REQUEST | | |
|PORT_RESERVATION_OPTION| | |
| PREFIX64_OPTION | | |
|======================>| | |
| (b) PCP MAP RESPONSE | | |
|PORT_RESERVATION_OPTION| | |
| PREFIX64_OPTION | | |
|<======================| | |
| (3) SIP INVITE | (2) SIP INVITE | (1) SIP INVITE |
|<======================|<===============|<================|
| (4) SIP 200 OK | (5) SIP 200 OK | (6) SIP 200 OK |
|======================>|===============>|================>|
| (9) SIP ACK | (8) SIP ACK | (7) SIP ACK |
|<======================|<===============|<================|
| | | |
|<======IPv6 RTP=======>|<============IPv4 RTP============>|
|<===== IPv6 RTCP======>|<============IPv4 RTCP===========>|
| | |
Figure 5: Example of IPv4 to IPv6 SIP initiated Session
6.2. Examples with GET_PREFIX64 OpCode
Figure 6 shows an example of the use of the OpCode defined in
Section 5.
Unlike previous examples, two requests are needed to place this
session: Steps (a) and (b) are used to retrieve the list of {IPv4
subnet, Prefix64::/n} while Steps (c) and (d) are used to reserve a
pair of port and learn the assigned IPv4 address. The remaining
steps are similar to Figure 4.
The order of sending the requests is shown for illustration purposes.
Another order to issue the request may be adopted, e.g.,
1. GET_PREFIX64 and MAP requests can be sent simultaneously.
2. GET_PREFIX64 request can be sent after MAP returned an IPv4
external IP address.
3. GET_PREFIX64 request can be issued at the bootstrap of the
application. No need to issue the request for each new session.
Boucadair Expires March 16, 2013 [Page 9]
Internet-Draft PCP & NAT64 September 2012
+---------+ +-----+ +------------+ +---------+
|IPv6-only| |NAT64| | IPv4 SIP | |IPv4-only|
| SIP UA | | | |Proxy Server| | SIP UA |
+---------+ +-----+ +------------+ +---------+
|(a)PCP GET_PREFIX64 REQ| | |
|======================>| | |
|(b)PCP GET_PREFIX64 REP| | |
|List of {IPv4 subnet, | | |
| Prefix64::/n} | | |
|<======================| | |
| (c) PCP MAP REQUEST | | |
|PORT_RESERVATION_OPTION| | |
|======================>| | |
| (d) PCP MAP RESPONSE | | |
|PORT_RESERVATION_OPTION| | |
|<======================| | |
| (1) SIP INVITE | (2) SIP INVITE | (3) SIP INVITE |
|======================>|===============>|================>|
| (6) SIP 200 OK | (5) SIP 200 OK | (4) SIP 200 OK |
|<======================|<===============|<================|
| (7) SIP ACK | (8) SIP ACK | (9) SIP ACK |
|======================>|===============>|================>|
| | | |
|<======IPv6 RTP=======>|<============IPv4 RTP============>|
|<===== IPv6 RTCP======>|<============IPv4 RTCP===========>|
| | |
Figure 6: Example of SIP Initiated Session
In the example shown in Figure 7, once the IPv6-only Client
discovered the IPv4 address of the remote IPv4-only server, it
retrieves the PREFIX64 to be used to build an IPv4-embedded IPv6
address for that server. This is achieve using GET_PREFIX64 PCP
OpCode (Steps (a) and (b)). The client uses PREFIX64 to construct an
IPv6 address and then initiates a TCP connection (Steps (1) to (4)).
The usage shown in Figure 7 depicts a typical usage of GET_PREFIX64
PCP OpCode when a DNS64 capability is embedded in the host.
Boucadair Expires March 16, 2013 [Page 10]
Internet-Draft PCP & NAT64 September 2012
+---------+ +-----+ +---------+
|IPv6-only| |NAT64| |IPv4-only|
| Client | | | | Server |
+---------+ +-----+ +---------+
| | |
|(a)PCP GET_PREFIX64 REQ| |
|======================>| |
|(b)PCP GET_PREFIX64 REP| |
| | |
| (1) TCP SYN | (2) TCP SYN |
|======================>|======================>|
| (4) TCP SYN/ACK | (3) TCP SYN/ACK |
|<======================|<======================|
| (5) TCP ACK | (6) TCP ACK |
|======================>|======================>|
| | |
Figure 7: Example of TCP Session
7. IANA Considerations
This document request a new PCP OpCode:
GET_PREFIX64
This document request a new PCP option:
PREFIX64
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. Acknowledgements
Many thanks to S. Perreault , R. Tirumaleswar, T. Tsou, D. Wing and
J. Zhao for the comments and suggestions.
10. References
Boucadair Expires March 16, 2013 [Page 11]
Internet-Draft PCP & NAT64 September 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-26 (work in progress), June 2012.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC6052] Bao, C., Huitema, C., Bagnulo, M., Boucadair, M., and X.
Li, "IPv6 Addressing of IPv4/IPv6 Translators", RFC 6052,
October 2010.
[RFC6146] Bagnulo, M., Matthews, P., and I. van Beijnum, "Stateful
NAT64: Network Address and Protocol Translation from IPv6
Clients to IPv4 Servers", RFC 6146, April 2011.
10.2. Informative References
[I-D.boucadair-pcp-rtp-rtcp]
Boucadair, M. and S. Sivakumar, "Reserving N and N+1 Ports
with PCP", draft-boucadair-pcp-rtp-rtcp-04 (work in
progress), April 2012.
Author's Address
Mohamed Boucadair
France Telecom
Rennes, 35000
France
Email: mohamed.boucadair@orange.com
Boucadair Expires March 16, 2013 [Page 12]