简介
本文档说明TCAM如何意外过度使用,具体取决于Nexus 7000系列交换机上启用的功能集。
问题说明
启用原子更新后,在RACL等多个功能的情况下,NetFlow会应用于不同的接口,这可能导致TCAM过度使用错误,尽管尚未达到50%限制。
示例:无法将多个功能应用到后续子接口,尽管利用率为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.禁用原子更新。
<OR>
2.减小ACL大小,使限制保持在<25%。
摘要
使用原子更新:
一旦在第一个接口上应用Netflow,将尝试创建单独的TCAM实例,因为第一个接口现在同时配置了ACL和NF,但第二个接口只配置了RACL。
但是,由于启用了原子更新,单独创建实例失败,因为这样会将利用率提高到>50。因此,会引发TCAM过度使用错误。
没有原子更新:
1.在所有接口上应用ACL时:由于没有其他功能,该数字仍为29。
2.将NetFlow应用到第一个接口:交换机假定这是功能的单独配置/功能的组合(维护单独的内部标签),因此,在同一组上创建单独的实例。
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