簡介
本文檔介紹配備運行NX-OS軟體的Cisco Cloud-Scale ASIC的Nexus 9000交換機上的NAT功能。
必要條件
需求
思科建議您先熟悉Cisco Nexus作業系統(NX-OS)和基本Nexus架構,然後再繼續處理本文檔中介紹的資訊。
採用元件
本文中的資訊係根據以下軟體和硬體版本:
- N9K-C93180YC-FX3
- nxos64-cs.10.4.3.F
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
介紹N9K上的NAT支援
技術
NAT TCAM資源
預設情況下,沒有為Nexus 9000上的NAT功能分配TCAM條目。您必須通過減小其他功能的TCAM大小來分配NAT功能的TCAM大小。
NAT操作涉及三種型別的TCAM:
NAT利用TCAM NAT區域進行基於IP地址或埠的資料包匹配。
內部或外部源地址的每個NAT/PAT條目都需要兩個NAT TCAM條目。
預設情況下,啟用ACL原子更新模式時,支援60%的非原子級別數。
對於具有「x」 ace的每個NAT內部策略,需要「x」個條目。
對於每個配置的NAT池,需要一個條目。
啟用原子更新模式時,TCP-NAT TCAM大小必須加倍。
NAT重寫和轉換儲存在「NAT Rewrite Table」中,該表位於NAT TCAM區域之外。「NAT重寫表」的固定大小為Nexus 9300-EX/FX/FX2/9300C的2048條目和Nexus 9300-FX3/GX/GX2A/GX2B/H2R/H1的4096條目。此表專門用於NAT轉換。
內部或外部源地址的每個靜態NAT/PAT條目都需要一個「NAT重寫表」條目。
有關Nexus 9000上的TCAM的詳細資訊,請參閱適用於Nexus 9000系列交換機的Cisco CloudScale ASIC的分類TCAM白皮書。
組態與驗證
拓撲

N9K-NAT配置
hardware access-list tcam region nat 1024
hardware access-list tcam region tcp-nat 100
ip nat translation max-entries 80
附註:預設情況下,動態nat translation max-entries為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
注意:在Cisco Nexus 9200、9300-EX、9300-FX 9300-FX2、9300-FX3、9300-FXP和9300-GX平台交換機上,不支援用於內部策略的介面過載選項,用於外部和內部策略
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
驗證
內部主機Ping
資料包的源IP:10.0.0.1轉換為IP:192.168.1.10
目的地 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
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
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
常見問題
NAT TCAM耗盡後會發生什麼?
如果TCAM資源耗盡,則報告錯誤日誌。
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)
達到Max-entries時會發生什麼?
預設情況下,NAT轉換max-entries為80。一旦動態NAT轉換條目超過最大限制,流量將被傳送到CPU,從而導致錯誤日誌和丟棄。
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
為什麼有些NAT資料包被轉發到CPU?
通常情況下,存在兩種將流量路由到CPU的情況。
當尚未將NAT條目程式設計到硬體時,會首先發生這種情況,此時需要由CPU處理流量。
頻繁的硬體程式設計會給CPU帶來壓力。為了減少硬體中NAT條目的程式設計頻率,NAT將轉換程式分一秒進行程式設計。commandip nat translation creation-delay會延遲會話建立。
第二個場景涉及在建立TCP會話的初始階段和終止互動期間傳送到CPU進行處理的資料包。
為什麼NAT在Nexus 9000上無需代理arp即可工作?
有一個稱為nat-alias的功能是從版本9.2.X新增的。此功能預設啟用,可解決NAT ARP問題。除非您手動停用,否則您不需要啟用ip proxy-arp或ip local-proxy-arp。
NAT裝置擁有內部全域性(IG)和外部本地(OL)地址,負責響應定向到這些地址的任何ARP請求。當IG/OL地址子網與本地介面子網匹配時,NAT會安裝IP別名和ARP條目。在這種情況下,裝置使用本地代理arp響應ARP請求。
如果地址範圍與外部介面位於同一子網中,則無別名功能將響應來自給定NAT池地址範圍的所有轉換IP的ARP請求。
add-route引數在N9K上如何工作以及為什麼它是強制性的?
在Cisco Nexus 9200和9300-EX、-FX、-FX2、-FX3、-FXP、-GX平台交換機上,由於ASIC硬體限制,內部和外部策略均需要add-route選項。使用此引數,N9K將新增主機路由。從外部到內部的TCP NAT流量會被傳送到CPU,並且可以在沒有此引數的情況下丟棄。
之前:
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
之後:
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
為什麼NAT最多支援100個ICMP條目
通常,ICMP NAT在配置的取樣超時和轉換超時過期後超時。但是,當交換機中存在的ICMP NAT流變為空閒時,它們會在配置的取樣超時過期後立即超時。
從Cisco NX-OS版本7.0(3)I5(2)開始,在Cisco Nexus 9300平台交換機上引入了ICMP硬體程式設計。因此,ICMP條目會消耗硬體中的TCAM資源。由於ICMP在硬體中,因此Cisco Nexus平台系列交換機中NAT轉換的最大限制更改為1024。最多允許100個ICMP條目以最佳方式使用資源。已修正,且沒有選項可調整最大ICMP條目。
相關資訊
Cisco Nexus 9000 系列 NX-OS 介面組態指南( 10.4(x) 版)
Classification TCAM with Cisco CloudScale ASICfor Nexus 9000系列交換機白皮書
Cisco Nexus 9000系列NX-OS驗證可擴充性指南