八月瓜首页 > 专利查询 > H04电通信技术 >正文

一种网关设备策略的分析方法、装置及可读存储介质

基本信息

  • 申请号 CN202010601934.6 
  • 公开号 CN111490906B 
  • 申请日 2020/06/29 
  • 公开日 2020/09/25 
  • 申请人 武汉思普崚技术有限公司  
  • 优先权日期  
  • 发明人 刘小伟  
  • 主分类号 H04L12/24 
  • 申请人地址 430070 湖北省武汉市东湖新技术开发区光谷大道308号光谷动力节能环保科技企业孵化器(加速器)一期11栋3层01室 
  • 分类号 H04L12/24;H04L12/66;H04L12/741;G06F16/901;G06F9/50 
  • 专利代理机构 武汉智嘉联合知识产权代理事务所(普通合伙) 42231 
  • 当前专利状态 发明专利授权公告 
  • 代理人 黄君军 
  • 有效性 有效专利 
  • 法律状态
  •  

摘要

本发明公开一种网关设备策略的分析方法、装置及可读存储介质,属于网关设备策略技术领域,解决了现有技术中网关设备策略分析效率低下的技术问题。
一种网关设备策略的分析方法,包括以下步骤:建立策略对象对应的链表,将策略对象的信息存储到策略对象对应的链表中;轮询所述链表中的节点,将自平衡二叉查找树节点插入至自平衡二叉查找树中;将策略对象的ID加入到所述自平衡二叉查找树节点下的链表中,将自平衡二叉查找树中每个节点与对应策略对象进行关联,在bit位内存区域中给策略对象的指针分配内存;根据策略对象的指针在bit位内存区域中的内存,确定各策略对象间的冲突、隐藏和冗余关系。
本发明所述方法,提高了网关设备策略分析的效率。
展开

权利要求书


1.一种网关设备策略的分析方法,其特征在于,包括以下步骤:建立策略对象对应的链表,读取策略对象的信息,将所述策略对象的信息存储到所述策略对象对应的链表中,使每个策略对象占用链表中的一个对应节点;轮询所述链表中的节点,判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中;将策略对象的ID加入到所述自平衡二叉查找树节点下的链表中,将自平衡二叉查找树中每个节点与对应策略对象进行关联,在bit位内存区域中给策略对象的指针分配内存;根据所述策略对象的指针在bit位内存区域中的内存,判断策略对象对应的bit信息之间是否存在交集,若是,则策略对象间存在冲突关系,若否,则策略对象之间不存在冲突关系,根据所述策略对象的指针在bit位内存区域中的内存,获取策略对象对应的bit信息之间的按位与,根据所述策略对象对应的bit信息之间的按位与,确定各策略对象间的隐藏关系及各策略对象间的冗余关系,其中,各策略对象间的隐藏关系是针对任意策略对象之间的关系,各策略对象间的冗余关系是针对策略行为相同的策略对象之间的关系。
2.根据权利要求1所述的网关设备策略的分析方法,其特征在于,所述策略对象包括用户对象、地址对象、接口对象、应用对象和服务对象。
3.根据权利要求1所述的网关设备策略的分析方法,其特征在于,所述判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中,具体包括,依次读取节点下的各策略对象的ID,判断策略对象的自平衡二叉查找树是否存在,若不存在,则创建策略对象的自平衡二叉查找树的根节点,判断自平衡二叉查找树是否存在策略对象的ID的节点,若否,则创建自平衡二叉查找树节点,并使其值等于策略对象的ID,将该节点插入至自平衡二叉查找树中。
4.根据权利要求3所述的网关设备策略的分析方法,其特征在于,所述在bit位内存区域中给策略对象的指针分配内存,具体包括,在bit位内存区域中,给每条链表上的策略对象的指针分配内存,依次读取自平衡二叉查找树的节点,轮询自平衡二叉查找树的节点下的链表,查询策略对象的ID的链表节点,将策略对象指针指向的内存对应位置置位,直至策略对象ID的处理结束。
5.根据权利要求2所述的网关设备策略的分析方法,其特征在于,还包括,比较第一条策略对象的地址段与第二条策略对象的地址段,对所述第一条策略对象的地址段与第二条策略对象的地址段进行拆分,得到相互无交集的地址段,对所述相互无交集的地址段进行赋值,根据地址段所赋的值确定地址对象的ID;获取服务对象对应的协议值及端口号,根据协议值及端口号,得到服务对象的ID。
6.一种网关设备策略的分析装置,其特征在于,包括链表构建模块、节点构建模块、策略对象关联模块及策略关系分析模块;所述链表构建模块,用于建立策略对象对应的链表,读取策略对象的信息,将所述策略对象的信息存储到所述策略对象对应的链表中,使每个策略对象占用链表中的一个对应节点;所述节点构建模块,用于轮询所述链表中的节点,判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中;所述策略对象关联模块,用于将策略对象的ID加入到所述自平衡二叉查找树节点下的链表中,将自平衡二叉查找树中每个节点与对应策略对象进行关联,在bit位内存区域中给策略对象的指针分配内存;所述策略关系分析模块,用于根据所述策略对象的指针在bit位内存区域中的内存,判断策略对象对应的bit信息之间是否存在交集,若是,则策略对象间存在冲突关系,若否,则策略对象之间不存在冲突关系,根据所述策略对象的指针在bit位内存区域中的内存,获取策略对象对应的bit信息之间的按位与,根据所述策略对象对应的bit信息之间的按位与,确定各策略对象间的隐藏关系及各策略对象间的冗余关系,其中,各策略对象间的隐藏关系是针对任意策略对象之间的关系,各策略对象间的冗余关系是针对策略行为相同的策略对象之间的关系。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机该程序被处理器执行时,实现如权利要求1-5任一所述的网关设备策略的分析方法。
展开

说明书

技术领域
本发明涉及网关设备策略技术领域,尤其是涉及一种网关设备策略的分析方法、装置及可读存储介质。
背景技术
随着网络技术的飞速发展,我们的网络越来越复杂,相应的网关设备就需要更多、更复杂的策略来管控这些流量;经过长时间的积累之后,这些策略就会变得异常庞大,而人工计算和分析策略效率低下,通过人工计算和分析几乎已经不可能;在此背景下会造成老策略不敢删,新策略不断增加,极大降低了设备性能和增加维护成本。
发明内容
有鉴于此,本发明提供了一种网关设备策略的分析方法、装置及可读存储介质,解决现有技术中网关设备策略分析效率低下的技术问题。
一方面,本发明提供了一种网关设备策略的分析方法,包括以下步骤:建立策略对象对应的链表,读取策略对象的信息,将所述策略对象的信息存储到所述策略对象对应的链表中,使每个策略对象占用链表中的一个对应节点;轮询所述链表中的节点,判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中;将策略对象的ID加入到所述自平衡二叉查找树节点下的链表中,将自平衡二叉查找树中每个节点与对应策略对象进行关联,在bit位内存区域中给策略对象的指针分配内存;根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的冲突、隐藏和冗余关系。
进一步地,所述策略对象包括用户对象、地址对象、接口对象、应用对象和服务对象。
进一步地,所述判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中,具体包括,依次读取节点下的各策略对象的ID,判断策略对象的自平衡二叉查找树是否存在,若不存在,则创建策略对象的自平衡二叉查找树的根节点,判断自平衡二叉查找树是否存在策略对象的ID的节点,若否,则创建自平衡二叉查找树节点,并使其值等于策略对象的ID,将该节点插入至自平衡二叉查找树中。
进一步地,所述在bit位内存区域中给策略对象的指针分配内存,具体包括,在bit位内存区域中,给每条链表上的策略对象的指针分配内存,依次读取自平衡二叉查找树的节点,轮询自平衡二叉查找树的节点下的链表,查询策略对象的ID的链表节点,将策略对象指针指向的内存对应位置置位,直至策略对象ID的处理结束。
进一步地,所述网关设备策略的分析方法还包括,比较第一条策略对象的地址段与第二条策略对象的地址段,对所述第一条策略对象的地址段与第二条策略对象的地址段进行拆分,得到相互无交集的地址段,对所述相互无交集的地址段进行赋值,根据地址段所赋的值确定地址对象的ID;获取服务对象对应的协议值及端口号,根据协议值及端口号,得到服务对象的ID。
进一步地,根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的冲突关系,具体包括,根据所述策略对象的指针在bit位内存区域中的内存,判断策略对象对应的bit信息之间是否存在交集,若是,则策略对象间存在冲突关系,若否,则策略对象之间不存在冲突关系。
进一步地,根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的隐藏关系,具体包括,根据所述策略对象的指针在bit位内存区域中的内存,获取策略对象对应的bit信息之间的按位与,根据所述策略对象对应的bit信息之间的按位与,确定各策略对象间的隐藏关系。
进一步地,根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的冗余关系,具体包括,根据所述策略对象的指针在bit位内存区域中的内存,获取策略对象对应的bit信息之间的按位与,根据所述策略对象对应的bit信息之间的按位与,确定各策略对象间的冗余关系。
另一方面,本发明还提供了一种网关设备策略的分析装置,包括链表构建模块、节点构建模块、策略对象关联模块及策略关系分析模块;所述链表构建模块,用于建立策略对象对应的链表,读取策略对象的信息,将所述策略对象的信息存储到所述策略对象对应的链表中,使每个策略对象占用链表中的一个对应节点;所述节点构建模块,用于轮询所述链表中的节点,判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中;所述策略对象关联模块,用于将策略对象的ID加入到所述自平衡二叉查找树节点下的链表中,将自平衡二叉查找树中每个节点与对应策略对象进行关联,在bit位内存区域中给策略对象的指针分配内存;所述策略关系分析模块,用于根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的冲突、隐藏和冗余关系。
另一方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机该程序被处理器执行时,实现如上述任一技术方案所述的网关设备策略的分析方法。
与现有技术相比,本发明的有益效果包括:通过建立策略对象对应的链表,读取策略对象的信息,将所述策略对象的信息存储到所述策略对象对应的链表中,使每个策略对象占用链表中的一个对应节点;轮询所述链表中的节点,判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中;将策略对象的ID加入到所述自平衡二叉查找树节点下的链表中,将自平衡二叉查找树中每个节点与对应策略对象进行关联,在bit位内存区域中给策略对象的指针分配内存;根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的冲突、隐藏和冗余关系;提高了网关设备策略分析的效率。
附图说明
图1为本发明实施例1所述的网关设备策略的分析方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例1本发明提供了一种网关设备策略的分析方法,其流程示意图,如图1所示,所述网关设备策略的分析方法,包括以下步骤:步骤S1、建立策略对象对应的链表,读取策略对象的信息,将所述策略对象的信息存储到所述策略对象对应的链表中,使每个策略对象占用链表中的一个对应节点;步骤S2、轮询所述链表中的节点,判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中;步骤S3、将策略对象的ID加入到所述自平衡二叉查找树节点下的链表中,将自平衡二叉查找树中每个节点与对应策略对象进行关联,在bit位内存区域中给策略对象的指针分配内存;步骤S4、根据所述策略对象的指针在bit位(比特位)内存区域中的内存,确定各策略对象间的冲突、隐藏和冗余关系。
一个具体实施例中,建立用户对象、地址对象、接口对象、应用对象和服务对象的链表,用于存储策略对象(用户对象、地址对象、接口对象、应用对象和服务对象)的信息;判断是否还有策略对象待读取(通过进程间消息通信,如消息队列、TIPC通信协议),如果有,读取策略的用户对象、地址对象、接口对象、应用对象和服务对象信息,将读取的信息存储到对应链表中,每个链表节点包含策略对象编号ID和具体的对象信息,每条策略占用一个节点;当所有策略对象均读取后,即可建立原子对象模型;需要说明的是,经过建立策略对象对应的链表,读取策略对象的信息,已经获知了所有的策略对象及策略信息;在原子对象建模之前,先建立策略链表(若策略较多,链表可以使用hash表(哈希表),便于原子建模时提高查询速度);一条策略占一个链表节点,每个节点包含5个指针变量,分别指向“用户对象、地址对象、接口对象、应用对象和服务对象”的bit位内存区域(在原子建模完成前不分配内存,因为不知道需要分配多少)原子对象模型的建立包括对各类对象信息进行抽象化后建立统一类型的结构,各类对象之间的原子模型相互独立;优选的,所述策略对象包括用户对象、地址对象、接口对象、应用对象和服务对象。
优选的,所述判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中,具体包括,依次读取节点下的各策略对象的ID,判断策略对象的自平衡二叉查找树是否存在,若不存在,则创建策略对象的自平衡二叉查找树的根节点,判断自平衡二叉查找树是否存在策略对象的ID的节点,若否,则创建自平衡二叉查找树节点,并使其值等于策略对象的ID,将该节点插入至自平衡二叉查找树中。
一个具体实施例中,经过建立策略对象对应的链表,已经将用户对象和其所在的ID都加到了用户对象链表中;用户对象的原子对象建模,包括以下步骤:S101、轮询链表节点,并判断是否到达链表结尾,若到达结尾,说明所有策略的用户对象已经全部按照建模要求加入到了AVL树(自平衡二叉查找树)中,进入步骤S110;否则处理这个节点(对应一条策略)下的所有用户信息(一个策略可以包含多个用户),进入步骤S102;S102、依次读取该节点下的各用户ID并进入步骤S103;(因为用户ID也是可以唯一标识用户,所以这里可以不用处理用户名称)S103、判断用户对象的AVL树是否存在,若不存在则进入S104进行创建,若存在则进入S105;S104、创建AVL树的根节点,所述根节点用于存放用户ID;S105、判断AVL树上是否有该用户ID的节点,若没有该节点,则进入S106;若存在则进入S107;S106、创建AVL树节点,节点的值等于该用户ID,并将该节点插入到AVL树中;S107、将策略对象(此时为用户对象)ID加入到该AVL节点下的链表中,策略对象ID用于关联每个AVL节点与对应策略的关系;S108、判断该策略对象的所有用户信息是否已处理完,若还有用户ID未处理,则进入S109;若用户ID已处理完,则进入步骤S101;S109、读取下一个策略对象的ID信息,然后进入步骤S105处理;S110、至此可以知道AVL树上有多少个节点(也就是有多少个不同的用户ID),假设为n个,则在每条策略链表上的用户对象指针分配至少 (n+7)/8个字节的内存(取整且为8的整数倍),这些内存用于存储原子对象的bit位;S111、依次读取AVL树上的所有节点,判断是否到达结尾,若到达结尾则用户对象原子建模结束;若没有则进入步骤S112;S112、若AVL节点为S111中读取的第x个节点(如第1个节点则x=0,第n个节点则x=n-1),记录下该值x;S113、轮询AVL节点下的所有策略ID链表(S107中已经将所有的策略ID加入了AVL节点),判断策略ID是否处理结束,若处理结束则进入步骤S111去处理下一个AVL节点的流程;若未处理完成,则进入步骤S114;S114、查找该策略对象ID的链表节点,并将用户对象指针指向的内存的第x位置位为1,设置完之后继续执行S113。
需要说明的是,步骤S101中的链表节点含有策略对象(用户对象)ID信息,AVL节点是一个数据结构,其中包含一个链表用户存储所有关联的策略ID信息;AVL树采用的开源代码,插入、判断节点是否存在等操作只需要调用相关接口即可;优选的,所述在bit位内存区域中给策略对象的指针分配内存,具体包括,在bit位内存区域中,给每条链表上的策略对象的指针分配内存,依次读取自平衡二叉查找树的节点,轮询自平衡二叉查找树的节点下的链表,查询策略对象的ID的链表节点,将策略对象指针指向的内存对应位置置位,直至策略对象ID的处理结束。
优选的,所述网关设备策略的分析方法还包括,比较第一条策略对象的地址段与第二条策略对象的地址段,对所述第一条策略对象的地址段与第二条策略对象的地址段进行拆分,得到相互无交集的地址段,对所述相互无交集的地址段进行赋值,根据地址段所赋的值确定地址对象的ID;获取服务对象对应的协议值及端口号,根据协议值及端口号,得到服务对象的ID;对于地址对象来说,由于其相对较为复杂,它是一个地址段,各个地址段之间还存在交叉,所以首先需要解决交叉的交集部分;一个实施例中,地址对象包括地址段192.168.1.1 - 192.168.1.10 和192.168.1.5 - 192.168.1.100;192.168.1.1 - 192.168.1.10 和 192.168.1.5 -192.168.1.100之间就存在交集部分192.168.1.5-192.168.1.10;地址对象的原子对象建模分为两个部分:第一部分是将所有策略的“地址对象”信息处理成无交集的IPv4地址段,然后给每个地址段进行唯一编号;第二部分是按照用户对象的原子对象建模方法进行处理;每个IPv4地址段有唯一编号之后,其就与用户对象原子建模完全一样了;具体对IPv4地址段的定义说明,如下,192.168.1.1 - 192.168.1.10视为IP1-IP2,其中IP1为192.168.1.1对应的值192<<24 + 168<<16 + 1<<8 + 1 =3232235777 (0xC0A80101);其中IP2为192.168.1.10对应的值192<<24 + 168<<16 + 1<<8 + 10 = 3232235786(0xC0A8010A);假定第一条策略的地址对象为:192.168.1.1 - 192.168.1.10、192.168.2.1 -192.168.2.10;第二条策略的地址对象为:192.168.1.5 - 192.168.1.100、192.168.3.1 -192.168.3.100;将第一条策略的地址段定义为A11-A12,B11-B12,其中A11为192.168.1.1对应的值192<<24 + 168<<16 + 1<<8 + 1 =3232235777(0xC0A80101);其他几个依次类推。
将第二条策略的地址段定义为A21-A22,B21-B22,其中A21为192.168.1.5对应的值192<<24 +168<<16 + 1<<8 + 5 =3232235781(0xC0A80106);依次比较第一条策略的地址段与第二条策略的地址段,拆分为相互无交集的地址段;A11-A12 与 A21-A22之间存在交集,将其拆分为:192.168.1.1 - 192.168.1.4:3232235777 - 3232235780,192.168.1.5 - 192.168.1.10;交集部分,3232235781 -3232235786,192.168.1.11 - 192.168.1.100:3232235787 - 3232239716,其他地址段之间不存在交集,具体值如下,B11-B12:192.168.2.1 - 192.168.2.10:3232236033 -3232236042;B21-B22:192.168.3.1 - 192.168.3.100:3232236289 - 3232236388;若第一条策略的各地址段之间存在交集,那么也需要按照A11-A12 与 A21-A22的处理方法进行拆分;因此,第一条策略的地址对象为:3232235777 - 3232235780、3232235781 -3232235786、3232236033 - 3232236042;第二条策略的地址对象为:3232235781 -3232235786、3232235787 - 3232239716、3232236289 - 3232236388;各个地址段之间不再有任何交集,可以将“3232235777 - 3232235780”视为地址对象名称,将3232235777或3232235780视为其ID(因为其他地址段不会与之有交集,所以该ID一定唯一);经过上述步骤的处理后,同样可以得到类似“用户对象”的唯一ID,之后就可以采用和用户对象一样的原子对象建模方法流程了;对于接口对象的原子对象建模,其每个接口信息和用户信息性质一样,都是名称加上ID;其原子对象建模方法流程与用户对象一样;对于应用对象的原子对象建模,因为每个应用实际就是对应一个ID,其与用户ID性质是一样的,其原子对象建模方法流程与用户对象一样;服务对象包括协议部分和端口号,需要将其转换为唯一ID,转换方法为,对TCP协议:1<<16 + 端口号的值,因为端口号最大为65535,其小于65536(1<<16),如http服务为TCP+80,则其值为:65516,对UDP协议:1<<17 + 端口号的值;对策略引用的每一个服务,经过上述的转换后,也可以得到一个唯一ID,其后可以采用与用户对象一样的原子对象建模方法流程了;通过原子对象建模,策略(对象)链表上的“用户对象、地址对象、接口对象、应用对象和服务对象”的bit位内存区均已被置上与原子对象对应的值,如“用户对象”原子对象模型中的第1、3、7个节点都包含第一条策略,则第一条策略的“用户对象”bit位内存区域的第0,2,6位为1,也即其第一个字节的值为01000101;优选的,根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的冲突关系,具体包括,根据所述策略对象的指针在bit位内存区域中的内存,判断策略对象对应的bit信息之间是否存在交集,若是,则策略对象间存在冲突关系,若否,则策略对象之间不存在冲突关系;需要说明的是,冲突策略是针对策略行为不相同的策略间进行的比较;假设第一条策略的行为为放行,“用户对象、地址对象、接口对象、应用对象和服务对象”的bit位内存区域指针分别为U1、A1、I1、P1、S1;第二条策略的行为为拒绝,“用户对象、地址对象、接口对象、应用对象和服务对象”的bit位内存区域指针分别为U2、A2、I2、P2、S2;冲突策略定义:U1与U2存在相同的bit位是1 ,A1与A2存在相同的bit位1 ,I1与I2 存在相同的bit位是1 ,P1与P2 存在相同的bit位是1 ,S1与S2 存在相同的bit位是1;对于用户对象,比较第一条策略和第二条策略的“用户对象”之间是否有交集,步骤如下,S201、根据“用户对象”原子建模的S110步骤,用户对象共有n个原子对象,同时定义变量offset记录比较的bit位内存的字节数,其初始值为0;S202、判断bit字节是否已经比较结束,若比较结束说明这两条策略的“用户对象”之间无交集,也就是说这两条策略之间不存在冲突,可以结束冲突策略的整个流程了,进入步骤S208;若未比较结束,则进入步骤S203;S203、定义(long long)类型的变量B1、B2分别表示第一条策略和第二条策略bit位信息;(使用long long相当于一次可以计算64个bit位,效率非常高),C语言计算方法如下:B1=*(long long *)((cahr *)U1+offset),B2=*(long long *)((cahr *)U2+offset);S204、B1与B2进行按位与运算(B1 & B2,对计算机来说按位与是非常快的);S205:判断B1&B2的结果,若其不为0,则说明这两条策略的“用户对象”之间有交集,则进入步骤S207;若其为0,则说明截至到第offset+8字节还没有交集,进入步骤S206;S206、offset的值累加8,然后进入步骤S202进行下一块内存区域的比较;S207、第一条策略和第二条策略之间存在交集(flag=1),进行下一类对象的比较;S208、所有的字节比较结束,且字节之间都不存在交集,结束冲突策略的比较,结束整个流程;对于地址对象、接口对象、应用对象、服务对象,判断策略对象对应的bit信息之间是否存在交集的方法一致;优选的,根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的隐藏关系,具体包括,根据所述策略对象的指针在bit位内存区域中的内存,获取策略对象对应的bit信息之间的按位与,根据所述策略对象对应的bit信息之间的按位与,确定各策略对象间的隐藏关系;具体实施时,隐藏策略是针对任意的策略之间进行比较,假设第N1条策略的“用户对象、地址对象、接口对象、应用对象和服务对象”的bit位内存区域指针分别为U1、A1、I1、P1、S1;第N2条策略的“用户对象、地址对象、接口对象、应用对象和服务对象”的bit位内存区域指针分别为U2、A2、I2、P2、S2,其中N1<N2;隐藏策略定义:U2为1的bit位,在U1中也为1(如U2=0010 U1=0110就满足这一条件), A2为1的bit位,在A1中也为1,I2为1的bit位,在I1中也为1,P2为1的bit位,在P1中也为1,S2为1的bit位,在S1中也为1;那么说明第N2条策略是被第N1条策略隐藏的,即第N2条策略永远不会被执行;对于用户对象,比较第N1条策略和第N2条策略的用户对象bit位是否满足隐藏关系,步骤如下,S301、根据“用户对象”原子建模的S110步骤,我们可知用户对象共有n个原子对象,同时我们定义变量offset记录比较的bit位内存的字节数,其初始值为0;S302、判断bit字节是否已经比较结束,若比较结束说明这两条策略的“用户对象”之间是存在隐藏关系的,进入步骤S307;若未比较结束,则进入步骤S303;S303、定义(long long)类型的变量B1、B2分别表示第一条策略和第二条策略bit位信息;(使用long long相当于一次可以计算64个bit位,效率非常高),C语言计算方法如下:B1=*(long long *)((cahr *)U1+offset);B2=*(long long *)((cahr *)U2+offset);S304、对B1和B2进行如下比较,即比较B1与B2按位与之后与B2是否相等,若相等则说明B2中所有为1的bit位在B1中也是1,进入步骤S305进行下一块内存区域的比较;若不相等则说明不存在隐藏关系,进入步骤S306;S305、offset的值累加8,然后进入步骤S302进行下一块内存区域的比较;S306、在此8个字节不存在隐藏关系,也就是说整个“用户对象”是不存在隐藏关系,结束整个流程的比较;S307、所有的字节都比较完成,且都存在隐藏关系,那说明第N1条策略的“用户对象”与第N2条策略的“用户对象”之间存在隐藏关系,将flag置1,进行下一个对象的隐藏关系比较;对于地址对象、接口对象、应用对象、服务对象,判断隐藏关系,与用户对象确定各策略对象间的隐藏关系的方法一致;优选的,根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的冗余关系,具体包括,根据所述策略对象的指针在bit位内存区域中的内存,获取策略对象对应的bit信息之间的按位与,根据所述策略对象对应的bit信息之间的按位与,确定各策略对象间的冗余关系;冗余策略是针对策略行为相同的策略间进行比较;冗余策略的比较与隐藏策略类似,只是冗余策略发生在策略行为相同的策略之间;假设第N1条策略的行为为放行,“用户对象、地址对象、接口对象、应用对象和服务对象”的bit位内存区域指针分别为U1、A1、I1、P1、S1,第N2条策略的行为为放行,“用户对象、地址对象、接口对象、应用对象和服务对象”的bit位内存区域指针分别为U2、A2、I2、P2、S2,其中N1<N2;隐藏策略定义为,U1为1的bit位,在U2中也为1(如U1=0010 U2=0110就满足这一条件),A1为1的bit位,在A2中也为1,I1为1的bit位,在I2中也为1 ,P1为1的bit位,在P2中也为1 ,S1为1的bit位,在S2中也为1,那么说明第N1条策略是冗余的;这个比较方法步骤与隐藏关系方法步骤完全一样,只是把N1和N2的顺序调换一下即可;需要说明的是,原子对象是指同类同类数据无交集的部分;如有2条策略,策略1引用用户对象为(user1,user2,user3),策略2引用用户对象为(user2,user3),那么user1、(user2,user3)可分别视为一个原子对象;用户由一个唯一字符串描述和唯一ID组成,用户间的字符串和ID均不会相等,接口由设备的接口名称和唯一ifindex(接口索引)组成,接口间的名称和ifindex均不会相等,IPv4地址段包含起始IPv4地址IP1和结束IPv4地址IP2的集合,且IP2大于等于IP1,如192.168.1.1 - 192.168.1.10;应用ID应名称对应的唯一数字,服务即为包含协议(TCP、UDP)和目的端口ID(1-65535)的集合;用户对象为包含一个或多个的用户集合,接口对象为一个或多个接口的集合,地址对象为一个或多个IPv4地址段的集合,应用对象为一个或多个应用ID的集合,服务对象为一个或多个服务的集合,策略对象包含用户对象、接口对象、地址对象、应用对象、服务对象的集合,另外策略信息中还包含具体的行为:与各对象匹配之后是放行或拒绝;策略ID为从1-n的唯一编号,如第一条策略就是1。
实施例2本发明实施例提供了一种网关设备策略的分析装置,包括链表构建模块、节点构建模块、策略对象关联模块及策略关系分析模块;所述链表构建模块,用于建立策略对象对应的链表,读取策略对象的信息,将所述策略对象的信息存储到所述策略对象对应的链表中,使每个策略对象占用链表中的一个对应节点;所述节点构建模块,用于轮询所述链表中的节点,判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中;所述策略对象关联模块,用于将策略对象的ID加入到所述自平衡二叉查找树节点下的链表中,将自平衡二叉查找树中每个节点与对应策略对象进行关联,在bit位内存区域中给策略对象的指针分配内存;所述策略关系分析模块,用于根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的冲突、隐藏和冗余关系。
实施例3本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机该程序被处理器执行时,实现如上述实施例1所述的网关设备策略的分析方法。
本发明公开了一种网关设备策略的分析方法、装置及可读存储介质,通过建立策略对象对应的链表,读取策略对象的信息,将所述策略对象的信息存储到所述策略对象对应的链表中,使每个策略对象占用链表中的一个对应节点;轮询所述链表中的节点,判断自平衡二叉查找树上是否存在策略对象的ID节点,若否,则创建自平衡二叉查找树节点,将所述自平衡二叉查找树节点插入至自平衡二叉查找树中;将策略对象的ID加入到所述自平衡二叉查找树节点下的链表中,将自平衡二叉查找树中每个节点与对应策略对象进行关联,在bit位内存区域中给策略对象的指针分配内存;根据所述策略对象的指针在bit位内存区域中的内存,确定各策略对象间的冲突、隐藏和冗余关系;提高了网关设备策略分析的效率,此外本发明技术方案步骤简单、不易出错;通过原子对象建模后,所有的引用对象类型均可以采用同样的分析方法;在此基础上扩展更多的对象也极为方便;本发明技术方案通过对网关设备策略进行抽象建模后进行快速分析,从而将策略之间的冲突、冗余、隐藏等相互关系展示出来,以方便维护;当新建立一条策略,通过分析该策略与已存在策略之间的关系,那么就可以确定该策略是否有效、是否足够精确;通过对所有已经存在的策略进行分析,确认策略相互间的关系,那么就可以管理冲突策略、删除隐藏策略、优化冗余策略;在进行冲突、冗余、隐藏关系分析时,极大的减少了比较范围,每个原子对象在对应唯一一个bit位,对于32位操作系统每次可比较32个原子对象,64位操作系统则可比较64个原子对象,效率提高分别为32倍和64倍。
以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。
任何根据本发明的技术构思所做出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。
展开

查看更多专利详情信息请先登录或注册会员

相关专利类别推荐

获取手机验证码,即可注册成为会员

专利详情咨询

咨询内容

姓名

手机

验证码

用户登录

手机号

手机验证码

提示

不能再减了!!!

提交成功

八月瓜客服中心已经收到您的信息,正在为您派遣知识产权顾问。知识产权顾问会携带贴心的服务以闪电搬的速度与您联系。

扫一扫关注八月瓜微信 创业一手掌握