端口控制协议
端口控制协议概述
端口控制协议 (PCP) 提供了一种控制上游设备(如 NAT44 和防火墙设备)转发传入数据包的方法,以及一种减少应用程序激活流量的方法。MS-DPC、MS-100、MS-400 和 MS-500 多服务 PIC 支持 PCP。从 Junos OS 17.4R1 版开始,MS-MPC 和 MS-MIC 也支持 NAPT44 的 PCP。从 Junos 20.2R1 开始,下一代服务支持 CGNAT DS-Lite 服务的 PCP。从 Junos OS 18.2R1 版开始,MS-MPC 和 MS-MIC 上的 PCP 支持 DS-Lite。在 Junos OS 18.1 版及更早版本中,MS-MPC 和 MS-MIC 上的 PCP 不支持 DS-Lite。
PCP 旨在同时在运营商级 NAT (CGN) 和小型 NAT(例如住宅 NAT)的环境中实施。PCP 使主机能够在 NAT 设备后面(包括在其 ISP 运行的 CGN 后面)长时间(如网络摄像头)或短时间(例如,在玩游戏或打电话时)操作服务器。PCP 使应用程序能够创建从外部 IP 地址和端口到内部 IP 地址和端口的映射。这些映射是发往位于 NAT 或防火墙后面的计算机的成功入站通信所必需的。创建传入连接的映射后,必须通知远程计算机传入连接的 IP 地址和端口。这通常以特定于应用程序的方式完成。
Junos OS 支持 PCP 版本 2 和版本 1。
PCP 由以下组件组成:
PCP 客户端 - 向 PCP 服务器发出 PCP 请求以获取和控制资源的主机或网关。
PCP 服务器 — 通常是接收和处理 PCP 请求的 CGN 网关或主机代管服务器
Junos OS 支持配置 PCP 服务器,以便使用 NAPT44 功能(如端口转发和端口块分配)映射流。可以从以下源处理流:
包含直接从用户设备接收的 PCP 请求的流量,如图 1 所示。
图 1:基本 PCP NAPT44 拓扑映射包含由充当 DS-Lite 软线发起方 (B4) 的路由器添加的 PCP 请求的流量。此模式称为 DS-Lite 纯模式,如图 2 所示。
图 2:采用 DS-Lite 普通模式 的 PCP
Junos OS 不支持为 PCP 发起的流量进行确定性端口块分配。
端口控制协议的优势
许多对 NAT 友好的应用程序会频繁发送应用程序级消息,以确保其会话不会被 NAT 设备超时。PCP 用于:
降低这些 NAT 激活消息的频率
减少用户接入网络上的带宽
减少到服务器的流量
减少移动设备的电池消耗
端口控制协议版本 2
从 Junos OS 15.1 版开始,支持端口控制协议 (PCP) 版本 2,符合 RFC 6887。PCP 提供了一种控制上游设备(如 NAT44)和防火墙设备转发传入数据包的方法,以及一种减少应用程序保持活动流量的方法。PCP 版本 2 支持随机数身份验证。PCP 允许应用程序创建从外部 IP 地址和端口到内部 IP 地址和端口的映射。nonce有效负载可防止重播攻击,除非显式禁用,否则默认情况下会发送。
版本 2 映射请求(用于刷新或删除)的客户端随机数验证要求保留在原始映射请求中收到的导致创建 PCP 映射的随机数。还将保留允许创建映射的初始请求的版本。保存随机数和版本参数的这种行为表示每个 PCP 映射使用 13 个字节。当与单个请求映射的系统当前内存使用情况匹配时,存储空间的这种轻微增加并不显着(考虑到随之创建的端点无关映射 (EIM) 和端点无关过滤 (EIF)。在客户部署中,PCP 会导致 EIM 和 EIF 映射表示所有此类映射的一小部分。
在 Junos 15.1 版之前,服务 PIC 根据采用版本 1 消息编码的 PCP 草案版本 22 支持瞻博网络路由器上的 PCP 服务器。随着 PCP 从端口控制协议 (PCP) draft-ietf-pcp-base-22(2012 年 7 月到期) 中定义的草案版本细化为 RFC 6887 - 端口控制协议 (PCP) 中定义的最终标准版本,消息编码更改为版本 2,并添加了随机随机有效负载以根据需要对等方和映射请求进行身份验证。版本 1 不会解码符合版本 2 格式的消息,并且不支持随机数身份验证。在实字网络环境中,随着客户端设备 (CPE) 设备越来越多地仅支持版本 2,因此需要解析和发送版本 2 消息。保持与支持 V1 的 CPE 设备的向后兼容性(版本协商是标准的一部分),并在使用 v2 消息时对请求随机数有效负载数据包进行身份验证。
命令 show services pcp statistics
的输出包含 PCP 不支持的版本字段,该字段将递增以指示版本不是 1 或 2。引入了一个新字段 PCP 请求随机数与现有映射不匹配,以指示由于随机数有效负载与映射中记录的有效负载不匹配(身份验证失败)而被忽略的 PCP 版本 2 请求数。如果正在使用版本 2,则使用客户端随机数进行身份验证。
配置端口控制协议
本文介绍如何配置端口控制协议(PCP)。MS-DPC、MS-100、MS-400 和 MS-500 多服务 PIC 支持 PCP。从 Junos OS 17.4R1 版开始,MS-MPC 和 MS-MIC 也支持 NAPT44 的 PCP。从 Junos OS 18.2R1 版开始,MS-MPC 和 MS-MIC 上的 PCP 支持 DS-Lite。在 Junos OS 18.1 版及更早版本中,MS-MPC 和 MS-MIC 上的 PCP 不支持 DS-Lite。从 Junos OS 20.2R1 版开始,用于 CGNAT 服务的 MX-SPC3 安全服务卡支持 PCP。
执行以下配置任务:
配置 PCP 服务器选项
配置 PCP 规则
PCP 规则具有与所有服务集规则相同的基本选项:
term
允许单个规则具有多个应用程序的选项。为新一代服务运行 MX-SPC3 安全服务卡时不需要期限。
标识
from
受规则约束的流量的选项。标识
then
要执行的操作的选项。对于 PCP 规则,此选项标识处理所选流量的 PCP 服务器
配置 NAT 规则
要配置 NAT 规则,请执行以下操作:
配置服务集以应用 PCP
要使用 PCP,必须在选项中 pcp-rule rule-name
提供规则名称(或规则名称列表的名称)。
您的服务集还必须标识任何必需 nat-rule
的和 softwire-rule
.
系统日志消息配置
提供了新的系统日志类(配置选项) pcp-logs
来控制 PCP 日志的生成。它提供以下级别的日志记录:
protocol
- 与映射创建、删除相关的所有日志都包含在此日志记录级别。protocol-error
—–所有与协议错误相关的日志(例如映射刷新失败、PCP 查找失败、映射创建失败)。都包含在此日志记录级别中。system-error
- 内存和基础结构错误包含在此日志记录级别中。
监视端口控制协议操作
您可以使用以下操作命令监视端口控制协议 (PCP) 操作:
对于 MS-MPC,请使用
show services nat mappings pcp
命令。注意:Junos OS 19.3R2 版中的新一代服务不支持 PCP
对于 MS-MPC,请使用
show services nat mappings endpoint-independent
命令。对于下一代服务,请使用
show services nat source mappings endpoint-independent
命令。show services pcp statistics protocol
以下是这些命令输出的示例。
user@host> show services nat mappings pcp Interface: sp-0/0/0, Service set: in NAT pool: p PCP Client : 10.1.1.2 PCP lifetime : 995 Mapping : 10.1.1.2 : 9000 --> 8.8.8.8 : 1025 Session Count : 1 Mapping State : Active DS-LITE output: =============== PCP Client : 2222::1 PCP lifetime : 106 Mapping : 88.1.0.47 : 47 --> 70.70.70.1 :41972 Session Count : 1 Mapping State : Active B4 Address : 2222::1
user@host> show services nat mappings endpoint-independent Interface: sp-0/0/0, Service set: in NAT pool: p Mapping : 10.1.1.2 :57400 --> 8.8.8.8 : 1024 Session Count : 0 Mapping State : Timeout PCP Client : 10.1.1.2 PCP lifetime : 991 Mapping : 10.1.1.2 : 9000 --> 8.8.8.8 : 1025 Session Count : 1 Mapping State : Active DS-LITE output: =============== PCP Client : 2222::1 PCP lifetime : 190 Mapping : 88.1.1.3 : 4001 --> 70.70.70.2 :58989 Session Count : 1 Mapping State : Active B4 Address : 2222::1
user@host> show services pcp statistics protocol Protocol Statistics: Operational Statistics Map request received :0 Peer request received :0 Other operational counters :0 Option Statistics Unprocessed requests received :0 Third party requets received :0 Prefer fail option received :0 Filter option received :0 Other options counters :0 Option optional received :0 Result Statistics PCP success :0 PCP unsupported version :0 Not authorized :0 Bad requests :0 Unsupported opcode :0 Unsupported option :0 Bad option :0 Network failure :0 Out of resources :0 Unsupported protocol :0 User exceeded quota :0 Cannot provide external :0 Address mismatch :0 Excessive number of remote peers :0 Processing error :0 Other result counters :0
示例:使用 NAPT44 配置端口控制协议
MS-DPC、MS-100、MS-400 和 MS-500 多服务 PIC 支持 PCP。从 Junos OS 17.4R1 版开始,MS-MPC 和 MS-MIC 也支持 NATP44 的 PCP。
要求
硬件要求
具有 PCP 客户端的 UE。
具有 MS-DPC 服务 PIC 的 MX 3D 路由器。
软件要求
Junos OS 13.2
第 3 层服务包
概述
ISP 希望使具有 PCP 客户端的 UE 能够在不超时的情况下保持与服务器的连接。PCP 客户端针对所需连接的类型和持续时间生成 PCP 请求。连接持续时间可能较长,例如使用网络摄像头的应用程序,也可能持续时间较短,例如在线游戏。MX 3D 路由器提供用于解释 PCP 客户端请求和 NAPT44 的 PCP 服务器。 图 3 显示了此示例的基本拓扑。
PCP 配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改任何必要的详细信息以匹配您的网络配置,然后将命令复制并粘贴到 [edit] 层次结构级别的 CLI 中。
set chassis fpc 2 pic 0 adaptive-services service-package layer-3 set interfaces sp-2/0/0 services-options inactivity-timeout 180 cgn-pic set interfaces sp-2/0/0 unit 0 family inet set interfaces xe-3/2/0 unit 0 family inet service input service-set sset_0 set interfaces xe-3/2/0 unit 0 family inet service output service-set sset_0 set interfaces xe-3/2/0 unit 0 family inet address 30.0.0.1/24 set interfaces xe-5/0/0 unit 0 family inet address 25.0.0.1/24 set services nat pool pcp-pool address 44.0.0.0/16 set services nat pool pcp-pool port automatic random-allocation address-allocation round-robin set services nat pool pcp-pool address-allocation round-robin set services nat rule pcp-rule match-direction input set services nat rule pcp-rule term t0 then translated source-pool pcp-pool translation-type napt-44 set services nat rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent set services nat rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent set services pcp server pcp-s1 ipv4-address 124.124.124.122 set services pcp server pcp-s1 mapping-lifetime-minimum 600 mapping-lifetime-maximum 86500 set services pcp server pcp-s1 short-lifetime-error 120 long-lifetime-error 1200 set services pcp server pcp-s1 max-mappings-per-client 128 pcp-options third-party prefer-failure set services service-set sset_0 pcp-rules r1 set services service-set sset_0 nat-rules pcp-rule set services service-set sset_0 interface-service service-interface sp-2/0/0.0
机箱配置
分步过程
要使用第 3 层服务包配置服务 PIC(FPC 2 插槽 0),请执行以下操作:
转至 [编辑机箱] 层级。
user@host# edit chassis
配置第 3 层服务包。
[edit chassis]
user@host# set fpc 2 pic 0 adaptive-services service-package layer-3
结果
user@host# show chassis fpc 2 pic 0 pcp-rules pcp-napt44-rule; nat-rules pcp-rule; interface-service { service-interface sp-2/0/0.0; }
接口配置
分步过程
配置服务 MS-DPC。
user@host# set interfaces sp-2/0/0 services-options inactivity-timeout 180 cgn-pic user@host# set interfaces sp-2/0/0 unit 0 family inet
配置用于 NAT 和 PCP 服务的面向客户的接口。
user@host# set interfaces xe-3/2/0 unit 0 family inet service input service-set sset_0 user@host# set interfaces xe-3/2/0 unit 0 family inet service output service-set sset_0 user@host# set interfaces xe-3/2/0 unit 0 family inet address 30.0.0.1/24
配置面向互联网的接口。
user@host# set interfaces xe-5/0/0 unit 0 family inet address 25.0.0.1/24
结果
user@host# sp-2/0/0 { services-options { inactivity-timeout 180; cgn-pic; } unit 0 { family inet; } } xe-3/2/0 { unit 0 { family inet { service { input { service-set sset_0; } output { service-set sset_0; } } address 30.0.0.1/24; } } } xe-5/0/0 { unit 0 { family inet { address 25.0.0.1/24; } } }
NAT 配置
分步过程
[edit services nat]
进入层次结构。user@host# edit services nat
配置名为 的
pcp-pool
NAT 池。[edit services nat]
user@host# set pool pcp-pool address 44.0.0.0/16 user@host# set pool pcp-pool port automatic random-allocation user@host# set pool pcp-pool address-allocation round-robin配置称为的
pcp-rule
NAT 规则。[edit services nat]
user@host# set rule pcp-rule term t0 then translated source-pool pcp-pool translation-type napt-44 user@host# set rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent
结果
user@host# show services nat pool pcp-pool { address 44.0.0.0/16; port { automatic { random-allocation; } } address-allocation round-robin; } rule pcp-rule { match-direction input; term t0 { then { translated { source-pool pcp-pool; translation-type { napt-44; } mapping-type endpoint-independent; filtering-type { endpoint-independent; } } } } }
PCP 配置
分步过程
配置 PCP 服务器和 PCP 规则选项。
转到
edit services pcp
服务器的层次结构级别pcp-s1
user@host# edit services pcp server pcp-s1
配置 PCP 服务器选项。
[edit services pcp server pcp-s1] user@host# set ipv4-address 124.124.124.122 user@host# set mapping-lifetime-minimum 600 user@host# set mapping-lifetime-maximum 86500 user@host# set short-lifetime-error 120 user@host# set long-lifetime-error 1200 user@host# set max-mappings-per-client 128 user@host# set pcp-options third-party prefer-failure
创建 PCP 规则。
[edit services pcp rule pcp-napt44-rule user@host# edit rule pcp-napt44-rule
配置 PCP 规则选项。
[edit services pcp rule pcp-napt44-rule] user@host# set match-direction input user@host# set term t0 then pcp-server pcp-s1
结果
user@host# show services pcp server pcp-s1 { ipv4-address 124.124.124.122; mapping-lifetime-minimum 600; mapping-lifetime-maximum 86500; short-lifetime-error 120; long-lifetime-error 1200; max-mappings-per-client 128; pcp-options third-party prefer-failure; } rule pcp-napt44-rule { match-direction input; term t0 { then { pcp-server pcp-s1; } } }
服务集配置
分步过程
在层次结构级别创建
edit services service-set
服务集sset_0
。user@host# edit services service-set sset_0
service-set sset_0 { pcp-rules pcp-napt44-rule; nat-rules pcp-rule; interface-service { service-interface sp-2/0/0.0; } }
标识与服务集关联的 NAT 规则。
[edit services service-set sset_0] user@host# set nat-rules pcp-rule
标识与服务集关联的 PCP 规则。
[edit services service-set sset_0] user@host# set pcp-rules r1
标识与服务集关联的服务接口。
[edit services service-set sset_0] user@host# set interface-service service-interface sp-2/0/0.0
结果
user@host# show pcp-rules pcp-napt44-rule; nat-rules pcp-rule; interface-service { service-interface sp-2/0/0.0; }
更改历史记录表
功能支持由您使用的平台和版本决定。使用功能资源管理器确定您的平台是否支持某个 功能 。