PCP Working Group | M. Boucadair |
Internet-Draft | France Telecom |
Intended status: Standards Track | T. Reddy |
Expires: June 01, 2013 | P. Patil |
D. Wing | |
Cisco | |
November 28, 2012 |
Using PCP to Reveal a Host behind NAT
draft-boucadair-pcp-nat-reveal-00
This document describes how to use PCP to retrieve the identify of a host behind a NAT. Two use cases are discussed and the PCP applicability is analyzed. This document extends PCP with a new OpCode: QUERY.
The proposed mechanism is valid for all NAT flavors including NAT44, NAT64 or NPTv6.
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 June 01, 2013.
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.
As reported in [RFC6269], several issues are encountered when an IP address is shared among several subscribers. These issues are encountered in various deployment contexts: e.g., Carrier Grade NAT (CGN), application proxies or A+P [RFC6346].
This document extends Port Control Protocol [I-D.ietf-pcp-base] to identify a host among those sharing the same IP address in certain scenarios.
The proposed technique can be used independently or combined with the host identifier, denoted as HOST_ID defined in [I-D.ietf-intarea-nat-reveal-analysis].
Additional scenarios requiring host identification are listed in [I-D.boucadair-intarea-host-identifier-scenarios].
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].
This note uses terminology defined in [I-D.ietf-pcp-base].
Figure 1 depicts a reference architecture of a mobile network [RFC6342].
+-----+ +-----+ | AAA | | PCRF| +-----+ +-----+ \ / \ / /- \ / / I UE BS \ / / n | /\ +-----+ /-----------\ +-----+ /-----------\ +----+ / t +-+ /_ \---| ANG |/ Operator's \| PCEF|/ Operator's \| BR |/ e | |---/ \ +-----+\ IP Network /+-----+\ IP Network /+----+\ r +-+ \-----------/ \-----------/ \ n \ e \ t +-----+ | AF | +-----+
Figure 1: Mobile Network Archtecture
The main involved functional elements are:
Section 3.2 and Section 3.3 explain the encountered problems to identify individual UEs when a NAT is involved in the data path. The use of PCP to solve those problems is analyzed in Section 4.
Figure 2 shows a scenario where a NAT function is located between the PCEF and AF.
PCP Client +------+ | PCRF |-----------------+ +------+ | | | +----+ +------+ +-----+ +-----+ | UE |------| PCEF |---| NAT |----| AF | +----+ +------+ +-----+ +-----+ PCP Aware
Figure 2: NAT between PCEF and AF
The main issue in this case is that PCEF, PCRF and AF all receive information bound to the same UE but cannot correlate between the piece of data visible for each entity. Concretely,
This scenario can be generalized as follows (Figure 3):
PCP Client +------+ | PDP |-----------------+ +------+ | | | +----+ +------+ +-----+ +------+ |Host|------| PEP |---| NAT |----|Server| +----+ +------+ +-----+ +------+ PCP Aware
Figure 3: NAT between PEP and Server
Figure 4 shows an alternative scenario in which a NAT function is located before PCEF. The main issue is that PCEF and AF are only aware of the external IP address and the external port number assigned by the NAT function. PCEF/AF will fail to identify each UE behind NAT since multiple UEs share the same external IP address and thus are unable to treat incoming connections differently.
PCP Client +-------+ | PCRF |------+ +-------+ | | | +----+ +------+ +-----+ +-----+ | UE |------| NAT |---|PCEF |----| AF | +----+ +------+ +-----+ +-----+ PCP Aware
Figure 4: NAT before PCEF
This scenario can be generalized as follows (Figure 5):
PCP Client +------+ | PDP |------+ +------+ | | | +----+ +------+ +-----+ +------+ |Host|------| NAT |---| PEP |----|Server| +----+ +------+ +-----+ +------+ PCP Aware
Figure 5: NAT before PEP
This section discusses how PCP can be used to solve the problems described in Section 3.2 and Section 3.3.
A solution to solve the problem discussed in Section 3.2 is to enable a PCP Server to control the NAT and enable a PCP Client in the PCRF. The updated interaction between PCRF, PCEF and AF is detailed below.
A solution to solve the problem discussed in Section 3.3 is to extend PCP with a new OpCode called QUERY (see Section 5).
The updated interaction between PCRF, PCEF and AF is detailed below:Figure 6 shows an example of the use of QUERY OpCode. In this example, an HTTP connection is initiated by the UA (192.0.2.1:33041) to an HTTP server (198.51.100.2:80). The NAT assigns 198.51.100.1/23432 as external IP Address/Port. PCRF learns Internal IP Address and Port associated with the NAT mapping using PCP QUERY request/response.
+------+ +-----+ +------+ +------+ | UE | | NAT | | PCRF | | AF | +------+ +-----+ +------+ +------+ 192.0.2.1 | 198.51.100.2 | | | |Src IP Address:Port | | | = 192.0.2.1:33041 | | |Dst IP Address:Port | | | = 198.51.100.2:80 | | |===================>|=====================================>| | |Src IP Address:Port=198.51.100.1:23432| | |Dst IP Address:Port=198.51.100.2:80 | | | | | {PCRF learns 5-tuple | | from AF or PCEF} | | | | | | | PCP QUERY Request | | | | External IP:Port = | | | | 198.51.100.1:23432 | | | | Remote Peer IP:Port = | | | | 198.51.100.2:80 | | | | Protocol = TCP | | | |<=======================| | | | PCP QUERY Response | | | | External IP:Port = | | | | 198.51.100.1:23432 | | | | Internal IP:Port = | | | | 192.0.2.1:33041 | | | | Protocol = TCP | | | | Lifetime = 1000 sec | | | |=======================>| | | | | | | Generate Policy Rules
Figure 6: Usage Example
This section defines a new PCP OpCode which can be used to query PCP-aware NAT to retrieve the Internal IP Address and Internal Port of a given mapping.
The PCP Server MUST provide a configuration option to allow administrators to enable/disable QUERY OpCode.
The following diagram shows the format of the OpCode-specific information in a request for the QUERY OpCode.
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | QUERY Nonce (96 bits) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Protocol | Reserved (24 bits) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | External Port | Remote Peer Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | External IP Address (128 bits) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Remote Peer IP Address (128 bits) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 7: Query Opcode Request
These fields are described below:
The following diagram shows the format of OpCode-specific information in a response packet for the QUERY OpCode:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | QUERY Nonce (96 bits) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Protocol | Reserved (24 bits) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | External Port | Internal Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | External IP Address (128 bits) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Internal IP Address (128 bits) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 8: Query Opcode Response
These fields are described below:
This section describes the operation of a PCP client when sending requests with the QUERY OpCode.
PCP QUERY request is used by an authorized third party PCP client that is only aware of the 5-tuple {External IP address and Port, Protocol, Remote Peer IP address and Port} and needs to learn the Internal IP address and Port associated with the NAT mapping. The request MUST contain non-zero values of Protocol, External Port, Remote Peer Port, External IP address and Remote Peer IP address. The Requested Lifetime MUST be set to zero.
This section describes the operation of a PCP server when processing a QUERY request.
For EIM/EIF port-mapping NAT, the processing of the QUERY request is as follows:
For EDM port-mapping NAT, the processing of the QUERY request is as follows:
PCP QUERY requests received on the Internet-facing interface MUST be silently drooped.
In DS-Lite context [RFC6333], the Internal IP address returned in the QUERY response MUST be the IPv6 address of the remote tunnel endpoint and not the internal private IPv4 address.
After performing common PCP response processing by the PCP Client, the response is further matched with a previously-sent QUERY request by comparing the QUERY Nonce, External IP Address, External Port and Protocol. On a SUCCESS response, the PCP Client can use the Internal IP Address and Port in the QUERY response as needed.
The PCP-Reveal solution is designed for needs within one single administrative domain (i.e., the PCP Client and PCP Server are managed by the same entity). Considerations related to the activation of the PCP-Reveal solution in an inter-domain context is out of scope of this document.
Authors of this document request the following OpCode:
The following error code is requested:
Security considerations discussed in [I-D.ietf-pcp-base] are to be taken into account. In particular, QUERY OpCode MUST NOT be implemented or used unless the network on which the PCP QUERY messages are to be sent is fully trusted. For example if Access Control Lists (ACLs) are installed on the PCP server, and the network between the PCP client and the PCP server, so those ACLs allow only communications from a trusted PCP client to the PCP server.
QUERY OpCode may be generated by non legitimate PCP Clients; the PCP Server MUST enforce some policies such as rate limit QUERY messages. QUERY requests received from non legitimate PCP Clients are silently dropped.
PCP authentication [I-D.ietf-pcp-authentication] MAY be used.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[I-D.ietf-pcp-base] | Wing, D, Cheshire, S, Boucadair, M, Penno, R and P Selkirk, "Port Control Protocol (PCP)", Internet-Draft draft-ietf-pcp-base-29, November 2012. |
[proto_numbers] | IANA, , "Protocol Numbers", 2010. |