4. ACL资源模型与关键限制
在Broadcom交换芯片中,ACL(Access Control List)并不是“想加多少就加多少”的软件表,而是由片上TCAM(Ternary Content-Addressable Memory)和策略表共同承载的硬件资源。理解ACL资源模型,核心是理解四个量:表项宽度、表项深度、切片方式以及多宽表模式,再叠加共享池与保留区两个分配概念。只有把这几个量对齐,才能判断一条ACL规则到底能不能下发、会占用多少资源、以及是否会挤压QoS策略。
一、TCAM表项宽度:一条规则占多少“位宽”
TCAM的每个表项由若干“宽字”组成,常见粒度为80位、160位、320位等(不同芯片系列略有差异,以下数值为教学示例)。一条ACL规则需要匹配的字段越多、字段越宽,消耗的表项宽度就越大。例如只匹配目的MAC(48位)加VLAN(12位),约60位,可放入一个80位宽字;若同时匹配五元组(源IP 32位、目的IP 32位、协议8位、源端口16位、目的端口16位)再加DSCP 6位,合计约110位,就必须占用两个80位宽字,即160位。这意味着:规则字段的“宽度预算”直接决定它占用几个TCAM宽字,而不是简单按“一条规则=一个表项”计算。
实际规划时,应先把每条ACL规则的匹配字段列出来,按芯片支持的宽字粒度向上取整。例如某芯片支持80位和160位两种宽字,一条需要96位的规则会占用160位,浪费64位;如果把它拆成两条各80位以内的规则,反而可能更省。这是ACL资源优化的第一个关键动作。
二、表项深度与切片方式:TCAM被切成几块
TCAM总深度(Entry Depth)是芯片可容纳的表项总数,例如某型号提供8K、16K或32K条表项。但TCAM通常不是一整块连续内存,而是按切片(Slice)划分,每个切片有独立的深度和宽度能力。切片方式决定了ACL规则如何分布:有的芯片按“宽字”切片,每个切片只能存同一宽度的表项;有的芯片支持“混合宽度”,但需要以牺牲部分深度为代价。
切片带来的关键限制是:规则不能跨切片存放。如果某个切片剩余深度不足,即使其他切片还有空间,该规则也无法下发。因此,规划时不能只看“总剩余深度”,还要看“目标切片剩余深度”。例如总深度16K,分为4个切片各4K,若前3个切片已被QoS策略占满,第4个切片只剩2K,那么一条需要3K深度的ACL组就无法整体放入,必须拆分或调整QoS占用。
三、多宽表模式:宽字与深度的权衡
多宽表模式(Multi-Width Table Mode)是Broadcom芯片常见的资源管理机制。芯片允许把TCAM配置成“少量宽表项”或“大量窄表项”两种倾向。例如同一块TCAM,在160位模式下可存4K条,在80位模式下可存8K条。选择哪种模式,取决于业务中ACL规则的字段宽度分布:如果大部分规则只需匹配MAC+VLAN,80位模式更划算;如果大量规则需要五元组+DSCP,160位模式更合适。
需要注意的是,多宽表模式通常是全局或按组配置的,切换模式会清空或重新划分TCAM,属于规划阶段就要定下来的决策,而不是运行中随意调整。因此,在项目初期就应统计ACL规则的宽度分布,再决定采用哪种模式。
四、共享池与保留区:ACL与QoS的资源博弈
TCAM资源往往不是ACL独占,而是与QoS策略(如分类、标记、限速)共享同一个共享池。共享池的好处是灵活,坏处是“先到先得”:如果QoS策略先占用了大量表项,ACL可用深度就会减少。为了保障关键业务,芯片通常提供保留区(Reserved Region)机制,即为ACL或QoS预留最小资源。例如配置ACL保留2K条、QoS保留4K条,剩余部分作为共享池动态分配。
这里存在明确的相互制约关系:ACL保留区越大,QoS可用资源越少;反之亦然。规划时应先确定关键ACL规则的最小集合(如安全隔离、管理面保护),为其设置保留区;QoS的限速和优先级策略则尽量使用共享池,避免过度预留导致资源僵化。
五、规划示例:从规则到资源占用
假设某Broadcom芯片TCAM总深度16K,分为4个切片,每切片4K,支持80位和160位两种宽字。现有一组ACL规则:
- 规则A:匹配源MAC+VLAN,约60位 → 占用1个80位宽字,深度1条。
- 规则B:匹配五元组+DSCP,约110位 → 占用1个160位宽字,深度1条。
- 规则C:匹配源IP+目的IP+协议,约72位 → 占用1个80位宽字,深度1条。
若采用80位模式,规则B需要拆成两条80位规则(例如先匹配IP+协议,再匹配端口),深度变为2条,但总深度可容纳更多规则。若采用160位模式,规则B一条即可,但每条规则占用深度相同,总深度可容纳的规则数减半。规划时应统计规则中“宽字段”的比例:宽字段规则占比超过40%时,160位模式更划算;低于30%时,80位模式更优。
再考虑保留区:若为ACL保留2K条,为QoS保留4K条,则共享池剩余10K条。此时若ACL实际需要3K条,超出保留区的1K条将从共享池分配;若QoS同时需要6K条,超出保留区的2K条也从共享池分配,共享池剩余7K条。只要共享池不为负,配置即可下发。一旦共享池耗尽,后续规则将无法加入,即使总深度还有空闲切片,也会因为切片归属限制而失败。
六、ACL与QoS的相互制约
ACL与QoS的制约关系体现在三个层面:深度竞争、宽度竞争和优先级竞争。深度竞争即共享池表项数量;宽度竞争指宽字资源被一方占用后,另一方无法使用;优先级竞争则体现在芯片内部对ACL和QoS的调度顺序——通常ACL先匹配,QoS后处理,但若ACL规则过多导致TCAM查表延迟增加,QoS的限速精度也会受影响。
因此,在资源规划时,建议把ACL规则分为“必须保留”和“可共享”两类:安全隔离、管理面保护、非法流量丢弃等规则放入保留区;普通业务分类、统计类规则放入共享池。QoS侧同理,核心业务的限速和优先级策略放入保留区,普通流分类放入共享池。这样既保证关键功能,又保留弹性。
最后需要强调:TCAM资源是硬件资源,一旦规划失误,后期调整往往需要重启或重新加载配置。因此,在项目初期就应完成规则宽度统计、切片深度核算和保留区分配,而不是等到配置下发失败后再回头排查。