簡介
本文檔介紹如何根據Nexus 7000系列交換機上啟用的功能集意外過度利用TCAM。
問題描述
啟用原子更新後,在多功能(例如RACL)的情況下,NetFlow應用於不同的介面,雖然未達到50%的限制,但可能會導致TCAM過度使用錯誤。
範例:無法將多個功能應用到後續的子介面,儘管使用率為29.57,但上限為50%(因為啟用了原子更新),並且引發了以下錯誤。
錯誤:模組1返回狀態:TCAM將被過度使用,請啟用銀行連結和/或關閉原子更新。如果在其他模組上啟用了銀行連結,並且這是新的線路卡插入,請在重新載入此模組之前啟用銀行連結。
此外,重新載入後,所有介面都會丟失配置,因此被分配給VDC 0。
背景
在Nexus 7000上預設啟用的原子更新僅允許利用整個TCAM的50%。保留其他50%以適應ACL更改,以便提供ACL的無中斷更新。有關這方面的更多資訊,請參閱一節中提供的連結:推薦閱讀。
必要條件
建議瞭解以下主題:
原子更新
N7000上的TCAM
採用元件
本文檔中的資訊基於對模組上的N7718機箱執行的實驗室測試:運行在8.3(2)版上的N77-F312CK-26
文中使用到的所有裝置都是從預設配置開始的,顯示的功能是RACL、NetFlow。
觀察
在主介面和子介面上配置輸出RACL,而僅在主介面上啟用Netflow
初始配置:
Interface Ethernet 11/2: Layer-3; RACL
Interface Ethernet 11/2.300-302: Layer-3; RACL
僅應用RACL的TCAM利用率為:
N7718(config-if)# show system internal access-list resource utilization module 11 | in "Tcam 1, Bank 0" across all instances:
Tcam 1, Bank 0 1211 2885 29.57
Tcam 1, Bank 0 1211 2885 29.57
Tcam 1, Bank 0 1211 2885 29.57
附註:本文檔中輸出RACL的TCAM空間利用率假定為29.57%
一次,NetFlow僅應用於主介面,介面利用率翻倍,儘管在這種情況下NetFlow配置僅佔用1%的空間。
Interface Ethernet 11/2: Layer-3; RACL; NetFlow
Interface Ethernet 11/2.300-302: Layer-3; RACL
主介面配置了NetFlow,而子介面沒有NetFlow(要禁用原子更新以觀察此行為)
N7718(config-if)# show system internal access-list resource utilization module 11 | in "Tcam 1, Bank 0"
Tcam 1, Bank 0 2394 1702 58.45
Tcam 1, Bank 0 2394 1702 58.45
Tcam 1, Bank 0 2394 1702 58.45
附註:如果仍然啟用原子更新,則此加倍行為是不可能的,因為原子更新的限制只有50%,並且會出現以下錯誤:
錯誤:模組1返回狀態:TCAM將被過度使用,請啟用銀行連結和/或關閉原子更新。如果在其他模組上啟用了銀行連結,並且這是新的線路卡插入,請在重新載入此模組之前啟用銀行連結。
說明:
在這種情況下,此處存在兩個不同的策略集。一個目的地單獨具有RACL,另一個目的地具有RACL +NF。因此,為相同功能分配了兩組TCAM條目,導致倍增行為(我們視為實際消耗量)應該只有29.57行為。
裝置通過為兩個介面生成兩個單獨的標籤來實現這一點,如下所示:
module-11# show system internal access-list interface e11/2 out statistics
INSTANCE 0x0
---------------
Tcam 1 resource usage:
----------------------
Label_b = 0x801 >>> LABEL is 0x801
module-11# show system internal access-list interface e11/2.300 out statistics
INSTANCE 0x0
---------------
Tcam 1 resource usage:
----------------------
Label_b = 0x802 >>> NEW LABEL 0x802 IS GENERATED
在主介面和子介面上配置RACL和Netflow時
案例1中已存在配置:
Interface Ethernet 11/2: Layer-3; RACL; NetFlow
Interface Ethernet 11/2.300-302: Layer-3; RACL
現在,也將NetFlow應用到其餘的子介面:
Interface Ethernet 11/2: Layer-3; RACL; NetFlow
Interface Ethernet 11/2.300-302: Layer-3; RACL; NetFlow
由於現在所有目標都配置了RACL + Netflow,因此相同的標籤被共用b/w目標(所有介面都引用一組TCAM條目)。
N7718(config-if)# show system internal access-list resource utilization module 11 | in "Tcam 1, Bank 0"
Tcam 1, Bank 0 1211 2885 29.57
Tcam 1, Bank 0 1211 2885 29.57
Tcam 1, Bank 0 1211 2885 29.57
module-11# show system internal access-list interface ethernet11/2 out statistics |in Label_b p 5 n 4
INSTANCE 0x0
Tcam 1 resource usage:
----------------------
Label_b = 0x802 >>> LABEL is 0x802
module-11# show system internal access-list interface ethernet11/2.300 out statistics |in Label_b p 5 n 4
INSTANCE 0x0
Tcam 1 resource usage:
----------------------
Label_b = 0x802 >>> SAME LABEL IS MAINTAINED
附註:此行為也擴展到物理介面、子介面。只有在所有相關目標具有相同的配置集時,TCAM利用率不會增加一倍。
請注意,只有在已具有RACL的所有介面上應用Netflow之後,TCAM才會降至原始的29.57%
1.在介面「1」上應用RACL:29.57%
2.在後續介面上應用RACL:29.57%
3.在介面「1」上的RACL應用之後應用NF:58.45%
4.在後續介面上應用NF:58.45%
5.在最後一個介面上應用NF:29.57%
解析
1.禁用原子更新。
<或>
2.減小ACL大小以使限制值保持在<25%。
摘要
使用原子更新:
一旦在第一個介面上應用Netflow,就會嘗試建立單獨的TCAM例項,因為第一個介面現在已配置了ACL(NF),而第二個介面只配置了RACL。
但是,由於啟用了原子更新,單獨例項建立會失敗,因為這樣會將利用率提高到50以上。因此,會引發TCAM過度使用錯誤。
沒有原子更新:
1.在所有介面上應用ACL時:由於沒有其它功能,該指數仍保持在29。
2.將NetFlow應用於第一個介面:Switch假定這是功能單獨配置/功能組合(維護單獨的內部標籤),因此會在同一銀行上建立單獨的例項。
3.將NetFlow應用於為其配置了ACL的所有其他介面後,功能的配置/組合將相同(兩個介面的標籤現在相同),因此會發生重新洗牌
4.兩個介面的TCAM現已共用,利用率降回29.57%。
這是當不同介面上使用特徵組合時的最佳化方法。
相關缺陷
CSCvs50014 子介面上的ACL和Netflow佔據兩個TCAM條目
相關文章
https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus7000/sw/security/config/cisco_nexus7000_security_config_guide_8x/configuring_ip_acls.html
https://www.cisco.com/c/en/us/td/docs/switches/datacenter/sw/6_x/nx-os/security/configuration/guide/b_Cisco_Nexus_7000_NX-OS_Security_Configuration_Guide__Release_6-x/b_Cisco_Nexus_7000_NX-OS_Security_Configuration_Guide__Release_6-x_chapter_01110.html#con_1458580