Introduction
Ce document décrit la fonction NAT sur les commutateurs Nexus 9000 équipés d'un ASIC Cisco Cloud-Scale qui exécute le logiciel NX-OS.
Conditions préalables
Exigences
Cisco vous recommande de bien connaître le système d'exploitation Cisco Nexus (NX-OS) et l'architecture de base de Nexus avant de poursuivre avec les informations décrites dans ce document.
Composants utilisés
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
- N9K-C93180YC-FX3
- nxos64-cs.10.4.3.F
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Introduction de la prise en charge NAT sur N9K
Terminologie
- NAT : la NAT est une technique utilisée dans les réseaux pour modifier l'adresse IP source ou de destination des paquets IP.
-
PAT (Port Address Translation) : traduction d'adresses de port, également appelée « surcharge de la NAT », plusieurs adresses IP internes partagent une adresse IP externe unique, différenciée par des numéros de port uniques.
-
NAT compatible TCP : la prise en charge NAT compatible TCP permet aux entrées de flux NAT de correspondre à l'état des sessions TCP et d'être créées et supprimées en conséquence.
Ressource NAT TCAM
Par défaut, aucune entrée TCAM n'est allouée pour la fonctionnalité NAT sur Nexus 9000. Vous devez allouer la taille TCAM pour la fonction NAT en réduisant la taille TCAM des autres fonctions.
Il existe trois types de TCAM impliqués dans les opérations NAT :
La fonction NAT utilise la région NAT TCAM pour la mise en correspondance des paquets en fonction de l’adresse IP ou du port.
Chaque entrée NAT/PAT pour les adresses source internes ou externes nécessite deux entrées NAT TCAM.
Par défaut, mode de mise à jour atomique ACL activé, 60 % du numéro d'échelle non atomique est pris en charge.
-
Région sensible au protocole TCP
Pour chaque stratégie NAT interne avec « x » as, un nombre « x » d'entrées est requis.
Pour chaque pool NAT configuré, une entrée est requise.
La taille TCAM TCP-NAT doit être doublée lorsque le mode de mise à jour atomique est activé.
Les réécritures et les traductions NAT sont stockées dans la « table de réécriture NAT » qui existe en dehors de la région TCAM NAT. La « table de réécriture NAT » a une taille fixe de 2 048 entrées pour les Nexus 9300-EX/FX/FX2/9300C et 4 096 entrées pour les Nexus 9300-FX3/GX/GX2A/GX2B/H2R/H1. Cette table est exclusivement utilisée pour les traductions NAT.
Chaque entrée NAT/PAT statique pour les adresses source internes ou externes nécessite une entrée « Table de réécriture NAT ».
Pour plus de détails sur le TCAM sur Nexus 9000, vous pouvez consulter le Livre blanc Classification TCAM with Cisco CloudScale ASICs for Nexus 9000 Series Switches.
Configuration et vérification
Topologie

Configuration de N9K-NAT
hardware access-list tcam region nat 1024
hardware access-list tcam region tcp-nat 100
ip nat translation max-entries 80
Remarque : Par défaut, la traduction nat dynamique max-entries est 80.
ip access-list TEST-NAT
10 permit ip 10.0.0.1/8 192.168.2.1/24
ip nat pool TEST 192.168.1.10 192.168.1.10 netmask 255.255.255.0
ip nat inside source list TEST-NAT pool TEST overload
Attention : l'option de surcharge d'interface pour l'option de politiques internes n'est pas prise en charge sur les commutateurs de plate-forme Cisco Nexus 9200, 9300-EX, 9300-FX 9300-FX2, 9300-FX3, 9300-FXP et 9300-GX pour les politiques internes et externes
interface Vlan100
no shutdown
ip address 192.168.1.1/24
ip nat outside
interface Vlan100
no shutdown
ip address 192.168.1.1/24
ip nat outside
Vérification
Ping interne à l’hôte
Adresse IP source du paquet de données : 10.0.0.1 Converti en IP : 192.168.1.10
Destination IP : 192.168.2.1
Inside-host# ping 192.168.2.1 source 10.0.0.1
PING 192.168.2.1 (192.168.2.1): 56 data bytes
64 bytes from 192.168.2.1: icmp_seq=0 ttl=63 time=0.784 ms
64 bytes from 192.168.2.1: icmp_seq=1 ttl=63 time=0.595 m
Vérification de la table de traduction NAT
N9K-NAT# show ip nat translations
icmp 192.168.1.10:60538 10.0.0.1:48940 192.168.2.1:0 192.168.2.1:0
icmp 192.168.1.10:60539 10.0.0.1:0 192.168.2.1:0 192.168.2.1:0
Statistiques NAT
N9K-NAT# show ip nat statistics
IP NAT Statistics
====================================================
Stats Collected since: Tue Sep 3 14:33:01 2024
----------------------------------------------------
Total active translations: 82 / Number of translations active in the system. This number is incremented each time a translation is created and is decremented each time a translation is cleared or times out.
No.Static: 0 / Total number of static translations present in the system.
No.Dyn: 82 / Total number of dynamic translations present in the system.
No.Dyn-ICMP: 2
----------------------------------------------------
Total expired Translations: 2
SYN timer expired: 0
FIN-RST timer expired: 0
Inactive timer expired: 2
----------------------------------------------------
Total Hits: 10475 / Total number of times the software does a translations table lookup and finds an entry.
Total Misses: 184884 / Total number of packet the software dropped Packet.
In-Out Hits: 10474 In-Out Misses: 184884
Out-In Hits: 1 Out-In Misses: 0
----------------------------------------------------
Total SW Translated Packets: 10559 / Total number of packets software does the translation.
In-Out SW Translated: 10558
Out-In SW Translated: 1
----------------------------------------------------
Total SW Dropped Packets: 184800 / Total number of packet the software dropped Packet.
In-Out SW Dropped: 184800
Out-In SW Dropped: 0
Address alloc. failure drop: 0
Port alloc. failure drop: 0
Dyn. Translation max limit drop: 184800 / Total number of packets dropped due to configured maximum number of dynamic translation entry limit reached. (ip nat translation max-entries <1-1023>)
ICMP max limit drop: 0
Allhost max limit drop: 0
----------------------------------------------------
Total TCP session established: 0
Total TCP session closed: 0
---------------------------------------------------
NAT Inside Interfaces: 1
Ethernet1/1
NAT Outside Interfaces: 1
Vlan100
----------------------------------------------------
Inside source list:
++++++++++++++++++++
Access list: TEST-NAT
RefCount: 82 / Number of current references to this access list.
Pool: TEST Overload
Total addresses: 1 / Number of addresses in the pool available for translation.
Allocated: 1 percentage: 100%
Missed: 0
Forum aux questions
Que se passe-t-il lorsque la TCAM NAT est épuisée ?
Si les ressources TCAM sont épuisées, le journal des erreurs est signalé.
2024 Aug 28 13:26:56 N9K-NAT %ACLQOS-SLOT1-2-ACLQOS_OOTR: Tcam resource exhausted: Feature NAT outside [nat-outside]
2024 Aug 28 13:26:56 N9K-NAT %NAT-2-HW_PROG_FAILED: Hardware programming for NAT failed:Sufficient free entries are not available in TCAM bank(3)
Que se passe-t-il lorsque le nombre maximal d'entrées est atteint ?
Par défaut, le nombre maximal d’entrées de traduction NAT est de 80. Une fois que les entrées de traduction NAT dynamique dépassent la limite maximale, le trafic est envoyé au processeur, ce qui entraîne un journal des erreurs et une suppression.
Ping test failure:
Inside-host# ping 192.168.2.1 source 10.0.0.1 count unlimited interval 1
PING 192.168.2.1 (192.168.2.1): 56 data bytes
Request 0 timed out
N9K-NAT Error log:
2024 Sep 5 15:31:33 N9K-NAT %NETSTACK-2-NAT_MAX_LIMIT: netstack [15386] NAT: Can't create dynamic translations, max limit reached - src:10.0.0.1 dst:192.168.2.1 sport:110 dport:110
Capture file from CPU:
N9K-NAT# ethanalyzer local interface inband limit-captured-frames 0
Capturing on 'ps-inb'
15 2024-09-05 15:32:44.899885527 10.0.0.1 → 192.168.2.1 UDP 60 110 → 110 Len=18
Pourquoi certains paquets NAT sont-ils dirigés vers le processeur ?
Normalement, il y a deux scénarios dans lesquels le trafic doit être routé vers le CPU.
La première se produit lorsque les entrées NAT n'ont pas encore été programmées sur le matériel, à ce moment-là le trafic doit être traité par le CPU.
La programmation matérielle fréquente met le processeur à rude épreuve. Pour réduire la fréquence de programmation des entrées NAT dans le matériel, NAT programme les traductions par lots d'une seconde. La commande nat translation creation-delay retarde l'établissement de la session.
Le second scénario implique des paquets qui sont envoyés au CPU pour traitement pendant la phase initiale d'établissement d'une session TCP et pendant les interactions de fin de celle-ci.
Pourquoi NAT fonctionne sans proxy-arp sur Nexus 9000 ?
Une fonctionnalité appelée nat-alias a été ajoutée à partir de la version 9.2.X . Cette fonctionnalité est activée par défaut et résout les problèmes ARP NAT. À moins que vous ne le désactiviez manuellement, vous n'avez pas besoin d'activer ip proxy-arp ou ip local-proxy-arp.
Les périphériques NAT possèdent des adresses globales internes (IG) et locales externes (OL) et sont responsables de répondre à toutes les requêtes ARP dirigées vers ces adresses. Lorsque le sous-réseau d'adresses IG/OL correspond au sous-réseau d'interface local, NAT installe un alias IP et une entrée ARP. Dans ce cas, le périphérique utilise local-proxy-arp pour répondre aux requêtes ARP.
La fonctionnalité no-alias répond aux requêtes ARP pour toutes les adresses IP traduites d'une plage d'adresses de pool NAT donnée si la plage d'adresses se trouve dans le même sous-réseau que l'interface externe.
Comment fonctionne l'argument add-route sur N9K et pourquoi est-il obligatoire ?
Sur les commutateurs de plate-forme Cisco Nexus 9200 et 9300-EX, -FX, -FX2, -FX3, -FXP, -GX, l'option d'ajout de route est requise pour les politiques internes et externes en raison de la limitation matérielle ASIC. Avec cet argument, le N9K ajoute une route hôte. Le trafic NAT TCP de l'extérieur vers l'intérieur est envoyé au processeur et peut être abandonné sans cet argument.
Avant :
192.168.1.0/24, ubest/mbest: 1/0, attached
*via 192.168.1.1, Vlan100, [0/0], 10:23:08, direct
192.168.1.0/32, ubest/mbest: 1/0, attached
*via 192.168.1.0, Null0, [0/0], 10:23:08, broadcast
192.168.1.1/32, ubest/mbest: 1/0, attached
*via 192.168.1.1, Vlan100, [0/0],10:23:08, local
Après :
192.168.1.2/32, ubest/mbest: 1/0
*via 10.0.0.2, [1/0], 00:02:48, nat >>route created by NAT feature
10.0.0.2/32, ubest/mbest: 1/0
*via 192.168.100.2, [200/0], 06:06:58, bgp-64700, internal, tag 64710
192.168.1.0/24, ubest/mbest: 1/0, attached
*via 192.168.1.1, Vlan100, [0/0], 20:43:08, direct
Pourquoi NAT prend-il en charge un maximum de 100 entrées ICMP ?
Normalement, les flux NAT ICMP expirent après l'expiration des délais d'échantillonnage et de traduction configurés. Cependant, lorsque les flux NAT ICMP présents dans le commutateur deviennent inactifs, ils expirent immédiatement après l'expiration du délai d'échantillonnage configuré.
À partir de la version 7.0(3)I5(2) de Cisco NX-OS, la programmation matérielle est introduite pour ICMP sur les commutateurs de la plate-forme Cisco Nexus 9300. Par conséquent, les entrées ICMP consomment les ressources TCAM dans le matériel. Étant donné que le protocole ICMP se trouve dans le matériel, la limite maximale pour la traduction NAT dans les commutateurs de la gamme de plates-formes Cisco Nexus passe à 1024. Un maximum de 100 entrées ICMP est autorisé pour optimiser l'utilisation des ressources. Elle est fixe et il n'y a pas d'option pour ajuster les entrées ICMP maximales.
Informations connexes
Guide de configuration des interfaces NX-OS de Cisco Nexus série 9000, version 10.4(x)
Livre blanc sur la classification du TCAM avec les ASIC Cisco CloudScale pour les commutateurs de la gamme Nexus 9000
Guide d'évolutivité vérifié du NX-OS de la gamme Cisco Nexus 9000