Contents

Introduction

Informações de Apoio

Demonstração de NAT sendo ignorado

Fluxos de tráfego para destino não NAT

Tráfego da mesma origem tenta enviar destino de NAT

Restauração do tráfego de NAT

Exemplo do problema

Solução alternativa/correção

Solução 1

Solução 2

Solução 3

Summary

Referências

Introduction

Este documento descreve uma situação em que os pacotes que devem ser convertidos pela Network Address Translation (NAT) em um Cisco 1000 Series Aggregation Services Router (ASR1K) não são convertidos (NAT é ignorado). Isso pode resultar em falha de tráfego, pois o próximo salto provavelmente não está configurado para permitir que os pacotes não convertidos sejam processados.

Informações de Apoio

Na versão de software 12.2(33)XND, um recurso chamado NAT Gatekeeper foi introduzido e ativado por padrão. O NAT Gatekeeper foi projetado para impedir que fluxos não NAT usem CPU excessiva em um esforço para criar uma conversão NAT. Para conseguir isso, dois pequenos caches (um para a direção in2out e um para a direção out2in) são criados com base no endereço de origem. Cada entrada de cache consiste em um endereço de origem, um ID de roteamento e encaminhamento virtual (VRF), um valor de temporizador (usado para invalidar a entrada após 10 segundos) e um contador de quadros. Há 256 entradas na tabela que formam o cache. Se houver vários fluxos de tráfego do mesmo endereço de origem em que alguns pacotes requerem NAT e outros não, isso pode resultar em pacotes não sendo direcionados para NAT e enviados através do roteador não traduzido. A Cisco recomenda que os clientes evitem ter fluxos de NAT e de não NAT na mesma interface sempre que possível.

Note: Isso não tem nada a ver com H.323.

Demonstração de NAT sendo ignorado

Esta seção descreve como o NAT pode ser ignorado devido ao recurso de gatekeeper NAT. Revise o diagrama em detalhes. Você pode ver que há um roteador de origem, um firewall do Adaptive Security Appliance (ASA), o ASR1K e o roteador de destino.

Fluxos de tráfego para destino não NAT

1. O ping é iniciado a partir da origem: Fonte: 172.17.250.201 Destino: 198.51.100.11.

2. O pacote chega à interface interna do ASA que executa a conversão do endereço de origem. O pacote agora terá a origem: 203.0.113.231 Destino: 198.51.100.11.

3. O pacote chega ao ASR1K na NAT externa para a interface interna. A conversão de NAT não encontra tradução para o endereço de destino e, portanto, o cache de "saída" do gatekeeper é preenchido com o endereço de origem 203.0.113.231.

4. O pacote chega ao destino. O destino aceita o pacote ICMP (Internet Control Message Protocol) e retorna uma resposta ICMP ECHO que resulta no êxito do ping.

Tráfego da mesma origem tenta enviar destino de NAT

1. .O ping é iniciado a partir da origem: Fonte: 172.17.250.201 Destino: 198.51.100.9.

2. O pacote chega à interface interna do ASA que executa a conversão do endereço de origem. O pacote agora terá a origem: 203.0.113.231 Destino: 198.51.100.9.

3. O pacote chega ao ASR1K na NAT externa para a interface interna. O NAT primeiro procura uma tradução para a origem e o destino. Como ele não encontra um, ele verifica o cache "out" do gatekeeper e encontra o endereço de origem 203.0.113.231. Ele (erroneamente) supõe que o pacote não precisa de tradução e encaminha o pacote se existir uma rota para o destino ou descarta o pacote. De qualquer forma, o pacote não chegará ao destino pretendido.

Restauração do tráfego de NAT

1. Após 10 segundos, a entrada do endereço de origem 203.0.113.231 expira no cache de saída do gatekeeper.
Note: A entrada ainda existe fisicamente no cache, mas como expirou, ela não é usada.

2. Agora, se a mesma origem 172.17.250.201 envia para o destino 198.51.100.9 do NAT.Quando o pacote chega à interface out2in no ASR1K, nenhuma conversão será encontrada. Ao verificar o cache de saída do gatekeeper, você não encontrará uma entrada ativa e, portanto, criará a conversão para o destino e os pacotes fluirão conforme esperado.

3. O tráfego neste fluxo continuará enquanto as conversões não estiverem expiradas devido à inatividade. Se, entretanto, a origem enviar novamente o tráfego para um destino não NAT, o que faz com que outra entrada seja preenchida no cache de saída do gatekeeper, ela não afetará as sessões estabelecidas, mas haverá um período de 10 segundos no qual novas sessões dessa mesma origem para destinos de NAT falharão.

Exemplo do problema

1. O ping é iniciado a partir do roteador de origem : Fonte: 172.17.250.201 Destino: 198.51.100.9. O ping é emitido com contagem repetida de dois, sobre e sobre [FLOW1].

2. Em seguida, faça ping em um destino diferente que não esteja sendo definido por NAT pelo ASR1K: Fonte: 172.17.250.201 Destino:198.51.100.11 [FLOW2].

3. Em seguida, envie mais pacotes para 198.51.100.9 [FLOW1]. Os primeiros pacotes desse fluxo ignorarão o NAT conforme visto pela lista de acesso correspondente no roteador de destino.

source#ping 198.51.100.9 source lo1 rep 2

Type escape sequence to abort.

Sending 2, 100-byte ICMP Echos to 198.51.100.9, timeout is 2 seconds:

Packet sent with a source address of 172.17.250.201

!!

Success rate is 100 percent (2/2), round-trip min/avg/max = 1/1/1 ms

source#ping 198.51.100.9 source lo1 rep 2

Type escape sequence to abort.

Sending 2, 100-byte ICMP Echos to 198.51.100.9, timeout is 2 seconds:

Packet sent with a source address of 172.17.250.201

!!

Success rate is 100 percent (2/2), round-trip min/avg/max = 1/1/1 ms

source#ping 198.51.100.11 source lo1 rep 200000

Type escape sequence to abort.

Sending 200000, 100-byte ICMP Echos to 198.51.100.11, timeout is 2 seconds:

Packet sent with a source address of 172.17.250.201

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.

Success rate is 99 percent (3007/3008), round-trip min/avg/max = 1/1/16 ms

source#ping 198.51.100.9 source lo1 rep 10

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 198.51.100.9, timeout is 2 seconds:

Packet sent with a source address of 172.17.250.201

...!!!!!!!

Success rate is 70 percent (7/10), round-trip min/avg/max = 1/1/1 ms

source#

A correspondência da ACL no roteador de destino mostra que os três pacotes que falharam não foram convertidos:

Router2#show access-list 199

Extended IP access list 199

10 permit udp host 172.17.250.201 host 198.51.100.9

20 permit udp host 172.17.250.201 host 10.212.26.73

30 permit udp host 203.0.113.231 host 198.51.100.9

40 permit udp host 203.0.113.231 host 10.212.26.73 (4 matches)

50 permit icmp host 172.17.250.201 host 198.51.100.9

60 permit icmp host 172.17.250.201 host 10.212.26.73

70 permit icmp host 203.0.113.231 host 198.51.100.9 (3 matches) <<<<<<<

80 permit icmp host 203.0.113.231 host 10.212.26.73 (42 matches)

90 permit udp any any log (2 matches)

100 permit icmp any any log (4193 matches)

110 permit ip any any (5 matches)

Router2#

No ASR1K, você pode verificar as entradas do cache do gatekeeper:

PRIMARY#show platform hardware qfp active feature nat datapath gatein

Gatekeeper on

sip 203.0.113.231 vrf 0 cnt 1 ts 0x17ba3f idx 74

sip 10.203.249.226 vrf 0 cnt 0 ts 0x36bab6 idx 218

sip 10.203.249.221 vrf 0 cnt 1 ts 0x367ab4 idx 229

PRIMARY#show platform hardware qfp active feature nat datapath gateout

Gatekeeper on

sip 198.51.100.11 vrf 0 cnt 1 ts 0x36db07 idx 60

sip 10.203.249.225 vrf 0 cnt 0 ts 0x36bb7a idx 217

sip 10.203.249.222 vrf 0 cnt 1 ts 0x367b7c idx 230

Solução alternativa/correção

Na maioria dos ambientes, a funcionalidade do gatekeeper NAT funciona bem e não causa problemas. No entanto, se você encontrar esse problema, há algumas maneiras de resolvê-lo.

Solução 1

A opção preferida seria atualizar o Cisco IOS® XE para uma versão que inclua o aprimoramento do gatekeeper:

ID de bug da Cisco CSCun06260 XE3.13 Endurecimento do gatekeeper

Essa melhoria permite que o gatekeeper NAT armazene em cache os endereços de origem e destino, além de tornar o tamanho do cache configurável. Para ativar o modo estendido, é necessário aumentar o tamanho do cache com esses comandos. Você também pode monitorar o cache para ver se precisa aumentar o tamanho.

PRIMARY(config)#ip nat settings gatekeeper-size 1024

PRIMARY(config)#end

O modo estendido pode ser verificado verificando-se estes comandos:

PRIMARY#show platform hardware qfp active feature nat datapath gatein

Gatekeeper on

sip 10.203.249.221 dip 10.203.249.222 vrf 0 ts 0x5c437 idx 631

PRIMARY#show platform hardware qfp active feature nat datapath gateout

Gatekeeper on

sip 10.203.249.225 dip 10.203.249.226 vrf 0 ts 0x5eddf idx 631

PRIMARY#show platform hardware qfp active feature nat datapath gatein active

Gatekeeper on

ext mode Size 1024, Hits 2, Miss 4, Aged 0 Added 4 Active 1

PRIMARY#show platform hardware qfp active feature nat datapath gateout active

Gatekeeper on

ext mode Size 1024, Hits 0, Miss 1, Aged 1 Added 2 Active 0

Solução 2

Para as versões que não têm a correção para o bug da Cisco ID CSCun06260, a única opção é desligar o recurso gatekeeper. O único impacto negativo será um desempenho ligeiramente reduzido para tráfego não baseado em NAT, bem como maior utilização da CPU no Quantum Flow Processor (QFP).

PRIMARY(config)#no ip nat service gatekeeper

PRIMARY(config)#end

PRIMARY#PRIMARY#Sh platform hardware qfp active feature nat datapath gatein

Gatekeeper off

PRIMARY#

A utilização do QFP pode ser monitorada com estes comandos:

show platform hardware qfp active data utilization summary

show platform hardware qfp active data utilization qfp 0

Solução 3

Fluxos de tráfego separados para que os pacotes NAT e não NAT não cheguem na mesma interface.

Summary

O comando NAT Gatekeeper foi introduzido para melhorar o desempenho do roteador para fluxos não NAT. Em algumas condições, o recurso pode causar problemas quando uma mistura de pacotes NAT e não NAT chega da mesma origem. A solução é usar a funcionalidade de gatekeeper aprimorada ou, se isso não for possível, desabilitar o recurso de gatekeeper.

Referências

Alterações de software que permitiram desligar o gatekeeper:

ID de bug Cisco CSCty67184 ASR1k NAT CLI - Gatekeeper On/Off

ID de bug da Cisco CSCth23984 Adicionar recurso de cli para ativar/desativar a funcionalidade de gatekeeper nat

aprimoramento de Gatekeeper NAT

ID de bug da Cisco CSCun06260 XE3.13 Endurecimento do gatekeeper