Internet Engineering Task Force (IETF)                            Q. Sun
Request for Comments: 7753                                 China Telecom
Category: Standards Track                                   M. Boucadair
ISSN: 2070-1721                                           France Telecom
                                                            S. Sivakumar
                                                           Cisco Systems
                                                                 C. Zhou
                                                     Huawei Technologies
                                                                 T. Tsou
                                                        Philips Lighting
                                                            S. Perreault
                                                     Jive Communications
                                                           February 2016

Port Control Protocol (PCP) Extension for Port-Set Allocation




In some use cases, e.g., Lightweight 4over6, the client may require not just one port, but a port set. This document defines an extension to the Port Control Protocol (PCP) that allows clients to manipulate a set of ports as a whole. This is accomplished using a new MAP option: PORT_SET.

ライトウェイト4over6などの一部の使用例では、クライアントは1つのポートだけでなく、ポートセットを必要とする場合があります。このドキュメントでは、クライアントがポートのセット全体を操作できるようにするPort Control Protocol(PCP)の拡張機能を定義します。これは、新しいMAPオプションPORT_SETを使用して実現されます。

Status of This Memo


This is an Internet Standards Track document.

これはInternet Standards Trackドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

このドキュメントは、IETF(Internet Engineering Task Force)の製品です。これは、IETFコミュニティのコンセンサスを表しています。公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による公開が承認されました。インターネット標準の詳細については、RFC 5741のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at


Copyright Notice


Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2016 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents ( 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.

この文書は、BCP 78およびIETF文書に関するIETFトラストの法的規定(の対象であり、この文書の発行日に有効です。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、Trust Legal Provisionsのセクション4.eに記載されているSimplified BSD Licenseのテキストが含まれている必要があり、Simplified BSD Licenseに記載されているように保証なしで提供されます。

Table of Contents


   1. Introduction ....................................................4
      1.1. Applications Using Port Sets ...............................4
      1.2. Lightweight 4over6 .........................................4
      1.3. Firewall Control ...........................................4
      1.4. Discovering Stateless Port-Set Mappings ....................5
   2. The Need for PORT_SET ...........................................5
   3. Terminology .....................................................6
   4. The PORT_SET Option .............................................6
      4.1. Client Behavior ............................................8
      4.2. Server Behavior ............................................8
      4.3. Absence of Capability Discovery ............................9
      4.4. Port-Set Renewal and Deletion .............................10
           4.4.1. Overlap Conditions .................................10
   5. Examples .......................................................10
      5.1. Simple Request on Network Address Translator
           IPv4/IPv4 (NAT44) .........................................10
      5.2. Stateless Mapping Discovery ...............................12
      5.3. Resolving Overlap .........................................13
   6. Operational Considerations .....................................13
      6.1. Limits and Quotas .........................................13
      6.2. High Availability .........................................13
      6.3. Idempotence ...............................................13
      6.4. What should a PCP client do when it receives fewer
           ports than requested? .....................................15
   7. Security Considerations ........................................15
   8. IANA Considerations ............................................16
   9. References .....................................................16
      9.1. Normative References ......................................16
      9.2. Informative References ....................................16
   Acknowledgements ..................................................17
   Contributors ......................................................17
   Authors' Addresses ................................................18
1. Introduction
1. はじめに

This document extends the Port Control Protocol (PCP) [RFC6887] with the ability to retrieve a set of ports using a single request. It does so by defining a new PORT_SET option.


This section describes a few of the possible envisioned use cases. Note that the PCP extension defined in this document is generic and is expected to be applicable to other use cases.


1.1. Applications Using Port Sets
1.1. ポートセットを使用するアプリケーション

Some applications require not just one port, but a port set. One example is a Session Initiation Protocol (SIP) User Agent Server (UAS) [RFC3261] expecting to handle multiple concurrent calls, including media termination. When the UAS receives a call, it needs to signal media port numbers to its peer. Generating individual PCP MAP requests for each of the media ports during call setup would introduce unwanted latency and increased signaling load. Instead, the server can pre-allocate a set of ports such that no PCP exchange is needed during call setup.

一部のアプリケーションでは、1つのポートだけでなく、ポートセットも必要です。 1つの例は、メディアターミネーションを含む複数の同時呼び出しを処理することを期待するセッション開始プロトコル(SIP)ユーザーエージェントサーバー(UAS)[RFC3261]です。 UASがコールを受信すると、メディアポート番号をピアにシグナリングする必要があります。コールセットアップ中に各メディアポートに対して個別のPCP MAP要求を生成すると、不要な遅延が発生し、シグナリング負荷が増加します。代わりに、サーバーはポートのセットを事前に割り当てることができるため、コールのセットアップ中にPCP交換は必要ありません。

1.2. Lightweight 4over6
1.2. 軽量4over6

In the Lightweight 4over6 (lw4o6) [RFC7596] architecture, shared global addresses can be allocated to customers. This allows moving the Network Address Translation (NAT) function, otherwise accomplished by a Carrier-Grade NAT (CGN) [RFC6888], to the Customer Premises Equipment (CPE). This provides more control over the NAT function to the user, and more scalability to the Internet Service Provider (ISP).

Lightweight 4over6(lw4o6)[RFC7596]アーキテクチャでは、共有グローバルアドレスを顧客に割り当てることができます。これにより、ネットワークアドレス変換(NAT)機能を、それ以外の場合はキャリアグレードNAT(CGN)[RFC6888]によって顧客宅内機器(CPE)に移動できます。これにより、ユーザーはNAT機能をより詳細に制御でき、インターネットサービスプロバイダー(ISP)のスケーラビリティが向上します。

In the lw4o6 architecture, the PCP-controlled device corresponds to the Lightweight Address Family Transition Router (lwAFTR), and the PCP client corresponds to the Lightweight B4 (lwB4). The PCP client sends a PCP MAP request containing a PORT_SET option to trigger shared address allocation on the Lightweight AFTR (lwAFTR). The PCP response contains the shared address information, including the port set allocated to the Lightweight B4 (lwB4).

lw4o6アーキテクチャでは、PCP制御のデバイスはLightweight Address Family Transition Router(lwAFTR)に対応し、PCPクライアントはLightweight B4(lwB4)に対応します。 PCPクライアントは、PORT_SETオプションを含むPCP MAP要求を送信して、軽量AFTR(lwAFTR)で共有アドレス割り当てをトリガーします。 PCP応答には、Lightweight B4(lwB4)に割り当てられたポートセットを含む共有アドレス情報が含まれています。

1.3. Firewall Control
1.3. ファイアウォール制御

Port sets are often used in firewall rules. For example, defining a range for Real-time Transport Protocol (RTP) [RFC3550] traffic is common practice. The PCP MAP request can already be used for firewall control. The PORT_SET option brings the additional ability to manipulate firewall rules operating on port sets instead of single ports.

ポートセットは、ファイアウォールルールでよく使用されます。たとえば、リアルタイムトランスポートプロトコル(RTP)[RFC3550]トラフィックの範囲を定義することは一般的な方法です。 PCP MAP要求はすでにファイアウォール制御に使用できます。 PORT_SETオプションは、単一ポートの代わりにポートセットで動作するファイアウォールルールを操作する追加機能を提供します。

1.4. Discovering Stateless Port-Set Mappings
1.4. ステートレスポートセットマッピングの検出

A PCP MAP request can be used to retrieve a mapping from a stateless device (i.e., one that does not establish any per-flow state, and simply rewrites the address and/or port in a purely algorithmic fashion, including no rewriting). Similarly, a PCP MAP request with a PORT_SET request can be used to discover a port-set mapping from a stateless device. See Section 5.2 for an example.

PCP MAP要求を使用して、ステートレスデバイス(つまり、フローごとの状態を確立せず、アドレスやポートを純粋にアルゴリズム的な方法で書き換えるだけで、書き換えを行わない)からマッピングを取得できます。同様に、PORT_SET要求を含むPCP MAP要求を使用して、ステートレスデバイスからポートセットマッピングを検出できます。例については、セクション5.2を参照してください。

2. The Need for PORT_SET
2. PORT_SETの必要性

Multiple PCP MAP requests can be used to manipulate a set of ports; this has roughly the same effect as a single use of a PCP MAP request with a PORT_SET option. However, use of the PORT_SET option is more efficient when considering the following aspects:

複数のPCP MAP要求を使用して、ポートのセットを操作できます。これは、PORT_SETオプションを指定したPCP MAP要求の1回の使用とほぼ同じ効果があります。ただし、次の点を考慮すると、PORT_SETオプションを使用する方が効率的です。

Network Traffic: A single request uses fewer network resources than multiple requests.


Latency: Even though PCP MAP requests can be sent in parallel, we can expect the total processing time to be longer for multiple requests than for a single one.

レイテンシ:PCP MAPリクエストを並行して送信できる場合でも、複数のリクエストの合計処理時間は単一のリクエストよりも長くなると予想できます。

Server-side efficiency: Some PCP-controlled devices can allocate port sets in a manner such that data passing through the device is processed much more efficiently than the equivalent using individual port allocations. For example, a CGN having a "bulk" port allocation scheme (see [RFC6888], Section 5) often has this property.


Server-side scalability: The number of state table entries in PCP-controlled devices is often a limiting factor. Allocating port sets in a single request can result in a single mapping entry being used, therefore allowing greater scalability.


Therefore, while it is functionally possible to obtain the same results using plain MAP, the extension proposed in this document allows greater efficiency, scalability, and simplicity, while lowering latency and necessary network traffic.


In addition, PORT_SET supports parity preservation. Some protocols (e.g., RTP [RFC3550]) assign meaning to a port number's parity. When mapping sets of ports for the purpose of using such kind of protocol, preserving parity can be necessary.

さらに、PORT_SETはパリティ保存をサポートします。一部のプロトコル(RTP [RFC3550]など)は、ポート番号のパリティに意味を割り当てます。このような種類のプロトコルを使用する目的でポートのセットをマッピングする場合、パリティを維持することが必要になる場合があります。

3. Terminology
3. 用語

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].

このドキュメントのキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「MAY」、および「OPTIONAL」は、 [RFC2119]で説明されているように解釈されます。

4. The PORT_SET Option
4. PORT_SETオプション

Option Name: PORT_SET


Number: 130 (see Section 8)


Purpose: To map sets of ports.


Valid for Opcodes: MAP


Length: 5 bytes


May appear in: Both requests and responses


Maximum occurrences: 1


The PORT_SET option indicates that the PCP client wishes to reserve a set of ports. The requested number of ports in that set is indicated in the option.


The maximum occurrences of the PORT_SET option MUST be limited to 1. The reason is that the Suggested External Port Set depends on the data contained in the MAP Opcode header. Having two PORT_SET options with a single MAP Opcode header would imply having two overlapping Suggested External Port Sets.

PORT_SETオプションの最大出現回数は1に制限する必要があります。理由は、推奨外部ポートセットがMAP Opcodeヘッダーに含まれるデータに依存するためです。 1つのMAP Opcodeヘッダーに2つのPORT_SETオプションがある場合、2つの重複する推奨外部ポートセットがあることを意味します。

Note that the option number is in the "optional to process" range (128-191), meaning that a PCP MAP request with a PORT_SET option will be interpreted by a PCP server that does not support PORT_SET as a single-port PCP MAP request, as if the PORT_SET option was absent.

オプション番号は「オプションの処理」範囲(128〜191)であることに注意してください。つまり、PORT_SETオプションを指定したPCP MAP要求は、PORT_SETをサポートしていないPCPサーバーによってシングルポートPCP MAP要求として解釈されます。 、まるでPORT_SETオプションがないかのように。

The PORT_SET option is formatted as shown 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
   |Option Code=130|   Reserved    |        Option Length=5        |
   |        Port Set Size          |      First Internal Port      |
   |  Reserved   |P|

Figure 1: PORT_SET Option


The fields are as follows:


Port Set Size: A 16-bit unsigned integer. Number of ports requested. MUST NOT be zero.


First Internal Port: In a request, this field MUST be set equal to the Internal Port field in the MAP Opcode by the PCP client. In a response, this field indicates the First Internal Port of the port set mapped by the PCP server, which may differ from the value sent in the request. That is to be contrasted to the Internal Port field, which by necessity is always identical in matched requests and responses.

最初の内部ポート:要求では、このフィールドは、PCPクライアントによってMAP Opcodeの内部ポートフィールドと等しく設定する必要があります。応答では、このフィールドは、PCPサーバーによってマップされたポートセットの最初の内部ポートを示します。これは、要求で送信された値とは異なる場合があります。これは、一致した要求と応答で常に同じである内部ポートフィールドと対照的です。

Reserved: MUST be set to zero when sending; MUST be ignored when receiving.


P (parity bit): 1 if parity preservation is requested; 0 otherwise. See [RFC4787], Section 4.2.2.

P(パリティビット):パリティの保存が要求された場合は1。それ以外の場合は0。 [RFC4787]のセクション4.2.2をご覧ください。

Note that Option Code, Reserved, and Option Length are as described in [RFC6887], Section 7.3.


The Internal Port Set is defined as being the range of Port Set Size ports starting from the First Internal Port. The Suggested External Port Set is defined as being the range of Port Set Size ports starting from the Suggested External Port. Similarly, the Assigned External Port Set is defined as being the range of Port Set Size ports starting from the Assigned External Port. The Internal Port Set returned in a response and the Assigned External Port Set have the same size.


The Suggested External Port corresponds to the first port in the Suggested External Port Set. Its purpose is for clients to be able to regenerate previous mappings after state loss. When such an event happens, clients may attempt to regenerate identical mappings by suggesting the same External Port Set as before the state loss. Note that there is no guarantee that the allocated External Port Set will be the one suggested by the client.


4.1. Client Behavior
4.1. クライアントの動作

To retrieve a set of ports, the PCP client adds a PORT_SET option to its PCP MAP request. If parity preservation is required (i.e., an even port to be mapped to an even port and an odd port to be mapped to an odd port), the PCP client MUST set the parity bit (to 1) to ask the PCP server to preserve the port parity.

ポートのセットを取得するために、PCPクライアントはPCP MAP要求にPORT_SETオプションを追加します。パリティの保持が必要な場合(つまり、偶数ポートを偶数ポートにマップし、奇数ポートを奇数ポートにマップする)、PCPクライアントはパリティビットを(1に)設定して、PCPサーバーに保持を要求する必要があります。ポートのパリティ。

The PCP client MUST NOT include more than one PORT_SET option in a PCP MAP request. If several port sets are needed, the PCP client MUST issue separate PCP MAP requests, each potentially including a PORT_SET option. These individual PCP MAP requests MUST include distinct Internal Ports.

PCPクライアントは、PCP MAP要求に複数のPORT_SETオプションを含めてはなりません(MUST NOT)。複数のポートセットが必要な場合、PCPクライアントは、それぞれがPORT_SETオプションを含む可能性のある個別のPCP MAP要求を発行する必要があります。これらの個々のPCP MAP要求には、別個の内部ポートを含める必要があります。

If the PCP client does not know the exact number of ports it requires, it MAY then set the Port Set Size to 0xffff, indicating that it is willing to accept as many ports as the PCP server can offer.


A PCP client SHOULD NOT send a PORT_SET option for single-port PCP MAP requests (including creation, renewal, and deletion), because that needlessly increases processing on the server.

PCPクライアントは、シングルポートPCP MAPリクエスト(作成、更新、削除を含む)に対してPORT_SETオプションを送信してはいけません(SHOULD NOT)。これにより、サーバーでの処理が不必要に増加します。

PREFER_FAILURE MUST NOT appear in a request with a PORT_SET option. As a reminder, PREFER_FAILURE was specifically designed for the Universal Plug and Play (UPnP) Internet Gateway Device - Port Control Protocol Interworking Function (IGD-PCP IWF) [RFC6970]. The reasons for not recommending the use of PREFER_FAILURE are discussed in Section 13.2 of [RFC6887].

PREFER_FAILUREは、PORT_SETオプションを指定したリクエストに表示してはなりません(MUST NOT)。 PREFER_FAILUREは、ユニバーサルプラグアンドプレイ(UPnP)インターネットゲートウェイデバイス-ポート制御プロトコルインターワーキング機能(IGD-PCP IWF)[RFC6970]用に特別に設計されました。 PREFER_FAILUREの使用を推奨しない理由については、[RFC6887]のセクション13.2で説明しています。

When the PCP-controlled device supports delegation of multiple port sets for a given PCP client, the PCP client MAY re-initiate a PCP request to get another port set when it has exhausted all the ports within the port set.


4.2. Server Behavior
4.2. サーバーの動作

In addition to regular PCP MAP request processing, the following checks are made upon receipt of a PORT_SET option with a non-zero Requested Lifetime:

通常のPCP MAP要求処理に加えて、ゼロ以外の要求ライフタイムを伴うPORT_SETオプションを受信すると、次のチェックが行われます。

o If multiple PORT_SET options are present in a single PCP MAP request, a MALFORMED_OPTION error is returned.

o 1つのPCP MAP要求に複数のPORT_SETオプションが存在する場合、MALFORMED_OPTIONエラーが返されます。

o If the Port Set Size is zero, a MALFORMED_OPTION error is returned.

o ポートセットサイズがゼロの場合、MALFORMED_OPTIONエラーが返されます。

o If a PREFER_FAILURE option is present, a MALFORMED_OPTION error is returned.


The PCP server MAY map fewer ports than the value of Port Set Size from the request. It MUST NOT map more ports than the PCP client asked for. Internal Ports outside the range of Port Set Size ports starting from the Internal Port MUST NOT be mapped by the PCP server.

PCPサーバーは、リクエストからのポートセットサイズの値よりも少ないポートをマップする場合があります。 PCPクライアントが要求したよりも多くのポートをマップしてはなりません。内部ポートから始まるポートセットサイズポートの範囲外の内部ポートは、PCPサーバーによってマップされてはいけません。

If the requested port set cannot be fully satisfied, the PCP server SHOULD map as many ports as possible and SHOULD map at least one port (which is the same behavior as if Port Set Size is set to 1).


If the PCP server ends up mapping only a single port, for any reason, the PORT_SET option MUST NOT be present in the response. In particular, if the PCP server receives a single-port PCP MAP request that includes a PORT_SET option, the PORT_SET option is silently ignored, and the request is handled as a single-port PCP MAP request.

PCPサーバーが何らかの理由で単一のポートのみをマッピングしてしまう場合、PORT_SETオプションを応答に含めることはできません。特に、PCPサーバーがPORT_SETオプションを含むシングルポートPCP MAPリクエストを受信した場合、PORT_SETオプションは通知なく無視され、リクエストはシングルポートPCP MAPリクエストとして処理されます。

If the port parity preservation is requested (P = 1), the PCP server MAY preserve port parity. In that case, the External Port is set to a value having the same parity as the First Internal Port.

ポートパリティの保持が要求された場合(P = 1)、PCPサーバーはポートパリティを保持してもかまいません(MAY)。その場合、外部ポートは、最初の内部ポートと同じパリティを持つ値に設定されます。

If the mapping is successful, the MAP response's Assigned External Port is set to the first port in the External Port Set, and the PORT_SET option's Port Set Size is set to the number of ports in the mapped port set. The First Internal Port field is set to the first port in the Internal Port Set.


4.3. Absence of Capability Discovery
4.3. 能力発見の欠如

A PCP client that wishes to make use of a port set includes the PORT_SET option. If no PORT_SET option is present in the response, the PCP client cannot conclude that the PCP server does not support the PORT_SET option. It may just be that the PCP server does support PORT_SET but decided to allocate only a single port, for reasons that are its own. If the client wishes to obtain more ports, it MAY send additional PCP MAP requests (see Section 6.4), which the PCP server may or may not grant according to local policy.

ポートセットを使用するPCPクライアントには、PORT_SETオプションが含まれています。応答にPORT_SETオプションが存在しない場合、PCPクライアントは、PCPサーバーがPORT_SETオプションをサポートしていないと結論付けることができません。 PCPサーバーがPORT_SETをサポートしているが、独自の理由により、1つのポートのみを割り当てることにした可能性があります。クライアントがより多くのポートを取得したい場合、クライアントは追加のPCP MAPリクエストを送信してもよい(セクション6.4を参照)。PCPサーバーはローカルポリシーに従って許可する場合としない場合があります。

If port-set capability is added to or removed from a running PCP server, the server MAY reset its Epoch time and send an ANNOUNCE message as described in the PCP specification ([RFC6887], Section 14.1). This causes PCP clients to retry, and those using PORT_SET will now receive a different response.


4.4. Port-Set Renewal and Deletion
4.4. ポートセットの更新と削除

Port-set mappings are renewed and deleted as a single entity. That is, the lifetime of all port mappings in the set is set to the Assigned Lifetime at once.


A PCP client attempting to refresh or delete a port-set mapping MUST include the PORT_SET option in its request.


4.4.1. Overlap Conditions
4.4.1. オーバーラップ条件

Port-set PCP MAP requests can overlap with existing single-port or port-set mappings. This can happen either by mistake or after a PCP client becomes out of sync with server state.

ポートセットPCP MAP要求は、既存の単一ポートまたはポートセットマッピングと重複する可能性があります。これは、誤って、またはPCPクライアントがサーバーの状態と同期しなくなった後に発生する可能性があります。

If a PCP server receives a PCP MAP request, with or without a PORT_SET option, that tries to map one or more Internal Ports or port sets belonging to already-existing mappings, then the request is considered to be a refresh request applying those mappings. Each of the matching port or port-set mappings is processed independently, as if a separate refresh request had been received. The processing is as described in Section 15 of [RFC6887]. The PCP server sends a Mapping Update message for each of the mappings.

PCPサーバーが、PORT_SETオプションの有無にかかわらず、既存のマッピングに属する1つ以上の内部ポートまたはポートセットをマップしようとするPCP MAP要求を受信した場合、その要求は、それらのマッピングを適用する更新要求と見なされます。一致する各ポートまたはポートセットのマッピングは、あたかも個別の更新要求が受信されたかのように、独立して処理されます。処理は[RFC6887]のセクション15に記載されています。 PCPサーバーは、マッピングごとにマッピング更新メッセージを送信します。

5. Examples
5. 例
5.1. Simple Request on Network Address Translator IPv4/IPv4 (NAT44)
5.1. ネットワークアドレストランスレータIPv4 / IPv4(NAT44)での単純な要求

An application requires a range of 100 IPv4 UDP ports to be mapped to itself. The application running on the host has created sockets bound to IPv4 UDP ports 50,000 to 50,099 for this purpose. It does not care about which External Port numbers are allocated. The PCP client sends a PCP request with the following parameters over IPv4:

アプリケーションは、それ自体にマッピングされるIPv4 UDPポートの範囲を必要とします。ホストで実行されているアプリケーションは、この目的でIPv4 UDPポート50,000〜50,099にバインドされたソケットを作成しました。どの外部ポート番号が割り当てられるかは関係ありません。 PCPクライアントは、IPv4を介して次のパラメーターを含むPCP要求を送信します。

o MAP Opcode

o MAPオペコード

      Mapping Nonce:  <a random nonce>

Protocol: 17


Internal Port: 50,000


Suggested External Port: 0


      Suggested External IP Address:  ::ffff:

o PORT_SET Option

o PORT_SETオプション

Port Set Size: 100


First Internal Port: 50,000


P: 0


The PCP server is unable to fulfill the request fully: it is configured by local policy to only allocate 32 ports per user. Since the PREFER_FAILURE option is absent from the request, it decides to map UDP ports 37,056 to 37,087 on external address to Internal Ports 50,000 to 50,031. After setting up the mapping in the NAT44 device it controls, it replies with the following PCP response:

PCPサーバーは要求を完全に満たすことができません。ローカルポリシーによって、ユーザーごとに32ポートのみを割り当てるように構成されています。 PREFER_FAILUREオプションはリクエストにないため、外部アドレス192.0.2.3のUDPポート37,056から37,087を内部ポート50,000から50,031にマッピングすることを決定します。制御するNAT44デバイスでマッピングを設定した後、次のPCP応答で応答します。

o MAP Opcode

o MAPオペコード

      Mapping Nonce:  <copied from the request>

Protocol: 17


Internal Port: 50,000


Assigned External Port: 37,056


      Assigned External IP Address:  ::ffff:

o PORT_SET Option

o PORT_SETオプション

Port Set Size: 32


First Internal Port: 50,000


P: 0


Upon receiving this response, the host decides that 32 ports is good enough for its purposes. It closes sockets bound to ports 50,032 to 50,099, sets up a refresh timer, and starts using the port range it has just been assigned.


5.2. Stateless Mapping Discovery
5.2. ステートレスマッピングの検出

A host wants to discover a stateless NAT44 mapping pointing to it. To do so, it sends the following request over IPv4:


o MAP Opcode

o MAPオペコード

      Mapping Nonce:  <a random nonce>

Protocol: 0


Internal Port: 1


Suggested External Port: 0


      Suggested External IP Address:  ::ffff:

o PORT_SET Option

o PORT_SETオプション

Port Set Size: 65,535


First Internal Port: 1


P: 0


The PCP server sends the following response:


o MAP Opcode

o MAPオペコード

      Mapping Nonce:  <copied from the request>

Protocol: 0


Internal Port: 1


Assigned External Port: 26,624


      Assigned External IP Address:  ::ffff:

o PORT_SET Option

o PORT_SETオプション

Port Set Size: 2048


First Internal Port: 26,624


P: 0


From this response, the host understands that a 2048-port stateless mapping is pointing to itself, starting from port 26,624 on external IP address


5.3. Resolving Overlap
5.3. オーバーラップの解決

This example relates to Section 4.4.1.


Suppose Internal Port 100 is mapped to External Port 100 and port set 101-199 is mapped to External Port Set 201-299. The PCP server receives a PCP MAP request with Internal Port = 100, External Port = 0, and a PORT_SET option with Port Set Size = 100. The request's Mapping Nonce is equal to those of the existing single-port and port-set mappings. This request is therefore treated as two refresh requests, the first one applying to the single-port mapping and the second one applying to the port-set mapping. The PCP server updates the lifetimes of both mappings as usual and then sends two responses: the first one contains Internal Port = 100, External Port = 100, and no PORT_SET option, while the second one contains Internal Port = 101, External Port = 201, and a PORT_SET option with Port Set Size = 99.

内部ポート100が外部ポート100にマップされ、ポートセット101-199が外部ポートセット201-299にマップされているとします。 PCPサーバーは、内部ポート= 100、外部ポート= 0のPCP MAP要求、およびポートセットサイズ= 100のPORT_SETオプションを受信します。要求のマッピングナンスは、既存の単一ポートおよびポートセットマッピングのものと同じです。したがって、この要求は2つの更新要求として扱われ、最初の要求は単一ポートマッピングに適用され、2番目の要求はポートセットマッピングに適用されます。 PCPサーバーは通常どおり両方のマッピングのライフタイムを更新し、2つの応答を送信します。最初の1つは内部ポート= 100、外部ポート= 100を含み、PORT_SETオプションはありませんが、2つ目は内部ポート= 101、外部ポート= 201を含みます。 、およびポートセットサイズ= 99のPORT_SETオプション。

6. Operational Considerations
6. 運用上の考慮事項
6.1. Limits and Quotas
6.1. 制限と割り当て

It is up to the PCP server to determine the port-set quota, if any, for each PCP client.


If the PCP server is configured to allocate multiple port-set allocations for one subscriber, the same Assigned External IP Address SHOULD be assigned to the subscriber in multiple port-set responses.


To optimize the number of mapping entries maintained by the PCP server, it is RECOMMENDED to configure the PCP server to assign the maximum allowed Port Set Size in a single response. This policy SHOULD be configurable.


6.2. High Availability
6.2. 高可用性

The failover mechanism in MAP (Section 14 of [RFC6887]) can also be applied to port sets.


6.3. Idempotence
6.3. べき等

A core, desirable property of PCP is idempotence. In a nutshell, requests produce the same results whether they are executed once or multiple times. This property is preserved with the PORT_SET option, with the following caveat: the order in which the PCP server receives requests with overlapping Internal Port Sets will affect the mappings being created and the responses received.


For example, suppose these two requests are sent by a PCP client:


Request A: Internal Port Set 1-10


Request B: Internal Port Set 5-14


The PCP server's actions will depend on which request is received first. Suppose that A is received before B:

PCPサーバーのアクションは、最初に受信した要求によって異なります。 AがBの前に受信されたとします。

Upon reception of A: Internal Ports 1-10 are mapped. A success response containing the following fields is sent:


Internal Port: 1


First Internal Port: 1


Port Set Size: 10


Upon reception of B: The request matches mapping A. The request is interpreted as a refresh request for mapping A, and a response containing the following fields is sent:


Internal Port: 5


First Internal Port: 1


Port Set Size: 10


If the order of reception is reversed (B before A), the created mapping will be different, and the First Internal Port in both responses would then be 5.


To avoid surprises, PCP clients MUST ensure that port-set mapping requests do not inadvertently overlap. For example, a host's operating system could include a central PCP client process through which port-set mapping requests would be arbitrated. Alternatively, individual PCP clients running on the same host would be required to acquire the Internal Ports from the operating system (e.g., a call to the bind() function from the BSD API) before trying to map them with PCP.

予期せぬ事態を避けるために、PCPクライアントは、ポートセットのマッピング要求が誤って重複しないようにする必要があります。たとえば、ホストのオペレーティングシステムには、ポートセットマッピング要求の調停を行う中央のPCPクライアントプロセスを含めることができます。または、同じホストで実行されている個々のPCPクライアントは、PCPでマッピングする前に、オペレーティングシステムから内部ポートを取得する必要があります(BSD APIからのbind()関数の呼び出しなど)。

6.4. What should a PCP client do when it receives fewer ports than requested?

6.4. PCPクライアントが要求した数より少ないポートを受信した場合、PCPクライアントは何をすべきですか?

Suppose a PCP client asks for 16 ports and receives 8. What should it do? Should it consider this a final answer? Should it try a second request, asking for 8 more ports? Should it fall back to 8 individual PCP MAP requests? This document leaves the answers to be implementation specific but describes issues to be considered when answering them.

PCPクライアントが16個のポートを要求し、8個を受信するとします。どうすればよいですか?これを最終的な回答と見なす必要がありますか?さらに8つのポートを要求する2番目の要求を試行する必要がありますか? 8つの個別のPCP MAPリクエストにフォールバックする必要がありますか?このドキュメントでは、回答は実装固有のものですが、回答する際に考慮すべき問題について説明しています。

First, the PCP server has decided to allocate 8 ports for some reason. It may be that allocation sizes have been limited by the PCP server's administrator. It may be that the PCP client has reached a quota. It may be that these 8 ports were the last contiguous ones available. Depending on the reason, asking for more ports may or may not be likely to actually yield more ports. However, the PCP client has no way of knowing.

最初に、PCPサーバーは何らかの理由で8つのポートを割り当てることを決定しました。 PCPサーバーの管理者によって割り当てサイズが制限されている可能性があります。 PCPクライアントが割り当てに達した可能性があります。これらの8つのポートが、使用可能な最後の連続したポートであった可能性があります。理由に応じて、より多くのポートを要求しても、実際にはより多くのポートが生成される可能性があります。ただし、PCPクライアントは知る方法がありません。

Second, not all PCP clients asking for N ports actually need all N ports to function correctly. For example, a DNS resolver could ask for N ports to be used for source-port randomization. If fewer than N ports are received, the DNS resolver will still work correctly, but source-port randomization will be slightly less efficient, having fewer bits to play with. In that case, it would not make much sense to ask for more ports.


Finally, asking for more ports could be considered abuse. External Ports are a resource that is to be shared among multiple PCP clients. A PCP client trying to obtain more than its fair share could trigger countermeasures according to local policy.

最後に、より多くのポートを要求することは、乱用と見なされる可能性があります。外部ポートは、複数のPCPクライアント間で共有されるリソースです。 PCPクライアントがフェアシェアを超えて取得しようとすると、ローカルポリシーに従って対策がトリガーされる可能性があります。

In conclusion, it is expected that, for most applications, asking for more ports would not yield benefits justifying the additional costs.


7. Security Considerations
7. セキュリティに関する考慮事項

The security considerations discussed in [RFC6887] apply to this extension.


As described in Section 4.4.1, a single PCP request using the PORT_SET option may result in multiple responses. For this to happen, it is necessary that the request contain the nonce associated with multiple mappings on the server. Therefore, an on-path attacker could use an eavesdropped nonce to mount an amplification attack. Use of PCP authentication ([RFC6887], Section 18) eliminates this attack vector.

セクション4.4.1で説明されているように、PORT_SETオプションを使用した単一のPCP要求は、複数の応答になる可能性があります。これを行うには、リクエストにサーバー上の複数のマッピングに関連付けられたナンスが含まれている必要があります。したがって、パス上の攻撃者は盗聴されたナンスを使用して増幅攻撃を仕掛けることができます。 PCP認証([RFC6887]、セクション18)を使用すると、この攻撃経路が排除されます。

In order to prevent a PCP client from controlling all ports bound to a shared IP address, port quotas should be configured on the PCP server (Section 17.2 of [RFC6887]).


8. IANA Considerations
8. IANAに関する考慮事項

IANA has allocated value 130 in the "PCP Options" registry at <> for the new PCP option defined in Section 4.


9. References
9. 参考文献
9.1. Normative References
9.1. 引用文献

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <>.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、DOI 10.17487 / RFC2119、1997年3月、< rfc2119>。

[RFC6887] Wing, D., Ed., Cheshire, S., Boucadair, M., Penno, R., and P. Selkirk, "Port Control Protocol (PCP)", RFC 6887, DOI 10.17487/RFC6887, April 2013, <>.

[RFC6887] Wing、D.、Ed。、Cheshire、S.、Boucadair、M.、Penno、R。、およびP. Selkirk、「Port Control Protocol(PCP)」、RFC 6887、DOI 10.17487 / RFC6887、2013年4月、<>。

9.2. Informative References
9.2. 参考引用

[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, DOI 10.17487/RFC3261, June 2002, <>.

[RFC3261] Rosenberg、J.、Schulzrinne、H.、Camarillo、G.、Johnston、A.、Peterson、J.、Sparks、R.、Handley、M。、およびE. Schooler、「SIP:Session Initiation Protocol」 、RFC 3261、DOI 10.17487 / RFC3261、2002年6月、<>。

[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, July 2003, <>.

[RFC3550] Schulzrinne、H.、Casner、S.、Frederick、R。、およびV. Jacobson、「RTP:A Transport Protocol for Real-Time Applications」、STD 64、RFC 3550、DOI 10.17487 / RFC3550、2003年7月、 <>。

[RFC4787] Audet, F., Ed. and C. Jennings, "Network Address Translation (NAT) Behavioral Requirements for Unicast UDP", BCP 127, RFC 4787, DOI 10.17487/RFC4787, January 2007, <>.

[RFC4787]オーデ、F、エド。およびC.ジェニングス、「ユニキャストUDPのネットワークアドレス変換(NAT)動作要件」、BCP 127、RFC 4787、DOI 10.17487 / RFC4787、2007年1月、<> 。

[RFC6888] Perreault, S., Ed., Yamagata, I., Miyakawa, S., Nakagawa, A., and H. Ashida, "Common Requirements for Carrier-Grade NATs (CGNs)", BCP 127, RFC 6888, DOI 10.17487/RFC6888, April 2013, <>.

[RFC6888] Perreault、S.、Ed。、Yamagata、I.、Miyakawa、S.、Nakagawa、A.、and H. Ashida、 "Common Requirements for Carrier-Grade NATs(CGNs)"、BCP 127、RFC 6888、 DOI 10.17487 / RFC6888、2013年4月、<>。

[RFC6970] Boucadair, M., Penno, R., and D. Wing, "Universal Plug and Play (UPnP) Internet Gateway Device - Port Control Protocol Interworking Function (IGD-PCP IWF)", RFC 6970, DOI 10.17487/RFC6970, July 2013, <>.

[RFC6970] Boucadair、M.、Penno、R。、およびD. Wing、「ユニバーサルプラグアンドプレイ(UPnP)インターネットゲートウェイデバイス-ポート制御プロトコルインターワーキング機能(IGD-PCP IWF)」、RFC 6970、DOI 10.17487 / RFC6970 、2013年7月、<>。

[RFC7596] Cui, Y., Sun, Q., Boucadair, M., Tsou, T., Lee, Y., and I. Farrer, "Lightweight 4over6: An Extension to the Dual-Stack Lite Architecture", RFC 7596, DOI 10.17487/RFC7596, July 2015, <>.

[RFC7596] Cui、Y.、Sun、Q.、Boucadair、M.、Tsou、T.、Lee、Y.、I。Farrer、「Lightweight 4over6:An Extension to the Dual-Stack Lite Architecture」、RFC 7596 、DOI 10.17487 / RFC7596、2015年7月、<>。



The authors would like to express sincere appreciation to Alain Durand, Cong Liu, Dan Wing, Dave Thaler, Peter Koch, Reinaldo Penno, Sam Hartman, Stuart Cheshire, Ted Lemon, Yoshihiro Ohba, Meral Shirazipour, Jouni Korhonen, and Ben Campbell for their useful comments and suggestions.




The following individuals contributed to this document:


Yunqing Chen China Telecom Room 502, No.118, Xizhimennei Street Beijing 100035 China

Yunqing Chen China 100035中国北京Xizhimennei StreetのNo.118、502テレコムルーム

Chongfeng Xie China Telecom Room 502, No.118, Xizhimennei Street Beijing 100035 China

CレッドメープルX IEチャイナテレコムルーム502、No.118、ξzhimen通り北京100035中国

Yong Cui Tsinghua University Beijing 100084 China

Yong Cu ITS inghuauniversity北京100084中国

Phone: +86-10-62603059 Email: Qi Sun Tsinghua University Beijing 100084 China

電話:+ 86-10-62603059メール Qi Sun Tsinghua University Beijing 100084 China

   Phone: +86-10-62785822

Gabor Bajko Mediatek Inc.

Gabor Bajko Mediatek Inc.


Xiaohong Deng France Telecom

ξAO Red D鞥Franceテレコム


Authors' Addresses


Qiong Sun China Telecom China

Qiong Sun China Telecom China

Phone: 86 10 58552936 Email:

電話:86 10 58552936メール

Mohamed Boucadair France Telecom Rennes 35000 France

Mohamed Boucadair France Telecom Rennes 35000 France


Senthil Sivakumar Cisco Systems 7100-8 Kit Creek Road Research Triangle Park, NC 27709 United States

Senthil Sivakumar Cisco Systems 7100-8 Kit Creek Road Research Triangle Park、NC 27709アメリカ合衆国

Phone: +1 919 392 5158 Email: Cathy Zhou Huawei Technologies Bantian, Longgang District Shenzhen 518129 China

電話:+1 919 392 5158メール:Sensen too Cathy Zhou hu Aはテクノロジー禁止の日であり、長いギャング地区は非常に現実的です518129中国


Tina Tsou Philips Lighting 3 Burlington Woods Dr #4t Burlington, MA 01803 United States

Tina Tsou Philips Lighting 3 Burlington Woods Dr#4t Burlington、MA 01803アメリカ

   Phone: +1 617-423-9999

Simon Perreault Jive Communications Quebec, QC Canada

Simon Perreault Jive Communicationsケベック州、QCカナダ