Protocolo de control de puertos
Descripción general del protocolo de control de puertos
El Protocolo de control de puertos (PCP) proporciona una forma de controlar el reenvío de paquetes entrantes por dispositivos ascendentes, como NAT44 y dispositivos de firewall, y una forma de reducir el tráfico de mantenimiento vivo de aplicaciones. PCP es compatible con las PIC de multiservicios MS-DPC, MS-100, MS-400 y MS-500. A partir de Junos OS versión 17.4R1, PCP para NAPT44 también se admite en MS-MPC y MS-MIC. A partir de Junos 20.2R1, PCP para los servicios CGNAT DS-Lite son compatibles con los servicios de próxima generación.A partir de Junos OS versión 18.2R1, PCP en MS-MPC y MS-MIC admite DS-Lite. En Junos OS versión 18.1 y versiones anteriores, PCP en MS-MPC y MS-MIC no admite DS-Lite.
El PCP está diseñado para implementarse en el contexto de NAT de grado portador (CGN) y NAT pequeños (por ejemplo, NAT residenciales). PCP permite a los hosts operar servidores durante mucho tiempo (como en el caso de una cámara web) o un corto tiempo (por ejemplo, mientras juegan un juego o en una llamada telefónica) cuando están detrás de un dispositivo NAT, incluso cuando están detrás de un CGN operado por su ISP. PCP permite que las aplicaciones creen asignaciones desde una dirección IP externa y un puerto a una dirección IP y un puerto internos. Estas asignaciones son necesarias para que las comunicaciones entrantes exitosas estén destinadas a máquinas ubicadas detrás de una NAT o un firewall. Después de crear una asignación para las conexiones entrantes, se debe informar a los equipos remotos acerca de la dirección IP y el puerto de la conexión entrante. Esto generalmente se hace de una manera específica de la aplicación.
Junos OS es compatible con PCP versión 2 y versión 1.
El PCP consta de los siguientes componentes:
Cliente PCP: host o puerta de enlace que emite solicitudes de PCP a un servidor de PCP para obtener y controlar recursos.
Servidor PCP: normalmente una puerta de enlace CGN o un servidor coubicado que recibe y procesa solicitudes de PCP
Junos OS permite configurar servidores PCP para asignar flujos mediante capacidades de NAPT44, como el reenvío de puertos y la asignación de bloques de puertos. Los flujos se pueden procesar a partir de estos orígenes:
Tráfico que contiene solicitudes de PCP recibidas directamente del equipo del usuario, como se muestra en la Figura 1.
Figura 1: Topología básica de PCP NAPT44Mapeo del tráfico que contiene solicitudes de PCP agregadas por un enrutador que funciona como un iniciador de softwire DS-Lite (B4). Este modo, conocido como modo simple DS-Lite, se muestra en la Figura 2.
Figura 2: PCP con modo plano DS-Lite
Junos OS no admite la asignación determinista de bloques de puertos para el tráfico originado en PCP.
Beneficios del protocolo de control de puertos
Muchas aplicaciones compatibles con NAT envían mensajes frecuentes a nivel de aplicación para asegurarse de que un dispositivo NAT no agote el tiempo de espera de sus sesiones. La PCP se utiliza para:
Reducir la frecuencia de estos mensajes keepalive de NAT
Reducir el ancho de banda en la red de acceso del suscriptor
Reducir el tráfico al servidor
Reducir el consumo de batería en dispositivos móviles
Protocolo de control de puertos versión 2
A partir de Junos OS versión 15.1, se admite el Protocolo de control de puertos (PCP) versión 2, que cumple con RFC 6887. PCP proporciona una forma de controlar el reenvío de paquetes entrantes por dispositivos ascendentes, como NAT44, y dispositivos de firewall, y una forma de reducir el tráfico de mantenimiento vivo de aplicaciones. La versión 2 de PCP admite la autenticación nonce. PCP permite que las aplicaciones creen asignaciones desde una dirección IP externa y un puerto a una dirección IP interna y un puerto. Una carga nonce evita un ataque de repetición y se envía de forma predeterminada a menos que esté deshabilitada explícitamente.
La comprobación de nonce del cliente para solicitudes de asignación de la versión 2 (para actualizar o eliminar) requiere que se conserve el nonce recibido en la solicitud de asignación original que causa la creación de la asignación PCP. También se conserva la versión de la solicitud inicial que permite crear la asignación. Este comportamiento de guardar los parámetros nonce y version denota que se utilizan 13 bytes por asignación PCP. Este ligero aumento en el espacio de almacenamiento no es significativo cuando se combina con el uso actual de memoria de un sistema para una única asignación solicitada (teniendo en cuenta la asignación independiente del punto de conexión (EIM) y el filtrado independiente del punto de conexión (EIF) que se crean junto con él). En una implementación de cliente, PCP hace que las asignaciones de EIM y EIF representen una fracción de todas esas asignaciones.
Hasta la versión 15.1 de Junos, las PIC de servicios admiten servidores PCP en enrutadores de Juniper Networks de acuerdo con el borrador de PCP versión 22 con codificación de mensaje de versión 1. Con PCP siendo refinado de la versión preliminar como se define en el Protocolo de Control de Puertos (PCP) draft-ietf-pcp-base-22 (expiración de julio de 2012) a una versión finalizada y estándar como se define en RFC 6887 -- Protocolo de Control de Puerto (PCP), la codificación de mensajes cambió a la versión 2 con la adición de una carga nonce aleatoria para autenticar solicitudes de pares y asignar según sea necesario. La versión 1 no descodifica mensajes compatibles con el formato de la versión 2 y no se admite la autenticación nonce. En un entorno de red real, con dispositivos de equipo en las instalaciones del cliente (CPE) que admiten cada vez más solo la versión 2, es necesario analizar y enviar mensajes de la versión 2. Se mantiene la compatibilidad con versiones anteriores de dispositivos CPE compatibles con la versión 1 (la negociación de versiones forma parte del estándar) y autentica los paquetes de carga Nonce de solicitud cuando los mensajes v2 están en uso.
El resultado del show services pcp statistics
comando contiene el campo de versión no compatible de PCP, que se incrementa para indicar siempre que la versión no sea 1 o 2. Se introduce un nuevo campo, PCP request nonce does not match existing mapping, para indicar el número de solicitudes PCP versión 2 que se ignoraron porque la carga nonce no coincidía con la registrada en la asignación (falló la autenticación). Si la versión 2 está en uso, el nonce del cliente se utiliza para la autenticación.
Configuración del protocolo de control de puertos
En este tema se describe cómo configurar el protocolo de control de puertos (PCP). PCP es compatible con las PIC de multiservicios MS-DPC, MS-100, MS-400 y MS-500. A partir de Junos OS versión 17.4R1, PCP para NAPT44 también se admite en MS-MPC y MS-MIC. A partir de Junos OS versión 18.2R1, PCP en MS-MPC y MS-MIC admite DS-Lite. En Junos OS versión 18.1 y versiones anteriores, PCP en MS-MPC y MS-MIC no admite DS-Lite. A partir de la versión 20.2R1 de Junos OS, PCP es compatible con la tarjeta de servicios de seguridad MX-SPC3 para servicios CGNAT.
Realice las siguientes tareas de configuración:
- Configuración de las opciones del servidor PCP
- Configuración de una regla PCP
- Configuración de una regla NAT
- Configuración de un conjunto de servicios para aplicar PCP
- Configuración de mensajes SYSLOG
Configuración de las opciones del servidor PCP
Configuración de una regla PCP
Una regla PCP tiene las mismas opciones básicas que todas las reglas de conjuntos de servicios:
Una
term
opción que permite que una sola regla tenga varias aplicaciones.No se requiere un término cuando se ejecuta la tarjeta de servicios de seguridad MX-SPC3 para servicios de próxima generación.
Una
from
opción que identifica el tráfico sujeto a la regla.Una
then
opción que identifica qué acción se debe tomar. En el caso de una regla PCP, esta opción Identifica el servidor pcp que controla el tráfico seleccionado
Configuración de una regla NAT
Para configurar una regla NAT:
Configuración de un conjunto de servicios para aplicar PCP
Para usar PCP, debe proporcionar el nombre de la regla (o el nombre de una lista de nombres de reglas) en la pcp-rule rule-name
opción.
El conjunto de servicios también debe identificar los archivos .nat-rule
softwire-rule
Configuración de mensajes SYSLOG
Se ha proporcionado una nueva clase syslog, opción de configuración, pcp-logs
, para controlar la generación de registros de PCP. Proporciona los siguientes niveles de registro:
protocol
—Todos los registros relacionados con la creación y eliminación de mapas se incluyen en este nivel de registro.protocol-error
—–Todos los registros relacionados con errores de protocolo (como error en la actualización de la asignación, error en la búsqueda de PCP, error en la creación de la asignación). se incluyen en este nivel de registro.system-error
: los errores de memoria e infraestructura se incluyen en este nivel de registro.
Supervisión de las operaciones del protocolo de control de puertos
Puede supervisar las operaciones del Protocolo de control de puertos (PCP) con los siguientes comandos operativos:
Para MS-MPC, use el
show services nat mappings pcp
comando.Nota:PCP no es compatible con los servicios de próxima generación en Junos OS versión 19.3R2
Para MS-MPC, use el
show services nat mappings endpoint-independent
comando.Para los servicios de próxima generación, utilice el
show services nat source mappings endpoint-independent
comando.show services pcp statistics protocol
A continuación se muestran ejemplos de la salida de estos comandos.
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
Ejemplo: Configuración del protocolo de control de puertos con NAPT44
PCP es compatible con los PIC multiservicios MS-DPC, MS-100, MS-400 y MS-500. A partir de Junos OS versión 17.4R1, PCP para NATP44 también es compatible con MS-MPC y MS-MIC.
Requisitos
Requisitos de hardware
UE con clientes PCP.
Un enrutador MX 3D con una PIC de servicios MS-DPC.
Requisitos de software
Junos OS 13.2
Paquete de servicios de capa 3
Visión general
Un ISP desea permitir que las UE con clientes PCP mantengan conexiones a servidores sin agotar el tiempo de espera. Los clientes PCP generan solicitudes PCP para el tipo y la duración de la conexión que necesitan. Las conexiones pueden ser de larga duración, como aplicaciones que usan una cámara web, o de menor duración, como juegos en línea. Un enrutador MX 3D proporciona un servidor PCP para interpretar las solicitudes de cliente PCP y NAPT44. La figura 3 muestra la topología básica de este ejemplo.

Configuración de PCP
- Configuración rápida de CLI
- Configuración del chasis
- Configuración de interfaz
- Configuración de NAT
- Configuración de PCP
- Configuración del conjunto de servicios
Configuración rápida de CLI
Para configurar rápidamente este ejemplo, copie los siguientes comandos, péguelos en un archivo de texto, elimine los saltos de línea, cambie los detalles necesarios para que coincidan con su configuración de red y, luego, copie y pegue los comandos en la CLI en el nivel de jerarquía [edit].
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
Configuración del chasis
Procedimiento paso a paso
Para configurar el PIC de servicio (FPC 2 ranura 0) con el paquete de servicio de capa 3:
Vaya al nivel de jerarquía [edit chassis].
user@host# edit chassis
Configure el paquete de servicios de capa 3.
[edit chassis]
user@host# set fpc 2 pic 0 adaptive-services service-package layer-3
Resultados
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; }
Configuración de interfaz
Procedimiento paso a paso
Configure los servicios 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
Configure la interfaz orientada al cliente utilizada para los servicios NAT y 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
Configure la interfaz orientada a Internet.
user@host# set interfaces xe-5/0/0 unit 0 family inet address 25.0.0.1/24
Resultados
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; } } }
Configuración de NAT
Procedimiento paso a paso
Vaya a la
[edit services nat]
jerarquía.user@host# edit services nat
Configure un grupo de NAT denominado
pcp-pool
.[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-robinConfigure una regla NAT llamada
pcp-rule
.[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
Resultados
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; } } } } }
Configuración de PCP
Procedimiento paso a paso
Para configurar el servidor PCP y las opciones de regla PCP.
Ir al nivel jerárquico del
edit services pcp
servidorpcp-s1
user@host# edit services pcp server pcp-s1
Configure las opciones del servidor 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
Cree la regla PCP.
[edit services pcp rule pcp-napt44-rule user@host# edit rule pcp-napt44-rule
Configure las opciones de la regla PCP.
[edit services pcp rule pcp-napt44-rule] user@host# set match-direction input user@host# set term t0 then pcp-server pcp-s1
Resultados
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; } } }
Configuración del conjunto de servicios
Procedimiento paso a paso
Cree un conjunto de servicios,
sset_0
, en el nivel deedit services service-set
jerarquía.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; } }
Identifique la regla NAT asociada al conjunto de servicios.
[edit services service-set sset_0] user@host# set nat-rules pcp-rule
Identifique la regla de PCP asociada con el conjunto de servicios.
[edit services service-set sset_0] user@host# set pcp-rules r1
Identifique la interfaz de servicio asociada al conjunto de servicios.
[edit services service-set sset_0] user@host# set interface-service service-interface sp-2/0/0.0
Resultados
user@host# show pcp-rules pcp-napt44-rule; nat-rules pcp-rule; interface-service { service-interface sp-2/0/0.0; }
Tabla de historial de cambios
La compatibilidad con las funciones viene determinada por la plataforma y la versión que esté utilizando. Utilice el Explorador de características para determinar si una característica es compatible con su plataforma.