CN109951393B - 网段查找方法及装置 - Google Patents

网段查找方法及装置 Download PDF

Info

Publication number
CN109951393B
CN109951393B CN201910251741.XA CN201910251741A CN109951393B CN 109951393 B CN109951393 B CN 109951393B CN 201910251741 A CN201910251741 A CN 201910251741A CN 109951393 B CN109951393 B CN 109951393B
Authority
CN
China
Prior art keywords
node
network segment
address network
child
bit number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910251741.XA
Other languages
English (en)
Other versions
CN109951393A (zh
Inventor
李保国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Security Technologies Co Ltd
Original Assignee
New H3C Security Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by New H3C Security Technologies Co Ltd filed Critical New H3C Security Technologies Co Ltd
Priority to CN201910251741.XA priority Critical patent/CN109951393B/zh
Publication of CN109951393A publication Critical patent/CN109951393A/zh
Application granted granted Critical
Publication of CN109951393B publication Critical patent/CN109951393B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供了一种网段查找方法及装置,通过多个已知地址网段预先创建树形结构,所述树形结构中每一子节点表示地址网段中至少一个比特位的位号,每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻,子节点连接的第二类孩子节点存储有:所述多个已知地址网段中前缀长度等于子节点所表示位号的网段;所述方法包括:获取待匹配地址网段;从所述树形结构中,查找所表示位号与所述待匹配地址网段的前缀长度一致的目标节点;判断所述待匹配地址网段是否与所述目标节点连接的第二类孩子节点存储的地址网段匹配。应用本申请实施例提供的方案能够提高查找效率。

Description

网段查找方法及装置
技术领域
本申请涉及信息处理技术领域,特别是涉及一种网段查找方法及装置。
背景技术
安全策略是根据报文的属性信息对报文进行转发控制和深度报文检测的防控策略,其实质是根据安全策略中规定的网段规则的具体内容来对报文进行过滤。
具体的,网段规则中会对需要过滤的IP(Internet Protocol,网络之间互连的协议)地址的网段进行限定,基于此,在基于网段规则进行报文过滤时,一般需要判断网段规则中限定的地址网段是否与已知报文中包括的IP地址匹配,若匹配,过滤上述已知报文,若不匹配,则放行上述已知报文。
又由于各安全策略一般是按照一定顺序排列的,所以基于网段规则进行报文过滤时,需要按照安全策略的排列顺序,从前到后逐个判断每一安全策略中规定的网段规则所限定地址网段是否与已知报文中包括的IP地址匹配,查找效率较低。
尤其是在实际应用中安全策略多达几万条的情况,应用上述方式查找与已知报文包括的IP地址是否与网段规则规定的地址网段相匹配时,查找效率极低。
发明内容
有鉴于此,本申请提供了一种网段查找方法及装置,以提高网段的查找效率。具体技术方案如下:
第一方面,本申请提供了一种网段查找方法,通过多个已知地址网段预先创建树形结构,所述树形结构中每一子节点表示地址网段中至少一个比特位的位号,每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻,子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于子节点所表示位号的网段;
所述方法包括:
获取待匹配地址网段;
从所述树形结构中,查找所表示位号与所述待匹配地址网段的前缀长度一致的目标节点;
判断所述待匹配地址网段是否与所述目标节点连接的第二类孩子节点存储的地址网段匹配。
结合第一方面,在第一种可能的实现方式中,所述子节点表示至少两个位号;
所述子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于至少两个位号中第一位号的网段;所述第一位号为至少两个位号中与子节点连接的第一类孩子节点所表示位号相邻的位号。
结合第一方面或第一种可能的实现方式,在第二种可能的实现方式中,所述获取待匹配地址网段之前,所述方法还包括:
按照一个比特位与一个子节点一一对应的方式,将地址网段包括的比特位的位号存储至子节点中,得到树形结构,所述树形结构中每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻;
获取第一已知地址网段,从所述树形结构中,查找所表示位号与所述第一已知地址网段包括的前缀长度一致的子节点;
为查找到的子节点增加与子节点连接的第二类孩子节点,并将所述第一已知地址网段存储至增加的第二类孩子节点中;
从与所述树形结构包括的根节点连接的第一层子节点或第一孩子节点中,确定起始合并节点,并以第一子节点为结束合并节点,所述第一子节点为具有第二类孩子节点的子节点,第一孩子节点为与第一子节点连接的第一类孩子节点;
对每一对起始合并节点和结束合并节点之间的子节点进行节点合并。
结合第二种可能的实现方式,在第三种可能的实现方式中,所述获取第一已知地址网段之前,还包括:
以前缀长度为第一优先级,按照升序方式对多个已知地址网段进行排序;
当存在多个已知地址网段具有相同的第一优先级时,以地址网段的IP地址为第二优先级,按照升序方式,对具有相同第一优先级的多个已知地址网段进行排序,获得所述多个已知地址网段的排序结果;
所述获取第一已知地址网段,从所述树形结构中,查找所表示位号与所述第一已知地址网段包括的前缀长度一致的子节点,包括:
从所述排序结果中获得第一已知地址网段;
从所述树形结构中第二子节点的下一层子节点开始,查找所表示位号与所述第一已知地址网段的前缀长度一致的子节点,所述第二子节点为所述树形结构中所表示位号与第二已知地址网段的前缀长度一致的子节点,第二已知地址网段为所述排序结果中所述第一已知地址网段的前一地址网段。
第二方面,本申请提供了一种网段查找装置,通过多个已知地址网段预先创建树形结构,所述树形结构中每一子节点表示地址网段中至少一个比特位的位号,每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻,子节点连接的第二类的孩子节点存储所述多个已知地址网段中前缀长度等于子节点所表示位号的网段;
所述装置包括:
网段获取模块,用于获取待匹配地址网段;
节点查找模块,用于从所述树形结构中,查找所表示位号与所述待匹配地址网段的前缀长度一致的目标节点;
网段判断模块,用于判断所述待匹配地址网段是否与所述目标节点连接的第二类孩子节点存储的地址网段匹配。
结合第二方面,在第四种可能的实现方式中,所述子节点表示至少两个位号;
所述子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于至少两个位号中第一位号的网段;所述第一位号为至少两个位号中与子节点连接的第一类孩子节点所表示位号相邻的位号。
结合第二方面或第四种可能的实现方式,在第五种可能的实现方式中,在所述网段获取模块获取所述待匹配地址网段之前,所述装置还包括:树创建模块;
其中,所述树创建模块,包括:
树获得单元,用于按照一个比特位与一个子节点一一对应的方式,将地址网段包括的比特位的位号存储至子节点中,得到树形结构,所述树形结构中每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻;
节点查找单元,用于获取第一已知地址网段,从所述树形结构中,查找所表示位号与所述第一已知地址网段包括的前缀长度一致的子节点;
网段存储单元,用于为查找到的子节点增加与子节点连接的第二类孩子节点,并将所述第一已知地址网段存储至增加的第二类孩子节点中;
节点确定单元,用于从与所述树形结构包括的根节点连接的第一层子节点或第一孩子节点中,确定起始合并节点,并以第一子节点为结束合并节点,所述第一子节点为第二类孩子节点的子节点,第一孩子节点为与第一子节点连接的第一类孩子节点;
节点合并单元,用于对每一对起始合并节点和结束合并节点之间的子节点进行节点合并。
结合第五种可能的实现方式,在第六种可能的实现方式中,所述树创建模块还包括:
网段排序单元,用于在所述节点查找单元查找所表示位号与已知地址网段的前缀长度一致的子节点之前,以前缀长度为第一优先级,按照升序方式对多个已知地址网段进行排序;当存在多个已知地址网段具有相同的第一优先级时,以地址网段的IP地址为第二优先级,按照升序方式,对具有相同第一优先级的多个已知地址网段进行排序,获得所述多个已知地址网段的排序结果;
所述节点查找单元,具体用于:
从所述排序结果中获得第一已知地址网段;
从所述树形结构中第二子节点的下一层子节点开始,查找所表示位号与所述第一已知地址网段的前缀长度一致的子节点,所述第二子节点为:所述树形结构中所表示位号与第二已知地址网段的前缀长度一致的子节点,第二已知地址网段为:所述排序结果中所述第一已知地址网段的前一地址网段。
第三方面,本申请提供了一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现本申请实施例所述的方法步骤。
第四方面,本申请提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现本申请实施例所述的方法步骤。
由以上可见,应用本申请实施例提供的方案查找网段时,由于树形结构中每一子节点表示的是地址网段中至少一个比特位的位号,所以获取待匹配地址网段后,能够从树形结构中查找出所表示位号与待匹配地址网段的前缀长度一致的目标节点。又由于上述树形结构中子节点连接的第二类孩子节点中存储有多个已知地址网段中前缀长度等于子节点所表示位号的网段,所以上述目标节点中存储有所有与待匹配地址网段前缀长度相等的地址网段,与现有技术相比,无需再针对各网段规则所规定的地址网段进行逐一匹配,因而能够提高查找效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种网段查找方法的流程示意图;
图2为本申请实施例提供的一种树创建方法的流程示意图;
图3a为本申请实施例提供的一种树结构示意图;
图3b为本申请实施例提供的另一种树结构示意图;
图4为本申请实施例提供的一种网段查找装置的结构示意图;
图5为本申请实施例提供的一种树创建装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在实现本申请各个实施例提供的网段查找方案时,是基于预先创建的树形结构实现的。为便于理解,下面先对上述预先创建的树形结构进行介绍。
本申请的一个实施例中,上述预先创建的树形结构为通过多个已知地址网段预先创建树形结构。具体的,上述所创建的树形结构可以为Radix树形结构。
另外,上述树形结构中每一子节点表示地址网段中至少一个比特位的位号,每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻,子节点连接的第二类孩子节点存储有:多个已知地址网段中前缀长度等于子节点所表示位号的网段。
针对每一字节点而言,子节点连接的第一类孩子节点为:子节点连接的孩子节点中度不为零的节点,子节点连接的第二类孩子节点为:子节点连接的孩子节点中度为零的节点,也可以称为叶子节点。
本申请实施例中所涉及的地址网段可以为IPv4地址网段,也可以为IPv6地址网段。
以IPv6地址网段为例,IPv6地址网段中IP地址部分包含128个比特位,则IPv6地址网段中的各个比特位为第1个比特位至第128个比特位,相应的,这些比特位的位号为1至128。上述树形结构中的每一子节点所表示的位号,可以为上述128个比特位中的至少一个比特位的位号。例如,一个子节点可以表示第1个比特位的位号1,还可以表示第1-100个比特位的位号1-100等等。
由于上述预先创建的树形结构为通过各个已知地址网段创建的树形结构,所以上述树形结构的各个叶子节点共计存储的地址网段中包含已知地址网段中的所有地址网段。
每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻,具体可以按照升序相邻,也就是,随着上述树形结构中子节点深度增加,子节点所表示比特位的位号越大。另外,也可以按照降序相邻,也就是,随着上述树形结构中子节点深度增加,子节点所表示比特位的位号越小。
例如,假设一个子节点所表示的比特位的位号为:118-121。
按照升序相邻的情况下,上述子节点连接的第一类孩子节点所表示比特位的位号可以为:122。
按照降序相邻的情况下,上述子节点连接的第一类孩子节点所表示比特位的位号可以为:117。
本申请的另一个实施例中,在子节点表示至少两个位号的情况下,
子节点连接的第二类孩子节点存储多个已知地址网段中前缀长度等于至少两个位号中第一位号的网段。上述第一位号为至少两个位号中与子节点连接的第一类孩子节点所表示位号相邻的位号。
假设,一个子节点表示的是地址网段中第118-121个比特位的位号,该子节点连接的第一类孩子节点表示的是地址网段中第122个比特位的位号,可见,地址网段中第121个比特位与第122个比特位的位号相邻,所以,上述第一位号为:地址网段中第121个比特位的位号121。
下面在上述预先创建的树形结构的基础上,对本申请实施例提供的网段查找方法进行详细说明。
图1为本申请实施例提供的一种网段查找方法的流程示意图,所述方法包括:
S101:获取待匹配地址网段。
S102:从上述树形结构中,查找所表示位号与待匹配地址网段的前缀长度一致的目标节点。
具体的,可以从上述树形结构中与根节点连接的第一层子节点开始,逐层判断各个子节点所表示的位号是否为上述待匹配地址网段的前缀长度。
S103:判断待匹配地址网段是否与目标节点连接的第二类孩子节点存储的地址网段匹配。
由于在树形结构中度为零的孩子节点可以称为叶子节点,因此,目标节点连接的第二类孩子节点也可以称为目标节点的叶子节点。
上述目标节点连接的第二类孩子节点中可能存储有一个地址网段,也可能存储有多个地址网段。在存储有多个地址网段的情况下,可以按照各个地址网段在上述第二类孩子节点中的存储顺序,逐个判断待匹配地址网段是否与第二类孩子节点中存储的地址网段相匹配。
本申请的一个实施例中,上述第二类孩子节点还可以挂载记录有与所存储地址网段相关联的网段规则的规则列表。
上述网段规则可以是对地址网段对应的报文进行过滤的规则、进行检测的规则等等。
这种情况下,在上述S103判断出待匹配地址网段与目标节点连接的第一类孩子节点所存储地址网段匹配时,可以针对上述待匹配地址网段执行与匹配成功的地址网段相关联的网段规则。
由以上可见,应用本实施例提供的方案查找网段时,由于树形结构中每一子节点表示的是地址网段中至少一个比特位的位号,所以获取待匹配地址网段后,能够从树形结构中查找出所表示位号与待匹配地址网段的前缀长度一致的目标节点。又由于上述树形结构中子节点连接的第二类孩子节点中存储有多个已知地址网段中前缀长度等于子节点所表示位号的网段,所以上述目标节点中存储有所有与待匹配地址网段前缀长度相等的地址网段,与现有技术相比,无需再针对各网段规则所规定的地址网段进行逐一匹配,因而能够提高查找效率。
下面再通过具体实施例对创建上述树形结构的过程进行介绍。
图2为本申请实施例提供的一种树创建方法的流程示意图,该方法包括:
S201:按照一个比特位与一个子节点一一对应的方式,将地址网段包括的比特位的位号存储至子节点中,得到树形结构。
其中,上述述树形结构中每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻。
一个比特位与一个子节点一一对应,则得到的上述树形结构中每一子节点存储有地址网段中一个比特位的位号。
本申请的一个实施例中,可以按照地址网段的最大位号,将地址网段包含的比特位的位号存储至子节点中,得到树形结构。这种情况下,所得到的树形结构中子节点的层数等于上述最大位号。例如,地址网段为IPv6地址网段的情况下,地址网段中比特位的最大位号为128,则所得到的树形结构中共计包含128层子节点,每一子节点中存储有地址网段一个比特位的位号。另外,所得到树形结构中各层子节点所表示比特位的位号可以是逐层增大的,例如,从第1层子节点到第128层子节点所表示比特位的位号分为1、2……128。当然,所得到树形结构中各层子节点所表示比特位的位号也可以是逐层减小的,例如,从第1层子节点到第128层子节点所表示比特位的位号分为128、127……2、1。
本申请的另一个实施例中,在要求所得到树形结构中各个子节点所表示比特位的位号逐层增大的情况下,所得到树形结构中子节点的层数可以由多个已知地址网段中最大前缀长度决定。例如,子节点的层数等于上述最大前缀长度。
本申请的再一个实施例中,在要求所得到树形结构中各个子节点所表示比特位的位号逐层减小的情况下,所得到树形结构中子节点的层数也可以由上述多个已知地址网段中最小前缀长度决定。例如,子节点的层数等于已知地址网段的最大位号-上述最小前缀长度。如,在各个已知地址网段为IPv6地址网段的情况下,所构建树形结构中子节点的层数可以为:128-上述最小前缀长度。
本申请的一个实施例中,所构建的树形结构可以为Radix树。
S202:获取第一已知地址网段,从上述树形结构中,查找所表示位号与第一已知地址网段包括的前缀长度一致的子节点。
具体的,上述第一已知地址网段可以是从多个已知地址网段中获得的。
其中,上述已知地址网段可以预先关联网段规则。
本申请的一个实施例中,上述多个已知地址网段可以是通过对IP地址的范围段进行分解得到的地址网段。
对IP地址的范围段进行分解得到的地址网段可能仅仅包含一个IP地址,也可能是一个IP地址段。
例如,对IP地址的范围段进行分解得到的地址网段包括:
1FF0::0/116、1FF0::200/128等。
对IP地址的范围段进行分解得到地址网段的过程可以采用现有技术中提供的各种方式实现,这里不再详述。
S203:为查找到的子节点增加与子节点连接的第二类孩子节点,并将第一已知地址网段存储至增加的第二类孩子节点中。
这样可以使得已知地址网段中前缀长度相同的地址网段存储在同一第一类孩子节点中。
如图3a示出上述树形结构的一部分,这一树形结构中包含的子节点是:从表示第115个比特位的位号子节点到表示第128个比特位的位号的子节点,也就是图3a示出的标识有“Bit-115”、“Bit-116”……“Bit-128”字样的方形框。另外,图中的圆角框表示的是叶子节点。
需要说明的是,在S201获得树形结构的基础上,可以针对多个已知地址网段中的每一地址网段执行上述S202和S203,也就是,将多个已知地址网段中的每一个地址网段分别作为上述第一地址网段,在树形结构中增加第二类孩子节点以及在所增加的第二类孩子节点中存储已知地址网段。
S204:从与树形结构包括的根节点连接的第一层子节点或第一孩子节点中,确定起始合并节点,并以第一子节点为结束合并节点。
其中,上述第一子节点为:具有第二类孩子节点的子节点,第一孩子节点为:与第一子节点连接的第一类孩子节点。
考虑到IPv6地址网段包含128个比特位,若树形结构中一个子节点表示一个比特位的位号,树形结构中子节点的层数最大为128,也就是树形结构中子节点最多会具有128层,树形结构的层数较多,为减少树形结构的层数,进而减少存储以及计算资源消耗,本申请实施例中对一些节点进行了合并。
由于进行节点合并时,是从根节点开始自上而下的进行节点合并,所以每一对起始合并节点和结束合并节点中,结束合并节点所在层在上述起始合并节点所在层之后。例如,上述起始合并节点为树形结构的第一层子节点,则上述结束合并节点可能为上述树形结构的第十层子节点。
S205:对每一对起始合并节点和结束合并节点之间的子节点进行节点合并。
对每一对起始合并节点和结束合并节点之间的子节点进行节点合并,可以理解为:将起始合并节点至结束合并节点之间的节点合并为一个节点,也就是说,以一个节点表示这些节点原本表示的比特位的位号。
假设,起始合并节点A至结束合并节点D所表示的分别为第1、2、3、4个比特位的位号,则合并后得到的一个节点表示第1-4个比特位的位号。
具体的,对节点进行合并得到合并节点后,可以为合并节点增加标记,以标识该节点为合并节点。这种情况下,在识别一个节点是否为合并节点时,通过上述标识即可快速判断出是否为合并节点。其中,上述合并节点是指进行节点合并而得到的节点。
本申请的一个实施例中,上述S204和S205可以在针对多个已知地址网段中的每一地址网段执行上述S202和S203之后执行。
下面结合图3a和图3b对节点合并过程进行说明。
从图3a可见,从标识有“Bit-117”的子节点开始,该子节点具有第二类孩子节点,可以作为结束合并节点,没有与之成对的起始合并节点,所以该子节点不进行节点合并。
然后,标识有“Bit-117”的子节点连接的第一类孩子节点,也就是表示第118个比特位的位号的子节点没有叶子节点,也即没有第二类孩子节点,可以作为起始合并节点,标识有“Bit-121”的子节点具有第二类孩子节点,可以作为结束合并节点,标识有“Bit-117”的子节点和标识有“Bit-121”的子节点形成一对起始合并节点和结束合并节点,可以进行节点合并。
然后,标识有“Bit-121”的子节点连接的第一类孩子节点,也就是表示第122个比特位的位号的子节点没有叶子节点,也即没有第二类孩子节点,可以作为起始合并节点,标识有“Bit-124”的子节点具有第二类孩子节点,可以作为结束合并节点,标识有“Bit-122”的子节点和标识有“Bit-124”的子节点形成一对起始合并节点和结束合并节点,可以进行节点合并。
然后,标识有“Bit-124”的子节点连接的第一类孩子节点,也就是表示第125个比特位的位号的子节点没有叶子节点,也即没有第二类孩子节点,可以作为起始合并节点,标识有“Bit-128”的子节点具有第二类孩子节点,可以作为结束合并节点,标识有“Bit-125”的子节点和标识有“Bit-128”的子节点形成一对起始合并节点和结束合并节点,可以进行节点合并。
对图3a所示的树形结构进行节点合并后得到的树形结构如图3b所示。
由以上可见,应用上述各实施例提供的方案构建树形结构时,由于树形结构中每一子节点表示的是地址网段中至少一个比特位的位号,又由于上述树形结构中子节点连接的第二类孩子节点中存储有多个已知地址网段中前缀长度等于子节点所表示位号的网段,所以,相同前缀长度的地址网段会被存储在同一第二类孩子节点中。另外,还对树形结构中的子节点进行了节点合并,因此,应用上述各个实施例提供的方案构建树形结构,能够有效节省存储空间。
本申请的另一个实施例中,在上述S202获取第一已知地址网段之前,上述树创建的方法还可以包括以下步骤M和N:
步骤M:以前缀长度为第一优先级,按照升序方式对多个已知地址网段进行排序。
步骤N:当存在多个已知地址网段具有相同的第一优先级时,以地址网段的IP地址为第二优先级,按照升序方式,对具有相同第一优先级的多个已知地址网段进行排序,获得多个已知地址网段的排序结果。
由于地址网段是通过IP地址部分和网段前缀长度描述的,所以对各个已知地址网段进行排序时,可以是基于IP地址和网段前缀长度进行排序的。
对已知地址网段进行排序时,前缀长度为第一优先级,而IP地址为第二优先级,也就是,前缀长度的优先级高于IP地址的优先级。这样在对已知地址网段进行排序时,优先按照前缀长度进行排序,在前缀长度相同的情况下,再按照IP地址进行排序。
假设,对IP地址的范围段进行分解得到的地址网段包括:
IFF0::0/116、IFF0::0/117、IFF0::210/124、IFF0::280/121、IFF0::200/128。
则在前缀长度的优先级高于IP地址的优先级的情况下,按照升序对上述网段进行排序的结果为:
IFF0::0/116、IFF0::0/117、IFF0::280/121、IFF0::210/124、IFF0::200/128。
在上述基础上,上述步骤S202获取第一已知地址网段,从树形结构中,查找所表示位号与第一已知地址网段包括的前缀长度一致的子节点时,可以包括以下步骤S202A和S202B:
S203A:从上述排序结果中获得第一已知地址网段。
具体的,从上述排序结果中获得第一已知地址网段时,可以按照排序结果中各个已知地址网段的顺序,顺次被选中作为第一已知地址网段。
例如,第一次从上述排序结果中获得已知地址网段时,将处于首位的地址网段作为上述第一已知地址网段,第二次从上述排序结果中获得地址网段时,将第二个地址网段作为上述第一已知地址网段,依次类推。
S203B:从上述树形结构中第二子节点的下一层子节点开始,查找所表示位号与第一已知地址网段的前缀长度一致的子节点。
其中,上述第二子节点为:上述树形结构中所表示位号与第二已知地址网段的前缀长度一致的子节点。第二已知地址网段为:排序结果中第一已知地址网段的前一地址网段。
由于第二已知网段为排序结果中第一已知网段的前一地址网段,因此,在针对排序结果中的每一地址网段查找子节点时,可以理解为是在排序结果中前一地址网段的子节点查找结果基础上进行的,无需每次均从根节点开始查找。
例如,在排序结果为:IFF0::0/116、IFF0::0/117、IFF0::280/121、IFF0::210/124、IFF0::200/128时。
首先,从与根节点连接的第一层子节点开始,查找所表示位号与IFF0::0/116的前缀长度116相一致的子节点,得到第116层子节点。
然后,从第117层子节点开始,查找表示位号与IFF0::0/117的前缀长度117相一致的子节点,得到第117层子节点。
接下来,从第118层子节点开始,查找表示位号与IFF0::280/121的前缀长度121相一致的子节点,得到第121层子节点。
接下来,从第119层子节点开始,查找表示位号IFF0::210/124的前缀长度124相一致的子节点,得到第124层子节点。
接下来,从第125层子节点开始,查找表示位号与IFF0::200/128的前缀长度128相一致的子节点,得到第128层子节点。
由以上可见,本实施例中在已构建树形结构上添加第二类孩子节点时,是依据排序结果中的各个地址网段进行添加的,又由于排序结果中的地址网段是按照前缀长度和IP地址进行升序排列的,所以排序结果中每一地址网段的前缀长度不小于其前面地址网段的前缀长度,这样在针对每一地址网段添加第二类孩子节点时,无需从树形结构的第一层叶子节点开始进行子节点查找,而是在针对上一地址网段进行子节点查找的基础上,继续向下一层子节点进行查找即可。因此应用本实施例提供的方案能够提高树形结构的构建速度。
与上述网段查找方法相对应,本申请实施例还提供了一种网段查找装置。
图4为本申请实施例提供的一种网段查找装置的结构示意图,所述装置通过多个已知地址网段预先创建树形结构,所述树形结构中每一子节点表示地址网段中至少一个比特位的位号,每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻,子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于子节点所表示位号的网段;
所述装置包括:
网段获取模块401,用于获取待匹配地址网段;
节点查找模块402,用于从所述树形结构中,查找所表示位号与所述待匹配地址网段的前缀长度一致的目标节点;
网段判断模块403,用于判断所述待匹配地址网段是否与所述目标节点连接的第二类孩子节点存储的地址网段匹配。
本申请的一个实施例中,所述子节点表示至少两个位号;
所述子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于至少两个位号中第一位号的网段;所述第一位号为至少两个位号中与子节点连接的第一类孩子节点所表示位号相邻的位号。
由以上可见,应用本实施例提供的方案查找网段时,由于树形结构中每一子节点表示的是地址网段中至少一个比特位的位号,所以获取待匹配地址网段后,能够从树形结构中查找出所表示位号与待匹配地址网段的前缀长度一致的目标节点。又由于上述树形结构中子节点连接的第二类孩子节点中存储有多个已知地址网段中前缀长度等于子节点所表示位号的网段,所以上述目标节点中存储有所有与待匹配地址网段前缀长度相等的地址网段,与现有技术相比,无需再针对各网段规则所规定的地址网段进行逐一匹配,因而能够提高查找效率。
本申请的一个实施例,上述地址网段查找装置还可以包括树构建模块。
参见图5,提供了一种构建树结构的装置的结构示意图。该装置中上述树创建模块,包括:
树获得单元501,用于按照一个比特位与一个子节点一一对应的方式,将地址网段包括的比特位的位号存储至子节点中,得到树形结构,所述树形结构中每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻;
节点查找单元502,用于获取第一已知地址网段,从所述树形结构中,查找所表示位号与所述第一已知地址网段包括的前缀长度一致的子节点;
网段存储单元503,用于为查找到的子节点增加与子节点连接的第二类孩子节点,并将所述第一已知地址网段存储至增加的第二类孩子节点中;
节点确定单元504,用于从与所述树形结构包括的根节点连接的第一层子节点或第一孩子节点中,确定起始合并节点,并以第一子节点为结束合并节点,所述第一子节点为第二类孩子节点的子节点,第一孩子节点为与第一子节点连接的第一类孩子节点;
节点合并单元505,用于对每一对起始合并节点和结束合并节点之间的子节点进行节点合并。
本申请的一个实施例中,所述树创建模块还包括:
网段排序单元,用于在所述节点查找单元查找所表示位号与已知地址网段的前缀长度一致的子节点之前,以前缀长度为第一优先级,按照升序方式对多个已知地址网段进行排序;当存在多个已知地址网段具有相同的第一优先级时,以地址网段的IP地址为第二优先级,按照升序方式,对具有相同第一优先级的多个已知地址网段进行排序,获得所述多个已知地址网段的排序结果;
所述节点查找单元502,可以具体用于:
从所述排序结果中获得第一已知地址网段;
从所述树形结构中第二子节点的下一层子节点开始,查找所表示位号与所述第一已知地址网段的前缀长度一致的子节点,所述第二子节点为:所述树形结构中所表示位号与第二已知地址网段的前缀长度一致的子节点,第二已知地址网段为:所述排序结果中所述第一已知地址网段的前一地址网段。
由以上可见,应用上述各实施例提供的方案构建树形结构时,由于树形结构中每一子节点表示的是地址网段中至少一个比特位的位号,又由于上述树形结构中子节点连接的第二类孩子节点中存储有多个已知地址网段中前缀长度等于子节点所表示位号的网段,所以,相同前缀长度的地址网段会被存储在同一叶子节点中。另外,还对树形结构中的子节点进行了节点合并,因此,应用上述各个实施例提供的方案构建树形结构,能够有效节省存储空间。
与上述网段查找方法相对应,本申请实施例还提供了一种电子设备。
图6为本申请实施例提供的一种电子设备的结构示意图,该电子设备包括:处理器601和机器可读存储介质602,所述机器可读存储介质602存储有能够被所述处理器601执行的机器可执行指令,所述处理器601被所述机器可执行指令促使:实现本申请实施例提供的上述网段查找方法步骤。
本申请的一个实施例中,提供了一种网段查找方法,该方法通过多个已知地址网段预先创建树形结构,所述树形结构中每一子节点表示地址网段中至少一个比特位的位号,每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻,子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于子节点所表示位号的网段;
所述方法包括:
获取待匹配地址网段;
从所述树形结构中,查找所表示位号与所述待匹配地址网段的前缀长度一致的目标节点;
判断所述待匹配地址网段是否与所述目标节点连接的第二类孩子节点存储的地址网段匹配。
需要说明的是,上述处理器601被机器可执行指令促使实现的网段查找方法的其他实现方式,与前述方法实施例部分所提及的实施例相同,这里不再赘述。
上述机器可读存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,上述机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
由以上可见,应用本申请实施例提供的电子设备查找网段时,由于树形结构中每一子节点表示的是地址网段中至少一个比特位的位号,所以获取待匹配地址网段后,能够从树形结构中查找出所表示位号与待匹配地址网段的前缀长度一致的目标节点。又由于上述树形结构中子节点连接的第二类孩子节点中存储有多个已知地址网段中前缀长度等于子节点所表示位号的网段,所以上述目标节点中存储有所有与待匹配地址网段前缀长度相等的地址网段,与现有技术相比,无需再针对各网段规则所规定的地址网段进行逐一匹配,因而能够提高查找效率。
与前述网段查找方法相对应,本申请实施例还提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现本申请实施例提供的上述网段查找方法步骤。
本申请的一个实施例中,提供了一种网段查找方法,该方法通过多个已知地址网段预先创建树形结构,所述树形结构中每一子节点表示地址网段中至少一个比特位的位号,每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻,子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于子节点所表示位号的网段;
所述方法包括:
获取待匹配地址网段;
从所述树形结构中,查找所表示位号与所述待匹配地址网段的前缀长度一致的目标节点;
判断所述待匹配地址网段是否与所述目标节点连接的第二类孩子节点存储的地址网段匹配。
需要说明的是,上述机器可执行指令促使处理器实现的信息存储方法的其他实现方式,与前述方法实施例部分所提及的实施例相同,这里不再赘述。
由以上可见,执行本实施例提供的机器可读存储介质中存储的机器可执行指令查找网段时,由于树形结构中每一子节点表示的是地址网段中至少一个比特位的位号,所以获取待匹配地址网段后,能够从树形结构中查找出所表示位号与待匹配地址网段的前缀长度一致的目标节点。又由于上述树形结构中子节点连接的第二类孩子节点中存储有多个已知地址网段中前缀长度等于子节点所表示位号的网段,所以上述目标节点中存储有所有与待匹配地址网段前缀长度相等的地址网段,与现有技术相比,无需再针对各网段规则所规定的地址网段进行逐一匹配,因而能够提高查找效率。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备和机器可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

Claims (10)

1.一种网段查找方法,其特征在于,通过多个已知地址网段预先创建树形结构,所述树形结构中每一子节点表示地址网段中至少一个比特位的位号,每一子节点所表示的位号,与,所述每一子节点连接的第一类孩子节点所表示的位号相邻,所述每一子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于所述每一子节点所表示位号的网段;
所述方法包括:
获取待匹配地址网段;
从所述树形结构中,查找所表示位号与所述待匹配地址网段的前缀长度一致的目标节点;
判断所述待匹配地址网段是否与所述目标节点连接的第二类孩子节点存储的地址网段匹配。
2.根据权利要求1所述的方法,其特征在于,所述子节点表示至少两个位号;
所述子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于至少两个位号中第一位号的网段;所述第一位号为至少两个位号中与所述子节点连接的第一类孩子节点所表示位号相邻的位号。
3.根据权利要求1所述的方法,其特征在于,所述获取待匹配地址网段之前,所述方法还包括:
按照一个比特位与一个子节点一一对应的方式,将地址网段包括的比特位的位号存储至与所述比特位的位号对应的子节点中,得到树形结构,所述树形结构中每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻;
获取第一已知地址网段,从所述树形结构中,查找所表示位号与所述第一已知地址网段包括的前缀长度一致的子节点;
为查找到的子节点增加与子节点连接的第二类孩子节点,并将所述第一已知地址网段存储至增加的第二类孩子节点中;
从与所述树形结构包括的根节点连接的第一层子节点或第一孩子节点中,确定起始合并节点,并以第一子节点为结束合并节点,所述第一子节点为具有第二类孩子节点的子节点,第一孩子节点为与第一子节点连接的第一类孩子节点;
对每一对起始合并节点和结束合并节点之间的子节点进行节点合并。
4.根据权利要求3所述的方法,其特征在于,所述获取第一已知地址网段之前,还包括:
以前缀长度为第一优先级,按照升序方式对多个已知地址网段进行排序;
当存在多个已知地址网段具有相同的第一优先级时,以地址网段的IP地址为第二优先级,按照升序方式,对具有相同第一优先级的多个已知地址网段进行排序,获得所述多个已知地址网段的排序结果;
所述获取第一已知地址网段,从所述树形结构中,查找所表示位号与所述第一已知地址网段包括的前缀长度一致的子节点,包括:
从所述排序结果中获得第一已知地址网段;
从所述树形结构中第二子节点的下一层子节点开始,查找所表示位号与所述第一已知地址网段的前缀长度一致的子节点,所述第二子节点为所述树形结构中所表示位号与第二已知地址网段的前缀长度一致的子节点,第二已知地址网段为所述排序结果中所述第一已知地址网段的前一地址网段。
5.一种网段查找装置,其特征在于,通过多个已知地址网段预先创建树形结构,所述树形结构中每一子节点表示地址网段中至少一个比特位的位号,每一子节点所表示的位号,与,所述每一子节点连接的第一类孩子节点所表示的位号相邻,所述每一子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于所述每一子节点所表示位号的网段;
所述装置包括:
网段获取模块,用于获取待匹配地址网段;
节点查找模块,用于从所述树形结构中,查找所表示位号与所述待匹配地址网段的前缀长度一致的目标节点;
网段判断模块,用于判断所述待匹配地址网段是否与所述目标节点连接的第二类孩子节点存储的地址网段匹配。
6.根据权利要求5所述的装置,其特征在于,所述子节点表示至少两个位号;
所述子节点连接的第二类孩子节点存储所述多个已知地址网段中前缀长度等于至少两个位号中第一位号的网段;所述第一位号为至少两个位号中与所述子节点连接的第一类孩子节点所表示位号相邻的位号。
7.根据权利要求5所述的装置,其特征在于,在所述网段获取模块获取所述待匹配地址网段之前,所述装置还包括:树创建模块;
其中,所述树创建模块,包括:
树获得单元,用于按照一个比特位与一个子节点一一对应的方式,将地址网段包括的比特位的位号存储至与所述比特位的位号对应的子节点中,得到树形结构,所述树形结构中每一子节点所表示的位号与子节点连接的第一类孩子节点所表示的位号相邻;
节点查找单元,用于获取第一已知地址网段,从所述树形结构中,查找所表示位号与所述第一已知地址网段包括的前缀长度一致的子节点;
网段存储单元,用于为查找到的子节点增加与子节点连接的第二类孩子节点,并将所述第一已知地址网段存储至增加的第二类孩子节点中;
节点确定单元,用于从与所述树形结构包括的根节点连接的第一层子节点或第一孩子节点中,确定起始合并节点,并以第一子节点为结束合并节点,所述第一子节点为第二类孩子节点的子节点,第一孩子节点为与第一子节点连接的第一类孩子节点;
节点合并单元,用于对每一对起始合并节点和结束合并节点之间的子节点进行节点合并。
8.根据权利要求7所述的装置,其特征在于,所述树创建模块还包括:
网段排序单元,用于在所述节点查找单元查找所表示位号与已知地址网段的前缀长度一致的子节点之前,以前缀长度为第一优先级,按照升序方式对多个已知地址网段进行排序;当存在多个已知地址网段具有相同的第一优先级时,以地址网段的IP地址为第二优先级,按照升序方式,对具有相同第一优先级的多个已知地址网段进行排序,获得所述多个已知地址网段的排序结果;
所述节点查找单元,具体用于:
从所述排序结果中获得第一已知地址网段;
从所述树形结构中第二子节点的下一层子节点开始,查找所表示位号与所述第一已知地址网段的前缀长度一致的子节点,所述第二子节点为:所述树形结构中所表示位号与第二已知地址网段的前缀长度一致的子节点,第二已知地址网段为:所述排序结果中所述第一已知地址网段的前一地址网段。
9.一种电子设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现权利要求1-4任一所述的方法步骤。
10.一种机器可读存储介质,其特征在于,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现权利要求1-4任一所述的方法步骤。
CN201910251741.XA 2019-03-29 2019-03-29 网段查找方法及装置 Active CN109951393B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910251741.XA CN109951393B (zh) 2019-03-29 2019-03-29 网段查找方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910251741.XA CN109951393B (zh) 2019-03-29 2019-03-29 网段查找方法及装置

Publications (2)

Publication Number Publication Date
CN109951393A CN109951393A (zh) 2019-06-28
CN109951393B true CN109951393B (zh) 2021-07-30

Family

ID=67013073

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910251741.XA Active CN109951393B (zh) 2019-03-29 2019-03-29 网段查找方法及装置

Country Status (1)

Country Link
CN (1) CN109951393B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110505322B (zh) * 2019-08-28 2022-07-01 杭州迪普科技股份有限公司 一种ip地址段查找方法及装置
CN111541487B (zh) * 2020-04-22 2021-12-24 四川思创优光科技有限公司 多模光纤激光器的组网方法及多模光纤激光器
CN113609125B (zh) * 2021-06-24 2023-10-27 北京华云安信息技术有限公司 Ip地址匹配方法、装置、设备和计算机可读存储介质
CN113824814B (zh) * 2021-09-23 2023-04-25 新华三信息安全技术有限公司 一种转发表的地址匹配方法、装置、网络设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080109117A (ko) * 2007-06-12 2008-12-17 건국대학교 산학협력단 Ip 패킷의 라우팅을 위한 세그먼트 트리 구성 장치 및방법
CN102045412A (zh) * 2010-12-28 2011-05-04 赛尔网络有限公司 IPv6地址前缀压缩存储方法及设备
CN102867059A (zh) * 2012-09-19 2013-01-09 浪潮(北京)电子信息产业有限公司 一种树形结构中数据的处理方法和系统
CN103107945A (zh) * 2013-01-10 2013-05-15 中国科学院信息工程研究所 一种快速查找ipv6路由的系统及方法
CN105141525A (zh) * 2015-06-30 2015-12-09 杭州华三通信技术有限公司 IPv6路由查找方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080109117A (ko) * 2007-06-12 2008-12-17 건국대학교 산학협력단 Ip 패킷의 라우팅을 위한 세그먼트 트리 구성 장치 및방법
CN102045412A (zh) * 2010-12-28 2011-05-04 赛尔网络有限公司 IPv6地址前缀压缩存储方法及设备
CN102867059A (zh) * 2012-09-19 2013-01-09 浪潮(北京)电子信息产业有限公司 一种树形结构中数据的处理方法和系统
CN103107945A (zh) * 2013-01-10 2013-05-15 中国科学院信息工程研究所 一种快速查找ipv6路由的系统及方法
CN105141525A (zh) * 2015-06-30 2015-12-09 杭州华三通信技术有限公司 IPv6路由查找方法及装置

Also Published As

Publication number Publication date
CN109951393A (zh) 2019-06-28

Similar Documents

Publication Publication Date Title
CN109951393B (zh) 网段查找方法及装置
CN109617927B (zh) 一种匹配安全策略的方法及装置
CN109951495B (zh) 网段查找方法及装置
CN111355697B (zh) 僵尸网络域名家族的检测方法、装置、设备及存储介质
WO2019160128A1 (ja) ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
CN110120942A (zh) 安全策略规则匹配方法及装置、防火墙设备及介质
CN108965337B (zh) 规则匹配方法、装置、防火墙设备及机器可读存储介质
CN102045360A (zh) 恶意网址库的处理方法及装置
US7805393B1 (en) Assigning encoded state values to a search tree according to failure chains
CA2936605C (en) Method and apparatus for generating a plurality of indexed data fields
US7610269B1 (en) Method and apparatus for constructing a failure tree from a search tree
Feng Finding k shortest simple paths in directed graphs: A node classification algorithm
JP6467540B1 (ja) ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
CN111107181B (zh) Nat规则匹配方法、装置、电子设备及存储介质
US10681007B2 (en) String search and matching for gate functionality
CN110012124B (zh) 一种对网络地址范围段进行拆分的方法及装置
CN109905413A (zh) 一种ip地址的匹配方法及装置
CN110659019B (zh) 参数校验方法、装置和服务器
CN113726786B (zh) 异常访问行为的检测方法、装置、存储介质及电子设备
Dong et al. Fakeedge: Alleviate dataset shift in link prediction
CN110474929B (zh) 一种冗余规则检测方法及装置
RU2622629C2 (ru) Способ поиска пути по дереву
CN108696418B (zh) 一种社交网络中隐私保护方法及装置
RU2613034C2 (ru) Быстрое установление соответствия при адресации по содержанию (контенту)
CN107315829A (zh) 一种实时数据库中基于规则集的快速压缩方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant