ACL的基本原理
ACL负责管理用户配置的所有规则,并提供报文匹配规则的算法。
ACL的规则管理
每个ACL作为一个规则组,可以包含多个规则。规则通过规则ID(rule-id)来标识,规则ID可以由用户进行配置,也可以由系统自动根据步长生成。一个ACL中所有规则均按照规则ID从小到大排序。
规则ID之间会留下一定的间隔。如果不指定规则ID时,具体间隔大小由“ACL的步长”来设定。例如步长设定为5,ACL规则ID分配是按照5、10、15……来分配的。如果步长值是2,自动生成的规则ID从2开始。用户可以根据规则ID方便地把新规则插入到规则组的某一位置。
ACL的规则匹配
报文到达设备时,设备从报文中提取信息,并将该信息与ACL中的规则进行匹配,只要有一条规则和报文匹配,就停止查找,称为命中规则。查找完所有规则,如果没有符合条件的规则,称为未命中规则。
ACL的规则分为“permit”(允许)规则和“deny”(拒绝)规则。
- 命中“permit”规则的报文
- 命中“deny”规则的报文
- 未命中规则的报文
对于这三类报文的处理方式,各个特性不同,具体请参考各特性手册的注意事项。
ACL的实现方式
目前设备支持的ACL,有以下两种实现方式。
- 软件ACL:针对与本机交互的报文(必须上送CPU处理的报文),由软件实现来过滤报文的ACL,比如FTP、TFTP、Telnet、SNMP、HTTP、路由协议、组播协议中引用的ACL。
- 硬件ACL:针对所有报文(一般是针对转发的数据报文),通过下发ACL资源到硬件来过滤报文的ACL,比如流策略、基于ACL的简化流策略中引用的ACL。
两者主要区别在于:
- 过滤的报文类型不同:软件ACL用来过滤与本机交互的报文(必须上送CPU处理的报文),硬件ACL可以用来过滤所有报文(一般是针对转发的数据报文)。
- 报文过滤方式不同:软件ACL是被上层软件引用来实现报文的过滤,硬件ACL是被下发到硬件来实现报文的过滤。通过软件ACL过滤报文时,会消耗CPU资源,通过硬件ACL过滤报文时,则会占用硬件资源。通过硬件ACL过滤报文的速度更快。