ACL的基本原理
ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。设备支持软件ACL和硬件ACL两种实现方式。
ACL的组成
一条ACL的结构组成,如图1所示。
图1 ACL的结构组成
•ACL名称:通过名称来标识ACL,就像用域名代替IP地址一样,更加方便记忆。这种ACL,称为命名型ACL。
命名型ACL一旦创建成功,便不允许用户再修改其名称。
仅基本ACL与基本ACL6,以及高级ACL与高级ACL6,可以使用相同的ACL名称;其他类型ACL之间,不能使用相同的ACL名称。
命名型ACL实际上是“名字+数字”的形式,可以在定义命名型ACL时同时指定ACL编号。如果不指定编号,则由系统自动分配,设备为其分配的编号是该类型ACL可用编号中取值范围内的最大值。
•ACL编号:用于标识ACL,也可以单独使用ACL编号,表明该ACL是数字型。
不同的ACL类型使用不同的ACL编号取值标识。
•规则:即描述报文匹配条件的判断语句。
◾规则编号:用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配。
ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序。系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。
◾动作:报文处理动作,包括permit/deny两种,表示允许/拒绝。
◾匹配项:ACL定义了极其丰富的匹配项。除了图1中的源地址和生效时间段,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型),三层报文信息(如目的IP地址、协议类型),以及四层报文信息(如TCP/UDP端口号)等。关于每种匹配项的详细介绍,请参见交换机支持的ACL及常用匹配项。
ACL的实现方式
目前设备支持的ACL,有以下两种实现方式。
•软件ACL:针对与本机交互的报文(必须上送CPU处理的报文),由软件实现来过滤报文的ACL,比如FTP、TFTP、Telnet、SNMP、HTTP、路由协议、组播协议中引用的ACL。
•硬件ACL:针对所有报文,通过下发ACL资源到硬件来过滤报文的ACL,比如流策略、基于ACL的简化流策略、用户组以及为接口收到的报文添加外层Tag功能中引用的ACL。
两者主要区别在于:
•过滤的报文类型不同:软件ACL用来过滤与本机交互的报文,硬件ACL可以用来过滤所有报文。
•报文过滤方式不同:软件ACL是被上层软件引用来实现报文的过滤,硬件ACL是被下发到硬件来实现报文的过滤。通过软件ACL过滤报文时,会消耗CPU资源,通过硬件ACL过滤报文时,则会占用硬件资源。通过硬件ACL过滤报文的速度更快。
•对不匹配ACL的报文的处理动作不同:当使用软件ACL时,如果报文未匹配上ACL中的规则,设备对该报文采取的动作为deny,即拒绝报文通过;当使用硬件ACL时,如果报文未匹配上ACL中的规则,设备对该报文采取的动作为permit,即允许报文通过。
配置实例:在ACL3001中增加一条规则,匹配从10.9.0.0网段的主机向10.38.160.0网段的主机发送的所有IP报文。
system-view
[HUAWEI] acl 3001
[HUAWEI-acl-adv-3001] rule permit ip source 10.9.0.0 0.0.255.255 destination 10.38.160.0 0.0.0.255