Inleiding
In dit document worden niet-vertaalde pakketten beschreven die NAT op een Cisco IOS XE Router omzeilen en mogelijk leiden tot verkeersproblemen.
Achtergrondinformatie
In Softwareversie 12.2(33)XND werd standaard een functie met de naam Network Address Translation (NAT) Gatekeeper geïntroduceerd en ingeschakeld. NAT Gatekeeper is ontworpen om te voorkomen dat niet-NAT-ed-stromen overmatige CPU gebruiken om een NAT-vertaling te maken. Om dit te bereiken, worden twee kleine caches (één voor de in2out-richting en één voor de out2in-richting) gemaakt op basis van het bronadres. Elk cacheitem bestaat uit een bronadres, een ID voor virtuele routering en doorsturen (VRF), een timerwaarde (die wordt gebruikt om het item na 10 seconden ongeldig te maken) en een frameteller. Er zijn 256 items in de tabel die deel uitmaken van de cache. Als er meerdere verkeersstromen zijn van hetzelfde bronadres waar sommige pakketten NAT vereisen en sommige niet, kan dit ertoe leiden dat pakketten niet NAT-ed zijn en niet onvertaald door de router worden verzonden. Cisco raadt klanten aan om waar mogelijk NAT-ed en niet-NAT-ed stromen op dezelfde interface te vermijden.
Opmerking: Dit probleem is niet gerelateerd aan H.323.
Betrokken platforms
- ISR1K
- ISR4K
- ASR1K
- C8200
- C8300
- C8500
Demonstratie dat NAT wordt omzeild
In dit gedeelte wordt beschreven hoe NAT kan worden omzeild vanwege de NAT-poortwachter-functie. Bekijk het diagram in detail. U kunt zien dat er een bronrouter, een Adaptive Security Appliance (ASA)-firewall, de ASR1K en de bestemmingsrouter zijn.
Verkeersstromen naar niet-NAT-bestemmingen
- Ping wordt geïnitieerd vanuit de bron: Bron: 172.17.250.201 Bestemming: 198.51.100.11.
- Het pakket arriveert op de interne interface van de ASA die bronadresvertaling uitvoert. Het pakket heeft nu Bron: 203.0.113.231 Bestemming: 198.51.100.11.
- Het pakket komt aan bij de ASR1K op de NAT buiten naar binnen interface. NAT-vertaling vindt geen vertaling voor het bestemmingsadres en dus wordt de cache "uit" van de poortwachter gevuld met het bronadres 203.0.113.231.
- Het pakket komt aan op de bestemming. De bestemming accepteert het ICMP-pakket (Internet Control Message Protocol) en retourneert een ICMP ECHO-antwoord dat resulteert in ping-succes.
Verkeer van dezelfde bron probeert NAT-ed-bestemming te verzenden
- .Ping wordt geïnitieerd vanuit de bron: Bron: 172.17.250.201 Bestemming: 198.51.100.9.
- Het pakket arriveert op de interne interface van de ASA die bronadresvertaling uitvoert. Het pakket heeft nu Bron: 203.0.113.231 Bestemming: 198.51.100.9.
- Het pakket komt aan bij de ASR1K op de NAT buiten naar binnen interface. NAT zoekt eerst naar een vertaling voor de bron en bestemming. Omdat het er geen vindt, controleert het de gatekeeper "out" -cache en vindt het bronadres 203.0.113.231. Het gaat er (ten onrechte) van uit dat het pakket geen vertaling nodig heeft en stuurt het pakket door als er een route bestaat voor de bestemming of laat het pakket vallen. Hoe dan ook, het pakket bereikt niet de beoogde bestemming.
Herstel van NAT-ed verkeer
- Na 10 seconden wordt de vermelding voor het bronadres 203.0.113.231 keer verwijderd in de gatekeeper-out-cache.
Opmerking: het item bestaat nog steeds fysiek in de cache, maar omdat het is verlopen, wordt het niet gebruikt.
- Nu als dezelfde bron 172.17.250.201 naar NAT-ed bestemming 198.51.100.9 stuurt. Wanneer het pakket aankomt bij de out2in-interface op de ASR1K, wordt er geen vertaling gevonden. Wanneer u de cache van de gatekeeper uitcheckt, kunt u geen actief item vinden, zodat u de vertaling voor de bestemming en de pakketstroom maakt zoals verwacht.
- Het verkeer in deze stroom gaat door zolang vertalingen niet worden getimed als gevolg van inactiviteit. Als de bron in de tussentijd opnieuw verkeer naar een niet-NAT-ed-bestemming stuurt, waardoor een ander item in de poortwachter uit de cache wordt ingevuld, heeft dit geen invloed op de ingestelde sessies, maar er is een periode van 10 seconden waarin nieuwe sessies van dezelfde bron naar NAT-ed-bestemmingen mislukken.

Voorbeeld van het probleem
- Een ping wordt gestart vanaf de bronrouter: Bron: 172.17.250.201 Bestemming: 198.51.100.9. De ping wordt uitgegeven met een herhalingstelling van twee, over en over [FLOW1].
- Ping een andere bestemming die niet wordt NAT-ed door de ASR1K: Bron: 172.17.250.201 Bestemming: 198.51.100.11 [FLOW2].
- Verzend meer pakketten naar 198.51.100.9 [FLOW1]. De eerste paar pakketten van deze stroom omzeilen NAT zoals te zien is aan de toegangslijst-matching op de bestemmingsrouter.
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#
De ACL-overeenkomst op de bestemmingsrouter toont de drie pakketten die zijn mislukt en niet zijn vertaald:
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#
Op de ASR1K kunt u de cachegegevens van de poortwachter controleren:
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
Oplossing/oplossing
In de meeste omgevingen werkt de NAT gatekeeper functionaliteit prima en veroorzaakt geen problemen. Als u echter tegen dit probleem aanloopt, zijn er een paar manieren om het op te lossen.
Oplossing 1
De voorkeursoptie zou zijn om Cisco IOS® XE te upgraden naar een versie die de poortwachter-verbetering bevat:
Cisco bug ID CSCun06260 XE3.13 Gatekeeper Hardening
Met deze verbetering kan de NAT-poortwachter de bron- en bestemmingsadressen cachen en de cachegrootte configureren. Als u de uitgebreide modus wilt inschakelen, moet u de cachegrootte vergroten met deze opdrachten. U kunt ook de cache controleren om te zien of u de grootte moet vergroten.
PRIMARY(config)#ip nat settings gatekeeper-size 1024
PRIMARY(config)#end
Uitgebreide modus kan worden geverifieerd door deze opdrachten te controleren:
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
Oplossing 2
Voor releases die niet de oplossing voor Cisco bug ID CSCun06260 hebben, is de enige optie om de gatekeeper-functie uit te schakelen. Het enige negatieve effect is een licht verminderde prestaties voor niet-NAT-ed verkeer en een hoger CPU-gebruik op de 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#
Het gebruik van QFP kan worden gecontroleerd met de volgende opdrachten:
show platform hardware qfp active data utilization summary
show platform hardware qfp active data utilization qfp 0
Oplossing 3
Scheid verkeersstromen zodat NAT- en niet-NAT-pakketten niet op dezelfde interface aankomen.
Samenvatting
De NAT Gatekeeper commando werd geïntroduceerd om de prestaties van de router voor niet-NAT-ed stromen te verbeteren. Onder sommige omstandigheden kan de functie problemen veroorzaken wanneer een mix van NAT- en niet-NAT-pakketten van dezelfde bron komen. De oplossing is om de verbeterde gatekeeper-functionaliteit te gebruiken, of als dat niet mogelijk is, de gatekeeper-functie uit te schakelen.
Referenties
Softwarewijzigingen waardoor poortwachter kon worden uitgeschakeld:
- Cisco bug ID CSCty67184: ASR1k NAT CLI - Gatekeeper aan/uit
- Cisco bug ID CSCth23984: CLI-functionaliteit toevoegen om de NAT-gatekeeper-functionaliteit in- en uit te schakelen
NAT Gatekeeper-verbetering: