本发明涉及数据通信领域,特别涉及一种基于访问控制列表ACL的流量统计方法及装置。
背景技术:
ACL访问控制列表,是一种流分类工具,高端路由器使用ACL可以实现端口流量的分类和控制、路由策略、策略路由等功能。ACL可以依据报文中的字段对报文进行筛选过滤,最为常见的筛选字段是数据报文中的五元组,即源IP地址、目的IP地址、协议号、源端口号和目的端口号。
一张ACL列表可以有多条规则,每条规则都描述了一定的匹配条件。对于给定的报文,从第一条规则开始判读是否匹配,一旦匹配中规则,就执行规则内设定的动作(permit或deny)并返回。
访问控制列表统计(ACL log),是用来记录端口转发报文在应用ACL规则后,若报文匹配中规则,且规则log统计开关打开时,匹配中规则的入向、出向报文个数;也就是说需要满足两个条件才会进行统计,一是端口绑定了ACL,二是ACL中需要进行统计的规则使能了log统计。
然而,传统的ACL统计的方法存在如下问题:
1、ACL统计是基于规则配置的,用户需要逐条打开统计开关以及逐条关闭统计开关;打开统计的规则会进行统计,否则不会进行统计;若存在多条规则时,配置复杂。
2、当ACL规则更新后,新ACL中的每条规则需要和原有ACL的所有规则进行比较,以判断集合的变化,增加的规则需要分配新的计数器,删除的规则需要回收计数器,未发生变化的规则其对应的计数器不变。比如,若ACL有10K条规则,则需要比较10K*10K次,非常耗时。
3、当ACL规则更新后,ACL统计不会相应更新,只能通过手动的方式 关闭ACL log。
4、无法基于动作(permit或deny)区分是否进行ACL统计,只能逐个配置。
技术实现要素:
本发明提供了一种基于访问控制列表ACL的流量统计方法及装置,其目的是为了解决传统的ACL统计的方法复杂度高,耗时,且无法基于动作进行ACL统计的问题。
为了达到上述目的,本发明提供了一种基于访问控制列表ACL的流量统计方法,包括:
将第一ACL绑定至一设备的第一端口;
获取所述第一端口的ACL统计配置信息,所述ACL统计配置信息包括有是否使能ACL统计功能、以及统计的方向和动作的信息;
在所述第一端口已使能ACL统计功能时,根据统计的动作和方向,针对所述第一ACL中的规则,进行匹配报文的流量统计。
进一步地,所述将第一ACL绑定至一设备的第一端口的步骤之后,所述方法还包括:
更新所述第一ACL的端口绑定信息,以及更新所述第一端口的ACL绑定信息,其中,所述第一ACL的端口绑定信息中记录有所述第一ACL绑定到的端口的信息,所述第一端口的ACL绑定信息记录有所述第一端口上绑定的ACL的信息。
进一步地,所述方法还包括:
接收第一端口的ACL统计功能的使能命令以及针对第一端口的ACL统计配置的第一配置信息;
获取所述第一端口的ACL绑定信息,判断所述第一端口是否已绑定有ACL;
在所述第一端口未绑定ACL时,根据所述第一配置信息,使能所述第一端口的ACL统计功能;
在所述第一端口已绑定ACL时,判断所述第一端口是否已使能ACL统计功能,并在所述第一端口已使能ACL统计功能时,根据所述第一配置信息, 更新所述第一端口的ACL统计配置,并在更新完成后,根据所述第一配置信息中的统计的动作和方向,执行已绑定ACL的流量统计。
进一步地,在所述第一端口已绑定ACL时,且所述第一端口未使能ACL统计功能时,所述方法还包括:
根据所述第一配置信息中的统计的动作和方向,执行已绑定ACL的流量统计。
进一步地,所述根据所述第一配置信息,更新所述第一端口的ACL统计配置,具体包括:
比较已使能的ACL统计功能和所述第一配置信息中的统计的动作;
若所述已使能的ACL统计功能和所述第一配置信息中的统计的动作相同,则不执行任何动作;
若所述已使能的ACL统计功能中的动作为permit且所述第一配置信息中统计的动作为all,则保留所述第一端口已有的针对permit动作的计数器,并新增一针对deny动作的计数器;
若所述已使能的ACL统计功能中的动作为deny且所述第一配置信息中统计的动作为all,则保留所述第一端口已有的针对deny动作的计数器,并新增一针对permit动作的计数器;
若所述已使能的ACL统计功能中的动作为permit且所述第一配置信息中统计的动作为deny,则删除所述第一端口已有的针对permit动作的计数器,并新增一针对deny动作的计数器;
若所述已使能的ACL统计功能中的动作为deny且所述第一配置信息中统计的动作为permit,则删除所述第一端口已有的针对deny动作的计数器,并新增一针对permit动作的计数器;
若所述已使能的ACL统计功能中的动作为all且所述第一配置信息中统计的动作为permit,则保留所述第一端口已有的针对permit动作的计数器,删除所述第一端口已有的针对deny动作的计数器;
若所述已使能的ACL统计功能中的动作为all且所述第一配置信息中统计的动作为deny,则保留所述第一端口已有的针对动作deny的计数器,删除所述第一端口已有的针对permit动作的计数器。
进一步地,所述方法还包括:
接收对第一ACL的更新命令;
根据所述第一ACL的端口绑定信息,确定所述第一ACL绑定的端口;
针对所述第一ACL绑定的每个端口,删除该端口上所述第一ACL的流量统计缓存,并将更新后的第一ACL下发至该端口,以及针对所述更新后的第一ACL重建流量统计缓存。
进一步地,所述方法还包括:
接收第一端口的ACL统计功能的关闭命令;
获取所述第一端口的ACL绑定信息,判断所述第一端口是否已绑定有ACL;
在所述第一端口未绑定ACL时,去使能所述第一端口的ACL统计功能;
在所述端口已绑定ACL时,去使能所述第一端口的ACL统计功能并删除该端口上绑定的所述ACL以及所述ACL的流量统计缓存。
为达上述目的,本发明还提供了一种基于访问控制列表ACL的流量统计装置,该装置包括:
绑定模块,用于将第一ACL绑定至一设备的第一端口;
第一获取模块,获取所述第一端口的ACL统计配置信息,所述ACL统计配置信息包括有是否使能ACL统计功能、以及统计的方向和动作的信息;
统计模块,用于在所述第一端口已使能ACL统计功能时,根据统计的动作和方向,针对所述第一ACL中的规则,进行匹配报文的流量统计。
进一步地,所述装置还包括,第一更新模块,用于在所述绑定模块将第一ACL绑定至一设备的第一端口的之后,
更新所述第一ACL的端口绑定信息,以及更新所述第一端口的ACL绑定信息,其中,所述第一ACL的端口绑定信息中记录有所述第一ACL绑定到的端口的信息,所述第一端口的ACL绑定信息记录有所述第一端口上绑定的ACL的信息。
进一步地,所述装置还包括:
第一接收模块,用于接收第一端口的ACL统计功能的使能命令以及针对第一端口的ACL统计配置的第一配置信息;
第二获取模块,用于获取所述第一端口的ACL绑定信息,判断所述第一端口是否已绑定有ACL;
第一使能模块,用于在所述第一端口未绑定ACL时,根据所述第一配置信息,使能所述第一端口的ACL统计功能;
第一判断模块,用于在所述第一端口已绑定ACL时,判断所述第一端口是否已使能ACL统计功能,并在所述第一端口已使能ACL统计功能时,根据所述第一配置信息,更新所述第一端口的ACL统计配置,并在更新完成后,根据所述第一配置信息中的统计的动作和方向,执行已绑定ACL的流量统计。
进一步地,所述第一判断模块包括第一执行子模块,
用于在所述第一端口已绑定ACL时,且所述第一端口未使能ACL统计功能时,根据所述第一配置信息中的统计的动作和方向,执行已绑定ACL的流量统计。
进一步地,所述装置还包括第二更新模块,用于根据所述第一配置信息,更新第一端口的ACL统计配置,并比较已使能的ACL统计功能和所述第一配置信息中的统计的动作;
所述第二更新模块具体包括:
第一子模块,用于在所述已使能的ACL统计功能和第一配置信息中的统计的动作相同时,不执行任何动作;
第二子模块,用于在所述已使能的ACL统计功能中的动作为permit且所述第一配置信息中统计的动作为all时,保留所述第一端口已有的针对permit动作的计数器,并新增一针对deny动作的计数器;
第三子模块,用于在所述已使能的ACL统计功能中的动作为deny且所述第一配置信息中统计的动作为all,则保留所述第一端口已有的针对deny动作的计数器,并新增一针对permit动作的计数器;
第四子模块,用于在所述已使能的ACL统计功能中的动作为permit且所述第一配置信息中统计的动作为deny时,删除所述第一端口已有的针对permit动作的计数器,并新增一针对deny动作的计数器;
第五子模块,用于在所述已使能的ACL统计功能中的动作为deny且所述第一配置信息中统计的动作为permit时,删除所述第一端口已有的针对deny 动作的计数器,并新增一针对permit动作的计数器;
第六子模块,用于在所述已使能的ACL统计功能中的动作为all且所述第一配置信息中统计的动作为permit时,保留所述第一端口已有的针对permit动作的计数器,删除所述第一端口已有的针对deny动作的计数器;
第七子模块,用于在若所述已使能的ACL统计功能中的动作为all且所述第一配置信息中统计的动作为deny时,保留所述第一端口已有的针对动作deny的计数器,删除所述第一端口已有的针对permit动作的计数器。
进一步地,所述装置还包括:
第二接收模块,用于接收对第一ACL的更新命令;
第一查找模块,用于根据所述第一ACL的端口绑定信息,确定所述第一ACL绑定的端口;
第三更新模块,用于针对所述第一ACL绑定的每个端口,删除该端口上配置的所述第一ACL以及所述第一ACL的流量统计缓存,并将更新后的第一ACL下发至该端口,以及针对所述更新后的第一ACL重建流量统计缓存。
进一步地,所述装置还包括:
第三接收模块,用于接收第一ACL统计的关闭命令;
第二判断模块,用于获取所述第一端口的ACL绑定信息,判断所述第一端口是否已绑定有ACL;
第一关闭模块,用于在所述端口未绑定ACL时,去使能所述第一端口的ACL统计功能;
第二关闭模块,用于在所述端口已绑定ACL时,去使能所述第一端口的ACL统计功能并删除该端口上所述ACL的流量统计缓存。
本发明的上述方案至少包括以下有益效果:
本发明提供的基于访问控制列表ACL的流量统计方法及装置,支持开启不同动作的ACL统计,并动态更新ACL统计配置,无需手动配置更新,且在ACL规则更新后,会删除原有ACL的流量统计缓存,重建更新后ACL的流量统计缓存,无需将原有ACL与更新后ACL进行比较,避免了ACL统计配置的繁琐性和耗时性,极大地缩短了ACL统计的比较时间,同时降低了ACL统计的复杂程度。
附图说明
图1为本发明实施例所述的基于访问控制列表ACL的流量统计方法的步骤流程图;
图2为本发明实施例所述的基于访问控制列表ACL的流量统计方法的ACL统计步骤流程图;
图3为本发明实施例所述的基于访问控制列表ACL的流量统计方法的更新ACL统计动作的步骤流程图;
图4为本发明实施例所述的基于访问控制列表ACL的流量统计方法的更新ACL规则的流量统计的步骤流程图;
图5为本发明实施例所述的基于访问控制列表ACL的流量统计方法的关闭ACL统计的步骤流程图;
图6为本发明实施例所述的基于访问控制列表ACL的流量统计的装置的结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
为了达到上述目的,本发明的实施例提供了一种基于访问控制列表ACL的流量统计方法;
参见图1,该方法包括:
步骤11,将第一ACL绑定至一设备的第一端口;
步骤12,获取所述第一端口的ACL统计配置信息,所述ACL统计配置信息包括有是否使能ACL统计功能、以及统计的方向和动作的信息;本发明提供的基于访问控制列表ACL的流量统计方法支持开启不同动作的ACL统计,可以是permit、deny或all。
步骤13,在所述第一端口已使能ACL统计功能时,根据统计的动作和方向,针对所述第一ACL中的规则,进行匹配报文的流量统计。
进一步地,步骤11之后,所述方法还包括:
更新所述第一ACL的端口绑定信息,以及更新所述第一端口的ACL绑定信息,其中,所述第一ACL的端口绑定信息中记录有所述第一ACL绑定到的端口的信息,即第一ACL绑定到了哪些端口;所述第一端口的ACL绑定信息记录有所述第一端口上绑定的ACL的信息,即所述第一端口上绑定了哪些ACL规则。
参见图2,所述方法还包括:
步骤21,接收第一端口的ACL统计功能的使能命令以及针对第一端口的ACL统计配置的第一配置信息;
步骤22,获取所述第一端口的ACL绑定信息,判断所述第一端口是否已绑定有ACL;
步骤23,在所述第一端口未绑定ACL时,根据所述第一配置信息,使能所述第一端口的ACL统计功能;
步骤24,在所述第一端口已绑定ACL时,判断所述第一端口是否已使能ACL统计功能;
步骤25,在所述第一端口已使能ACL统计功能时,根据所述第一配置信息,更新所述第一端口的ACL统计配置;
步骤26,在所述第一端口的ACL统计配置更新完成后,根据所述第一配置信息中的统计的动作和方向,执行已绑定ACL的流量统计。
步骤27,在所述第一端口已绑定ACL时,且所述第一端口未使能ACL统计功能时,根据所述第一配置信息中的统计的动作和方向,执行已绑定ACL的流量统计。
本发明提供的基于访问控制列表ACL的流量统计方法,为动态更新ACL统计配置,无需手动更新,避免了手动更新ACL统计配置的繁琐性和耗时性。
进一步地,所述步骤26或步骤27中所述根据所述第一配置信息,更新所述第一端口的ACL统计配置的步骤,具体包括:
步骤31,比较已使能的ACL统计功能和所述第一配置信息中的统计的动作;
步骤32,若所述已使能的ACL统计功能和所述第一配置信息中的统计的动作相同,则不执行任何动作;
步骤322,若所述已使能的ACL统计功能中的动作为permit且所述第一配置信息中统计的动作为all,则执行步骤3221:保留所述第一端口已有的针对permit动作的计数器,并新增一针对deny动作的计数器;
步骤323,若所述已使能的ACL统计功能中的动作为deny且所述第一配置信息中统计的动作为all,则执行步骤3231:保留所述第一端口已有的针对deny动作的计数器,并新增一针对permit动作的计数器;
步骤324,若所述已使能的ACL统计功能中的动作为permit且所述第一配置信息中统计的动作为deny,则执行步骤3241:则删除所述第一端口已有的针对permit动作的计数器,并新增一针对deny动作的计数器;
步骤325,若所述已使能的ACL统计功能中的动作为deny且所述第一配置信息中统计的动作为permit,则执行步骤3251:删除所述第一端口已有的针对deny动作的计数器,并新增一针对permit动作的计数器;
步骤326,若所述已使能的ACL统计功能中的动作为all且所述第一配置信息中统计的动作为permit,则执行步骤3261:保留所述第一端口已有的针对permit动作的计数器,删除所述第一端口已有的针对deny动作的计数器;
步骤327,若所述已使能的ACL统计功能中的动作为all且所述第一配置信息中统计的动作为deny,则执行步骤3271:保留所述第一端口已有的针对动作deny的计数器,删除所述第一端口已有的针对permit动作的计数器。
本发明提供的基于访问控制列表ACL的流量统计方法,当ACL规则更新后,ACL统计功能会动态更新,无需手动操作。
参见图4,所述方法还包括:
步骤41,接收对第一ACL的更新命令;
步骤42,根据所述第一ACL的端口绑定信息,确定所述第一ACL绑定的端口;
步骤43,针对所述第一ACL绑定的每个端口,删除该端口上配置的所述第一ACL以及所述第一ACL的流量统计缓存,并将更新后的第一ACL下发至该端口,以及针对所述更新后的第一ACL重建流量统计缓存。
本发明提供的基于访问控制列表ACL的流量统计方法,在ACL规则更新后,会删除原有ACL的流量统计缓存,重建更新后ACL的流量统计缓存,无 需将原有ACL与更新后ACL进行比较,极大地节省了时间。
参见图5,所述方法还包括:
步骤51,接收第一端口的ACL统计功能的关闭命令;
步骤52,获取所述第一端口的ACL绑定信息,判断所述第一端口是否已绑定有ACL:
步骤53,在所述端口未绑定ACL时,去使能所述第一端口的ACL统计功能;
步骤54,在所述端口已绑定ACL时,去使能所述第一端口的ACL统计功能并删除该端口上所述ACL的流量统计缓存。
参见图6,本发明还提供了一种基于访问控制列表ACL的流量统计装置,该装置包括:
绑定模块101,用于将第一ACL绑定至一设备的第一端口;
第一获取模块102,用于获取所述第一端口的ACL统计配置信息,所述ACL统计配置信息包括有是否使能ACL统计功能、以及统计的方向和动作的信息;
统计模块103,用于在所述第一端口已使能ACL统计功能时,根据统计的动作和方向,针对所述第一ACL中的规则,进行匹配报文的流量统计。
进一步地,所述装置还包括,第一更新模块104,用于在所述绑定模块101将第一ACL绑定至一设备的第一端口之后;
更新所述第一ACL的端口绑定信息,以及更新所述第一端口的ACL绑定信息,其中,所述第一ACL的端口绑定信息中记录有所述第一ACL绑定到的端口的信息,所述第一端口的ACL绑定信息记录有所述第一端口上绑定的ACL的信息。
进一步地,所述装置还包括:
第一接收模块105,用于接收第一端口的ACL统计功能的使能命令以及针对第一端口的ACL统计配置的第一配置信息;
第二获取模块106,用于获取所述第一端口的ACL绑定信息,判断所述第一端口是否已绑定有ACL;
第一使能模块107,用于在所述第一端口未绑定ACL时,根据所述第一 配置信息,使能所述第一端口的ACL统计功能;
第一判断模块108,用于在所述第一端口已绑定ACL时,判断所述第一端口是否已使能ACL统计功能,并在所述第一端口已使能ACL统计功能时,根据所述第一配置信息,更新所述第一端口的ACL统计配置,并在更新完成后,根据所述第一配置信息中的统计的动作和方向,执行已绑定ACL的流量统计。
进一步地,所述第一判断模块108包括第一执行子模块1081,
用于在所述第一端口已绑定ACL时,且所述第一端口未使能ACL统计功能时,根据所述第一配置信息中的统计的动作和方向,执行已绑定ACL的流量统计。
进一步地,所述装置还包括第二更新模块109,用于根据所述第一配置信息,更新第一端口的ACL统计配置,并比较已使能的ACL统计功能和所述第一配置信息中的统计的动作;
所述第二更新模块109具体包括:
第一子模块1091,用于在所述已使能的ACL统计功能和第一配置信息中的统计的动作相同时,不执行任何动作;
第二子模块1092,用于在所述已使能的ACL统计功能中的动作为permit且所述第一配置信息中统计的动作为all时,保留所述第一端口已有的针对permit动作的计数器,并新增一针对deny动作的计数器;
第三子模块1093,用于在所述已使能的ACL统计功能中的动作为deny且所述第一配置信息中统计的动作为all,则保留所述第一端口已有的针对deny动作的计数器,并新增一针对permit动作的计数器;
第四子模块1094,用于在所述已使能的ACL统计功能中的动作为permit且所述第一配置信息中统计的动作为deny时,删除所述第一端口已有的针对permit动作的计数器,并新增一针对deny动作的计数器;
第五子模块1095,用于在所述已使能的ACL统计功能中的动作为deny且所述第一配置信息中统计的动作为permit时,删除所述第一端口已有的针对deny动作的计数器,并新增一针对permit动作的计数器;
第六子模块1096,用于在所述已使能的ACL统计功能中的动作为all且 所述第一配置信息中统计的动作为permit时,保留所述第一端口已有的针对permit动作的计数器,删除所述第一端口已有的针对deny动作的计数器;
第七子模块1097,用于在若所述已使能的ACL统计功能中的动作为all且所述第一配置信息中统计的动作为deny时,保留所述第一端口已有的针对动作deny的计数器,删除所述第一端口已有的针对permit动作的计数器。
进一步地,所述装置还包括:
第二接收模块110,用于接收对第一ACL的更新命令;
第一查找模块111,用于根据所述第一ACL的端口绑定信息,确定所述第一ACL绑定的端口;
第三更新模块112,用于针对所述第一ACL绑定的每个端口,删除该端口上配置的所述第一ACL以及所述第一ACL的流量统计缓存,并将更新后的第一ACL下发至该端口,以及针对所述更新后的第一ACL重建流量统计缓存。
进一步地,所述装置还包括:
第三接收模块113,用于接收第一ACL统计的关闭命令;
第二判断模块114,用于获取所述第一端口的ACL绑定信息,判断所述第一端口是否已绑定有ACL;
第一关闭模块115,用于在所述端口未绑定ACL时,去使能所述第一端口的ACL统计功能;
第二关闭模块116,用于在所述端口已绑定ACL时,去使能所述第一端口的ACL统计功能并删除该端口上所述ACL的流量统计缓存。
需要说明的是,本发明实施例提供的基于访问控制列表ACL的流量统计装置是应用上述方法的装置,即上述方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。