Protocolo de controle de porta
Visão geral do protocolo de controle de porta
O protocolo de controle de porta (PCP) fornece uma maneira de controlar o encaminhamento de pacotes de entrada por dispositivos upstream, como NAT44 e dispositivos de firewall, e uma maneira de reduzir o tráfego de manutenção de atividade de aplicativos. O PCP é suportado nos PICs multisserviços MS-DPC, MS-100, MS-400 e MS-500. A partir do Junos OS Release 17.4R1, o PCP para NAPT44 também é suportado no MS-MPC e no MS-MIC. A partir do Junos 20.2R1, o PCP para serviços CGNAT DS-Lite tem suporte para serviços de próxima geração.A partir do Junos OS Release 18.2R1, o PCP no MS-MPC e no MS-MIC oferece suporte ao DS-Lite. No Junos OS Release 18.1 e versões anteriores, o PCP no MS-MPC e MS-MIC não oferece suporte ao DS-Lite.
O PCP foi projetado para ser implementado no contexto de NATs de nível de operadora (CGNs) e NATs pequenos (por exemplo, NATs residenciais). O PCP permite que os hosts operem servidores por um longo período (como no caso de uma webcam) ou por um curto período de tempo (por exemplo, durante um jogo ou em uma chamada telefônica) quando estiverem atrás de um dispositivo NAT, inclusive quando estiverem atrás de um CGN operado por seu ISP. O PCP permite que os aplicativos criem mapeamentos de um endereço IP externo e porta para um endereço IP interno e porta. Esses mapeamentos são necessários para comunicações de entrada bem-sucedidas destinadas a máquinas localizadas atrás de um NAT ou firewall. Depois que um mapeamento para conexões de entrada é criado, os computadores remotos devem ser informados sobre o endereço IP e a porta da conexão de entrada. Isso geralmente é feito de maneira específica do aplicativo.
O Junos OS oferece suporte ao PCP versão 2 e versão 1.
O PCP consiste nos seguintes componentes:
Cliente PCP — Um host ou gateway que emite solicitações PCP para um servidor PCP para obter e controlar recursos.
Servidor PCP — normalmente um gateway CGN ou servidor co-localizado que recebe e processa solicitações PCP
O Junos OS permite configurar servidores PCP para fluxos de mapeamento usando recursos NAPT44, como encaminhamento e alocação de blocos de portas. Os fluxos podem ser processados a partir destas fontes:
Tráfego contendo solicitações de PCP recebidas diretamente do equipamento do usuário, conforme mostrado na Figura 1.
Figura 1: Topologia básica de PCP NAPT44
Mapeamento do tráfego contendo solicitações PCP adicionadas por um roteador que funciona como um iniciador de softwire DS-Lite (B4). Esse modo, conhecido como modo simples DS-Lite, é mostrado na Figura 2.
Figura 2: PCP com modo
simples DS-Lite
O Junos OS não oferece suporte à alocação determinística de blocos de porta para tráfego originado por PCP.
Benefícios do Protocolo de Controle de Porta
Muitos aplicativos compatíveis com NAT enviam mensagens frequentes no nível do aplicativo para garantir que suas sessões não sejam expiradas por um dispositivo NAT. O PCP é usado para:
Reduza a frequência dessas mensagens de keepalive do NAT
Reduza a largura de banda na rede de acesso do assinante
Reduza o tráfego para o servidor
Reduza o consumo de bateria em dispositivos móveis
Protocolo de controle de porta versão 2
A partir do Junos OS Release 15.1, há suporte ao protocolo de controle de porta (PCP) versão 2, que está em conformidade com o RFC 6887. O PCP fornece uma maneira de controlar o encaminhamento de pacotes recebidos por dispositivos upstream, como NAT44 e dispositivos de firewall, e uma maneira de reduzir o tráfego de manutenção de aplicativos vivos. O PCP versão 2 oferece suporte à autenticação nonce. O PCP permite que os aplicativos criem mapeamentos de um endereço IP e porta externos para um endereço IP e uma porta internos. Uma carga nonce impede um ataque de repetição e é enviada por padrão, a menos que seja explicitamente desabilitada.
A verificação de nonce do cliente para solicitações de mapa da versão 2 (para atualização ou exclusão) requer que o nonce recebido na solicitação de mapa original que faz com que o mapeamento PCP seja criado seja preservado. A versão da solicitação inicial que permite a criação do mapeamento também é preservada. Esse comportamento de salvar os parâmetros nonce e version denota que 13 bytes por mapeamento PCP são usados. Esse ligeiro aumento no espaço de armazenamento não é significativo quando combinado com o uso atual de memória de um sistema para um único mapeamento solicitado (levando em conta o mapeamento independente de endpoint (EIM) e a filtragem independente de endpoint (EIF) que são criados junto com ele). Em uma implantação de cliente, o PCP faz com que os mapeamentos EIM e EIF representem uma fração de todos esses mapeamentos.
Até o Junos Release 15.1, os PICs de serviços oferecem suporte a servidores PCP em roteadores da Juniper Networks de acordo com a versão 22 do PCP com codificação de mensagens versão 1. Com o PCP sendo refinado da versão de rascunho, conforme definido no Protocolo de Controle de Porta (PCP) draft-ietf-pcp-base-22 (expiração de julho de 2012) para uma versão padrão finalizada, conforme definido no RFC 6887 -- Protocolo de Controle de Porta (PCP), a codificação da mensagem mudou para a versão 2 com a adição de uma carga nonce aleatória para autenticar solicitações de peer e mapa conforme necessário. A versão 1 não decodifica mensagens compatíveis com o formato da versão 2 e a autenticação nonce não é suportada. Em um ambiente de rede real, com dispositivos de equipamento de instalações do cliente (CPE) cada vez mais suportando apenas a versão 2, é necessário analisar e enviar mensagens da versão 2. A compatibilidade com versões anteriores com dispositivos CPE compatíveis com a versão 1 é mantida (a negociação de versão faz parte do padrão) e autentica pacotes de carga nonce de solicitação quando as mensagens v2 estão em uso.
A saída do show services pcp statistics comando contém o campo de versão não suportada do PCP, que é incrementado para indicar sempre que a versão não é 1 ou 2. Um novo campo, o nonce de solicitação PCP não corresponde ao mapeamento existente, é introduzido para indicar o número de solicitações PCP versão 2 que foram ignoradas porque a carga útil do nonce não correspondeu à registrada no mapeamento (falha na autenticação). Se a versão 2 estiver em uso, o nonce do cliente será usado para autenticação.
Configuração do protocolo de controle de porta
Este tópico descreve como configurar o protocolo de controle de porta (PCP). O PCP é suportado nos PICs multisserviços MS-DPC, MS-100, MS-400 e MS-500. A partir do Junos OS Release 17.4R1, o PCP para NAPT44 também é suportado no MS-MPC e no MS-MIC. A partir do Junos OS Release 18.2R1, o PCP no MS-MPC e MS-MIC oferece suporte ao DS-Lite. No Junos OS Release 18.1 e versões anteriores, o PCP no MS-MPC e MS-MIC não oferece suporte ao DS-Lite. A partir do lançamento do Junos OS 20.2R1, o PCP é suportado na placa de serviços de segurança MX-SPC3 para serviços CGNAT.
Execute as seguintes tarefas de configuração:
- Configurando opções do servidor PCP
- Configurando uma regra de PCP
- Configurando uma regra NAT
- Configurando um conjunto de serviços para aplicar o PCP
- Configuração de mensagens SYSLOG
Configurando opções do servidor PCP
Configurando uma regra de PCP
Uma regra de PCP tem as mesmas opções básicas que todas as regras de conjunto de serviços:
Uma
termopção que permite que uma única regra tenha vários aplicativos.Um termo não é necessário ao executar a placa de serviços de segurança MX-SPC3 para serviços de próxima geração.
Uma
fromopção que identifica o tráfego que está sujeito à regra.Uma
thenopção que identifica qual ação deve ser tomada. No caso de uma regra PCP, esta opção identifica o servidor pcp que lida com o tráfego selecionado
Configurando uma regra NAT
Para configurar uma regra NAT:
Configurando um conjunto de serviços para aplicar o PCP
Para usar o PCP, você deve fornecer o nome da regra (ou o nome de uma lista de nomes de regras) na pcp-rule rule-name opção.
Seu conjunto de serviços também deve identificar qualquer arquivo .nat-rule softwire-rule
Configuração de mensagens SYSLOG
Uma nova classe de syslog, a opção de configuração, pcp-logs, foi fornecida para controlar a geração de log do PCP. Ele fornece os seguintes níveis de registro:
protocol— Todos os logs relacionados à criação e exclusão de mapeamento são incluídos neste nível de registro.protocol-error—–Todos os logs relacionados a erros de protocolo (como falha na atualização de mapeamento, falha na pesquisa de PCP, falha na criação de mapeamento). estão incluídos neste nível de registro.system-error— Erros de memória e infraestrutura estão incluídos neste nível de registro.
Monitoramento das operações do protocolo de controle de porta
Você pode monitorar as operações do protocolo de controle de porta (PCP) com os seguintes comandos operacionais:
Para MS-MPCs, use o
show services nat mappings pcpcomando.Observação:O PCP não é suportado para serviços de próxima geração no Junos OS versão 19.3R2
Para MS-MPCs, use o
show services nat mappings endpoint-independentcomando.Para serviços de próxima geração, use o
show services nat source mappings endpoint-independentcomando.show services pcp statistics protocol
Veja a seguir exemplos da saída desses 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
Exemplo: configurando o protocolo de controle de porta com NAPT44
O PCP é suportado no MS-DPC, MS-100, MS-400 e MS-500 MultiServices PICS. A partir do Junos OS Release 17.4R1, o PCP para NATP44 também é suportado no MS-MPC e no MS-MIC.
Requerimentos
Requisitos de hardware
UEs com clientes PCP.
Um roteador MX 3D com um PIC de serviços MS-DPC.
Requisitos de software
Junos OS 13.2
Pacote de serviços de camada 3
Visão geral
Um ISP deseja permitir que UEs com clientes PCP mantenham conexões com servidores sem atingir o tempo limite. Os clientes PCP geram solicitações PCP para o tipo e a duração da conexão necessária. As conexões podem ser de longa duração, como aplicativos que usam uma webcam, ou de duração mais curta, como jogos online. Um roteador MX 3D fornece um servidor PCP para interpretar as solicitações do cliente PCP e NAPT44. A Figura 3 mostra a topologia básica para este exemplo.
Configuração do PCP
- Configuração rápida da CLI
- Configuração do chassi
- Configuração da interface
- Configuração de NAT
- Configuração do PCP
- Configuração do conjunto de serviços
Configuração rápida da CLI
Para configurar rapidamente este exemplo, copie os seguintes comandos, cole-os em um arquivo de texto, remova quaisquer quebras de linha, altere todos os detalhes necessários para corresponder à sua configuração de rede e, em seguida, copie e cole os comandos na CLI no nível de [edit] hierarquia.
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
Configuração do chassi
Procedimento passo a passo
Para configurar o PIC de serviço (FPC 2 Slot 0) com o pacote de serviço de Camada 3:
Vá para o nível de hierarquia [edit chassis].
user@host# edit chassis
Configure o pacote de serviços de Camada 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;
}
Configuração da interface
Procedimento passo a passo
Configure os serviços 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 a interface voltada para o cliente usada para serviços NAT e 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 a interface voltada para 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;
}
}
}
Configuração de NAT
Procedimento passo a passo
Vá para a
[edit services nat]hierarquia.user@host# edit services nat
Configure um pool de NAT chamado
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 uma regra NAT chamada
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;
}
}
}
}
}
Configuração do PCP
Procedimento passo a passo
Para configurar o servidor PCP e as opções de regra PCP.
Vá para o
edit services pcpnível de hierarquia do servidorpcp-s1user@host# edit services pcp server pcp-s1
Configure as opções do 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
Crie a regra PCP.
[edit services pcp rule pcp-napt44-rule user@host# edit rule pcp-napt44-rule
Configure as opções de regra do 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;
}
}
}
Configuração do conjunto de serviços
Procedimento passo a passo
Crie um conjunto de serviços,
sset_0, no nível deedit services service-sethierarquia.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 a regra NAT associada ao conjunto de serviços.
[edit services service-set sset_0] user@host# set nat-rules pcp-rule
Identifique a regra de PCP associada ao conjunto de serviços.
[edit services service-set sset_0] user@host# set pcp-rules r1
Identifique a interface de serviço associada ao conjunto de serviços.
[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;
}
Tabela de histórico de alterações
A compatibilidade com recursos é determinada pela plataforma e versão utilizada. Use o Explorador de recursos para determinar se um recurso é compatível com sua plataforma.