首页 / 专利库 / 电脑零配件 / 固件 / 软件 / NAT规则匹配方法、装置、电子设备及存储介质

NAT规则匹配方法、装置、电子设备及存储介质

阅读:159发布:2020-05-08

专利汇可以提供NAT规则匹配方法、装置、电子设备及存储介质专利检索,专利查询,专利分析的服务。并且本 申请 提供一种NAT规则匹配方法、装置、 电子 设备及存储介质,涉及 计算机网络 技术领域。所述方法包括:基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配 节点 ,所述规则前缀树为以规则前缀表项中的前缀值作为叶 子节点 ,以二进制形式按照由高位到低位的顺序构造的Patricia前缀树;将所述匹配节点下挂载的规则前缀表项和所述匹配节点的祖先节点下挂载的规则前缀表项作为匹配表项;基于所述匹配表项对应的NAT规则的匹配参数在所述匹配表项中确定目标表项,返回所述目标表项对应的NAT规则。该方法通过规则前缀树进行NAT规则匹配,提高了NAT规则匹配的效率。,下面是NAT规则匹配方法、装置、电子设备及存储介质专利的具体信息内容。

1.一种NAT规则匹配方法,其特征在于,所述方法包括:
基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点,所述规则前缀树为以规则前缀表项中的前缀值作为叶子节点,以二进制形式按照由高位到低位的顺序构造的Patricia前缀树;
将所述匹配节点下挂载的规则前缀表项和所述匹配节点的祖先节点下挂载的规则前缀表项作为匹配表项;
基于所述匹配表项对应的NAT规则的匹配参数在所述匹配表项中确定目标表项,返回所述目标表项对应的NAT规则。
2.根据权利要求1所述的方法,其特征在于,所述规则前缀树包括源地址规则前缀树和目的地址规则前缀树,所述基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点,包括:
基于最长前缀匹配规则,确定所述源地址规则前缀树中与报文的源地址匹配的匹配节点;
基于最长前缀匹配规则,确定所述目的地址规则前缀树中与报文的目的地址匹配的匹配节点。
3.根据权利要求1所述的方法,其特征在于,所述基于所述匹配表项对应的NAT规则的匹配参数在所述匹配表项中确定目标表项,包括:
在所述匹配表项中存在与所述报文的所有匹配参数均匹配的目标匹配表项时,确定所述报文精确命中所述目标匹配表项,将所述目标匹配表项作为所述目标表项,返回所述目标表项对应的NAT规则,其中,所述目标匹配表项对应的NAT规则的匹配参数与所述报文相匹配;
在所述匹配表项中不存在与所述报文的所有匹配参数均匹配的目标匹配表项时,返回空。
4.根据权利要求2所述的方法,其特征在于,在所述基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点之前,所述方法还包括:
将NAT规则转换为规则前缀表项,每个规则前缀表项中包括源地址公共前缀、目的地址公共前缀和对应的NAT规则;
基于所有规则前缀表项的源地址公共前缀和目的地址公共前缀,分别构建所述源地址规则前缀树和所述目的地址规则前缀树;
将每个规则前缀表项挂载在所述源地址规则前缀树或所述目的地址规则前缀树每个规则前缀表项对应的目标节点下,其中,每个规则前缀表项只能选择一个规则前缀树进行挂载。
5.根据权利要求4所述的方法,其特征在于,所述将每个规则前缀表项挂载在所述源地址规则前缀树或所述目的地址规则前缀树对应的目标节点下,包括:
确定第一规则前缀表项的源地址公共前缀在所述源地址规则前缀树中对应的第一叶子节点,以及所述第一规则前缀表项的目的地址公共前缀在所述目的地址规则前缀树中对应的第二叶子节点;
将所述第一叶子节点和所述第二叶子节点中已挂载规则前缀表项最少的叶子节点作为所述第一规则前缀表项对应的第一目标节点,所述第一规则前缀表项为所有规则前缀表项中的任意一个;
将所述第一规则前缀表项挂载在所述第一目标节点下。
6.根据权利要求5所述的方法,其特征在于,所述将所述第一规则前缀表项挂载在所述第一目标节点下,包括:
在所述第一目标节点下已挂载其他规则前缀表项时,基于所述第一规则前缀表项和所述其他规则前缀表项的预设优先级将所述第一规则前缀表项加入所述其他规则前缀表项中。
7.根据权利要求4所述的方法,其特征在于,所述基于所有规则前缀表项的源地址公共前缀和目的地址公共前缀,分别构建所述源地址规则前缀树和所述目的地址规则前缀树,包括:
以所有规则前缀表项中的每个规则前缀表项的源地址公共前缀作为叶子节点,生成所述源地址规则前缀树;
以所有规则前缀表项中的每个规则前缀表项的目的地址公共前缀作为叶子节点,生成所述目的地址规则前缀树。
8.一种NAT规则匹配装置,其特征在于,所述装置包括:
节点匹配模,用于基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点,所述规则前缀树为以规则前缀表项中的前缀值作为叶子节点,以二进制形式按照由高位到低位的顺序构造的Patricia前缀树;
表项匹配模块,用于将所述匹配节点下挂载的规则前缀表项和所述匹配节点的祖先节点下挂载的规则前缀表项作为匹配表项;
规则匹配模块,用于所述匹配表项对应的NAT规则的匹配参数在所述匹配表项中确定目标表项,返回所述目标表项对应的NAT规则。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-7中任一项所述方法中的步骤。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-7任一项所述方法中的步骤。

说明书全文

NAT规则匹配方法、装置、电子设备及存储介质

技术领域

[0001] 本申请涉及计算机网络技术领域,具体而言,涉及一种NAT规则匹配方法、装置、电子设备及存储介质。

背景技术

[0002] 随着网络技术的发展,当前网络攻击越来越多,网络安全设备大量被开发出来并应用到实际的环境中。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信时,可使用NAT(Network Address Translation,网络地址转换方法)规则,其作为常用的规则被大量的部署在网络中,NAT规则主要用来解决IPv4地址不足的问题,并提供一种隐藏私有网络IP地址的功能。所以在网络通信和安全网关上部署的数量比较大,随之而来的就是匹配效率问题。
[0003] 现有的NAT规则匹配方式可以完成逐条匹配,但效率很差。在通信设备和安全网关设备中配置大量NAT规则的时候,设备性能下降明显,当NAT规则达到一定规模后,NAT规则匹配将成为网络设备的性能瓶颈发明内容
[0004] 有鉴于此,本申请实施例的目的在于提供一种NAT规则匹配方法、装置、电子设备及存储介质,以改善现有技术中存在的NAT规则匹配效率较差的问题。
[0005] 本申请实施例提供了一种NAT规则匹配方法,所述方法包括:基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点,所述规则前缀树为以规则前缀表项中的前缀值作为叶子节点,以二进制形式按照由高位到低位的顺序构造的Patricia前缀树;将所述匹配节点下挂载的规则前缀表项和所述匹配节点的祖先节点下挂载的规则前缀表项作为匹配表项;基于所述匹配表项对应的NAT规则的匹配参数在所述匹配表项中确定目标表项,返回所述目标表项对应的NAT规则。
[0006] 在上述实现方式中,将NAT规则匹配与规则前缀树中的节点匹配相结合,可以有效的减少需要匹配的NAT规则数,降低NAT规则匹配对设备运算资源的消耗,提高了规则匹配效率,有效的解决设备中配置大量NAT规则的时候,设备性能下降问题。
[0007] 可选地,所述规则前缀树包括源地址规则前缀树和目的地址规则前缀树,所述基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点,包括:基于最长前缀匹配规则,确定所述源地址规则前缀树中与报文的源地址匹配的匹配节点;基于最长前缀匹配规则,确定所述目的地址规则前缀树中与报文的目的地址匹配的匹配节点。
[0008] 在上述实现方式中,在以二进制形式按照由高位到低位的顺序构造的Patricia前缀树中以最长前缀匹配规则进行报文的源地址与源地址规则前缀树的匹配,以及报文的目的地址与目的地址规则前缀树的匹配,能够基于前缀迅速确定报文匹配的树节点,从而有利于快速、准确地匹配NAT规则。
[0009] 可选地,所述基于所述匹配表项对应的NAT规则的匹配参数在所述匹配表项中确定目标表项,包括:在所述匹配表项中存在与所述报文的所有匹配参数均匹配的目标匹配表项时,确定所述报文精确命中所述目标匹配表项,将所述目标匹配表项作为所述目标表项,返回所述目标表项对应的NAT规则,其中,所述目标匹配表项对应的NAT规则的匹配参数与所述报文相匹配;在所述匹配表项中不存在与所述报文的所有匹配参数均匹配的目标匹配表项时,返回空。
[0010] 在上述实现方式中,在精确命中目标匹配表项时,所有优先级低于它的匹配表项,都无需再进行NAT规则匹配,提高了匹配效率。
[0011] 可选地,在所述基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点之前,所述方法还包括:将NAT规则转换为规则前缀表项,每个规则前缀表项中包括源地址公共前缀、目的地址公共前缀和对应的NAT规则;基于所有规则前缀表项的源地址公共前缀和目的地址公共前缀,分别构建所述源地址规则前缀树和所述目的地址规则前缀树;将每个规则前缀表项挂载在所述源地址规则前缀树或所述目的地址规则前缀树每个规则前缀表项对应的目标节点下,其中,每个规则前缀表项只能选择一个规则前缀树进行挂载。
[0012] 在上述实现方式中,将NAT规则转换为规则前缀表项后基于其进行源地址规则前缀树和目的地址规则前缀树的构建,从而通过多个规则前缀树避免出现单个NAT规则前缀树时相同前缀的规则过多的问题,提高了NAT规则匹配准确性。
[0013] 可选地,所述将每个规则前缀表项挂载在所述源地址规则前缀树或所述目的地址规则前缀树对应的目标节点下,包括:确定第一规则前缀表项的源地址公共前缀在所述源地址规则前缀树中对应的第一叶子节点,以及所述第一规则前缀表项的目的地址公共前缀在所述目的地址规则前缀树中对应的第二叶子节点;将所述第一叶子节点和所述第二叶子节点中已挂载规则前缀表项最少的叶子节点作为所述第一规则前缀表项对应的第一目标节点,所述第一规则前缀表项为所有规则前缀表项中的任意一个;将所述第一规则前缀表项挂载在所述第一目标节点下。
[0014] 在上述实现方式中,在源地址规则前缀树和目的地址规则前缀树中选择已挂载规则前缀表项最少的一个进行新规则前缀表项的挂载,能够实现不同规则前缀树中规则前缀表项挂载数量的平衡性,从而提高规则前缀树的节点匹配的效率。
[0015] 可选地,所述将所述第一规则前缀表项挂载在所述第一目标节点下,包括:在所述第一目标节点下已挂载其他规则前缀表项时,基于所述第一规则前缀表项和所述其他规则前缀表项的预设优先级将所述第一规则前缀表项加入所述其他规则前缀表项中。
[0016] 在上述实现方式中,在进行规则前缀表项的挂载时基于优先级进行排列,能够在报文精确命中某一规则前缀表项时,所有优先级低于它的匹配表项,都无需再进行NAT规则匹配,提高了匹配效率。
[0017] 可选地,所述基于所有规则前缀表项的源地址公共前缀和目的地址公共前缀,分别构建所述源地址规则前缀树和所述目的地址规则前缀树,包括:以所有规则前缀表项中的每个规则前缀表项的源地址公共前缀作为叶子节点,生成所述源地址规则前缀树;以所有规则前缀表项中的每个规则前缀表项的目的地址公共前缀作为叶子节点,生成所述目的地址规则前缀树。
[0018] 在上述实现方式中,以规则前缀表项中的源地址公共前缀和目的地址公共前缀作为叶子节点生成规则前缀树,能够保证每个规则前缀表项都能有对应的节点进行挂载。
[0019] 本申请实施例还提供了一种NAT规则匹配装置,所述装置包括:节点匹配模,用于基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点,所述规则前缀树为以规则前缀表项中的前缀值作为叶子节点,以二进制形式按照由高位到低位的顺序构造的Patricia前缀树;表项匹配模块,用于将所述匹配节点下挂载的规则前缀表项和所述匹配节点的祖先节点下挂载的规则前缀表项作为匹配表项;规则匹配模块,用于基于所述匹配表项对应的NAT规则的匹配参数在所述匹配表项中确定目标表项,返回所述目标表项对应的NAT规则。
[0020] 在上述实现方式中,将NAT规则匹配与规则前缀树中的节点匹配相结合,可以有效的降低需要匹配的NAT规则数,降低NAT规则匹配对设备运算资源的消耗,提高了规则匹配效率,有效的解决设备中配置大量NAT规则的时候,设备性能下降问题。
[0021] 可选地,所述规则前缀树包括源地址规则前缀树和目的地址规则前缀树,所述节点匹配模块具体用于:基于最长前缀匹配规则,确定所述源地址规则前缀树中与报文的源地址匹配的匹配节点;基于最长前缀匹配规则,确定所述目的地址规则前缀树中与报文的目的地址匹配的匹配节点。
[0022] 在上述实现方式中,在以二进制形式按照由高位到低位的顺序构造的Patricia前缀树中以最长前缀匹配规则进行报文的源地址与源地址规则前缀树的匹配,以及报文的目的地址与目的地址规则前缀树的匹配,能够基于前缀迅速确定报文匹配的树节点,从而有利于快速、准确地匹配NAT规则。
[0023] 可选地,所述规则匹配模块具体用于:在所述匹配表项中存在与所述报文的所有匹配参数均匹配的目标匹配表项时,确定所述报文精确命中所述目标匹配表项,将所述目标匹配表项作为所述目标表项,返回所述目标表项对应的NAT规则,其中,所述目标匹配表项对应的NAT规则的匹配参数与所述报文相匹配;在所述匹配表项中不存在与所述报文的所有匹配参数均匹配的目标匹配表项时,返回空。
[0024] 在上述实现方式中,在精确命中目标匹配表项时,所有优先级低于它的匹配表项,都无需再进行NAT规则匹配,提高了匹配效率。
[0025] 可选地,所述NAT规则匹配装置还包括:前缀树构建模块,用于将NAT规则转换为规则前缀表项,每个规则前缀表项中包括源地址公共前缀、目的地址公共前缀和对应的NAT规则;基于所有规则前缀表项的源地址公共前缀和目的地址公共前缀,分别构建所述源地址规则前缀树和所述目的地址规则前缀树;将每个规则前缀表项挂载在所述源地址规则前缀树或所述目的地址规则前缀树每个规则前缀表项对应的目标节点下,其中,每个规则前缀表项只能选择一个规则前缀树进行挂载。
[0026] 在上述实现方式中,将NAT规则转换为规则前缀表项后基于其进行源地址规则前缀树和目的地址规则前缀树的构建,从而通过多个规则前缀树避免出现单个NAT规则前缀树时相同前缀的规则过多的问题,提高了NAT规则匹配准确性。
[0027] 可选地,所述前缀树构建模块具体用于:确定第一规则前缀表项的源地址公共前缀在所述源地址规则前缀树中对应的第一叶子节点,以及所述第一规则前缀表项的目的地址公共前缀在所述目的地址规则前缀树中对应的第二叶子节点;将所述第一叶子节点和所述第二叶子节点中已挂载规则前缀表项最少的叶子节点作为所述第一规则前缀表项对应的第一目标节点,所述第一规则前缀表项为所有规则前缀表项中的任意一个;将所述第一规则前缀表项挂载在所述第一目标节点下。
[0028] 在上述实现方式中,在源地址规则前缀树和目的地址规则前缀树中选择已挂载规则前缀表项最少的一个进行新规则前缀表项的挂载,能够实现不同规则前缀树中规则前缀表项挂载数量的平衡性,从而提高规则前缀树的节点匹配的效率。
[0029] 可选地,所述前缀树构建模块具体用于:在所述第一目标节点下已挂载其他规则前缀表项时,基于所述第一规则前缀表项和所述其他规则前缀表项的预设优先级将所述第一规则前缀表项加入所述其他规则前缀表项中。
[0030] 在上述实现方式中,在进行规则前缀表项的挂载时基于优先级进行排列,能够在报文精确命中某一规则前缀表项时,所有优先级低于它的匹配表项,都无需再进行NAT规则匹配,提高了匹配效率。
[0031] 可选地,所述前缀树构建模块具体用于:以所有规则前缀表项中的每个规则前缀表项的源地址公共前缀作为叶子节点,生成所述源地址规则前缀树;以所有规则前缀表项中的每个规则前缀表项的目的地址公共前缀作为叶子节点,生成所述目的地址规则前缀树。
[0032] 在上述实现方式中,以规则前缀表项中的源地址公共前缀和目的地址公共前缀作为叶子节点生成规则前缀树,能够保证每个规则前缀表项都能有对应的节点进行挂载。
[0033] 本申请实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行上述任一实现方式中的步骤。
[0034] 本申请实施例还提供了一种可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一实现方式中的步骤。附图说明
[0035] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0036] 图1为本申请实施例提供的一种规则前缀树构建步骤的流程示意图;
[0037] 图2为本申请实施例提供的一种源地址规则前缀树的结构示意图;
[0038] 图3为本申请实施例提供的一种目的地址规则前缀树的结构示意图;
[0039] 图4为本申请实施例提供的一种挂载规则前缀表项的源地址规则前缀树的结构示意图;
[0040] 图5为本申请实施例提供的一种挂载规则前缀表项的目的地址规则前缀树的结构示意图;
[0041] 图6为本申请实施例提供的一种NAT规则匹配方法的流程示意图;
[0042] 图7为本申请实施例提供的一种NAT规则匹配装置的模块示意图。
[0043] 图标:30-NAT规则匹配装置;31-节点匹配模块;32-表项匹配模块;33-规则匹配模块。

具体实施方式

[0044] 下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
[0045] 经本申请人研究发现,NAT规则匹配效率低下的原因是当存在大规模的NAT规则时,需要匹配的NAT规则数过大,导致效率低下。
[0046] 具体地,NAT的作用就是报文在内网与外网间互通时,对报文中的源地址、目的地址(例如源IP地址、目的IP地址)进行转换,而NAT规则匹配是将报文与NAT规则参数进行匹配,确定是否需要对报文中的地址进行转换。
[0047] 为了解决上述问题,本申请实施例提供了一种NAT规则匹配方法。而在采用NAT规则匹配方法中的匹配方式进行NAT规则匹配之前,NAT规则匹配方法在进行NAT匹配前需要先构建规则前缀树,因此NAT规则匹配方法也包括规则前缀树的构建步骤。因此请参考图1,图1为本申请实施例提供的一种规则前缀树构建步骤的流程示意图。该规则前缀树构建步骤可以具体包括:
[0048] 步骤S12:将NAT规则转换为规则前缀表项,每个规则前缀表项中包括源地址公共前缀、目的地址公共前缀和对应的NAT规则。
[0049] 规则前缀表项包括源地址公共前缀、目的地址公共前缀和对应NAT规则。其中,源地址公共前缀指的是NAT规则中转换前的源地址的公共前缀地址,目的地址公共前缀指的是NAT规则中的转换前目的地址的公共前缀地址。例如NAT规则A的转换前的源地址为“192.168.20.20”、转换前的目的地址为“192.168.1.36”,则NAT规则转换为规则前缀表项A_P后的源地址公共前缀为“192.168.20.20”、目的地址公共前缀为“192.168.1.36”。
[0050] 应当理解的是,在报文的转换前的源地址或目的地址没有任何限制时,将其转换为公共前缀“0.0.0.0”。
[0051] NAT规则可以包括端口匹配关系、报文接收接口匹配关系等,属于匹配参数。
[0052] 步骤S14:基于所有规则前缀表项的源地址公共前缀和目的地址公共前缀,分别构建源地址规则前缀树和目的地址规则前缀树。
[0053] 作为一种实施方式,规则前缀树为以规则前缀表项中的前缀值作为叶子节点,以二进制形式按照由高位到低位的顺序构造的Patricia前缀树。
[0054] 具体地,步骤S14可以包括如下子步骤:
[0055] 步骤S142:以所有规则前缀表项中的每个规则前缀表项的源地址公共前缀作为叶子节点,生成源地址规则前缀树。
[0056] 步骤S144:以所有规则前缀表项中的每个规则前缀表项的目的地址公共前缀作为叶子节点,生成目的地址规则前缀树。
[0057] 以具体示例进行说明,该具体示例中存在规则前缀表项A_P、B_P、C_P、D_P、E_P、F_P,A_P的源地址公共前缀为“192.168.20.20”、目的地址公共前缀为“192.168.1.36”,B_P的源地址公共前缀为“192.168.20.20”、目的地址公共前缀为“192.168.1.40”,C_P的源地址公共前缀为“192.168.0.0”、目的地址公共前缀为“0.0.0.0”,D_P的源地址公共前缀为“192.168.20.18”、目的地址公共前缀为“192.168.1.128”,E_P的源地址公共前缀为“192.168.20.18”、目的地址公共前缀为“192.168.1.40”,F_P的源地址公共前缀为“0.0.0.0”、目的地址公共前缀为“0.0.0.0”,则请参考图2和图3,图2为本申请实施例提供的一种源地址规则前缀树的结构示意图,图3为本申请实施例提供的一种目的地址规则前缀树的结构示意图,图2和图3中规则前缀树中每个节点的“/”后的数字为公共前缀长度,公共前缀长度是公共前缀地址以二进制形式从高位到低位有效比特位的数量,具体地,公共前缀长度表示子节点的相同的公共前缀的长度。
[0058] 应当理解的是,本实施例中基于源地址公共前缀和目的地址公共前缀分别建立了不同的规则前缀树,可以解决单个NAT规则前缀树时相同前缀的规则过多的问题。
[0059] 步骤S16:将每个规则前缀表项挂载在源地址规则前缀树或目的地址规则前缀树每个规则前缀表项对应的目标节点下。
[0060] 其中,每个规则前缀表项只能选择一个规则前缀树进行挂载,以实现规则前缀表项的均衡挂载与匹配。
[0061] 应当理解的是,在具有源地址规则前缀树和目的地址规则前缀树时,可以通过均衡挂载来平衡每个规则前缀树的匹配任务量,避免任务量的不均衡分配,则步骤S16可以通过如下子步骤实现均衡挂载:
[0062] 步骤S162:确定第一规则前缀表项的源地址公共前缀在源地址规则前缀树中对应的第一叶子节点,以及第一规则前缀表项的目的地址公共前缀在目的地址规则前缀树中对应的第二叶子节点。
[0063] 步骤S164:将第一叶子节点和第二叶子节点中已挂载规则前缀表项最少的叶子节点作为第一规则前缀表项对应的第一目标节点,第一规则前缀表项为所有规则前缀表项中的任意一个。
[0064] 步骤S166:将第一规则前缀表项挂载在第一目标节点下。
[0065] 继续以上述具体示例进行说明,基于A_P的源地址公共前缀为“192.168.20.20”先在源地址规则前缀树中进行匹配,其对应的节点为“192.168.20.20/30”且该节点下已挂载规则前缀表项为0,则将A_P挂载在节点“192.168.20.20/30”下。基于B_P的源地址公共前缀为“192.168.20.20”先在源地址规则前缀树中进行匹配,其对应的节点为“192.168.20.20/30”且该节点下已挂载规则前缀表项为1,然后基于B_P的目的地址公共前缀为“192.168.1.40”在目的地址规则前缀树中进行匹配,其对应的节点为“192.168.1.40/29”且该节点下已挂载规则前缀表项为0,节点“192.168.1.40/29”已挂载规则前缀表项数量更少,则将B_P挂载在节点“192.168.1.40/29”下。
[0066] 可选地,在某规则前缀表项的源地址公共前缀和目的地址公共前缀均不固定时,例如其标识为“any”时,可以将其挂载至源地址规则前缀树的节点下。
[0067] 作为一种可选的实施方式,为了在报文精确命中某个节点挂载的规则前缀表项时不需要再对优先级低于命中前缀表项的其他匹配前缀表项进行匹配,提高NAT规则的整体匹配效率,本实施例还基于优先级进行规则前缀表项的挂载,其具体步骤可以包括:在第一目标节点下已挂载其他规则前缀表项时,基于第一规则前缀表项和其他规则前缀表项的预设优先级将第一规则前缀表项加入其他规则前缀表项中。
[0068] 以前面出现的具体示例中的规则前缀表项A_P、B_P、C_P、D_P、E_P、F_P为例,请参考图4和图5,图4为本申请实施例提供的一种挂载规则前缀表项的源地址规则前缀树的结构示意图,图5为本申请实施例提供的一种挂载规则前缀表项的目的地址规则前缀树的结构示意图。图4和图5中规则前缀树中每个节点的“/”后的数字为公共前缀长度。
[0069] 应当理解的是,本实施例中先进行源地址规则前缀树的匹配,在其他实施例中也可以先进行目的地址规则前缀树的匹配,先后顺序不是固定的。
[0070] 在完成源地址规则前缀树和目的地址规则前缀树的构建后,在接收到报文需要进行NAT规则匹配时,则基于报文的源地址、目的地址或其他匹配参数在地址规则前缀树和目的地址规则前缀树中进行NAT规则匹配。请参考图6,图6为本申请实施例提供的一种NAT规则匹配方法的流程示意图。该NAT规则匹配方法的具体步骤可以如下:
[0071] 步骤S22:基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点。
[0072] 其中,最长前缀匹配规则即选择源地址规则前缀树中源地址前缀包含报文的源地址,且公共前缀值长度最大的源地址前缀。
[0073] 步骤S24:将匹配节点下挂载的规则前缀表项和匹配节点的祖先节点下挂载的规则前缀表项作为匹配表项。
[0074] 通过对祖先节点下的规则前缀列表的匹配,保证NAT匹配的完整性和适用性。
[0075] 步骤S26:基于匹配表项对应的NAT规则的匹配参数在匹配表项中确定目标表项,返回目标表项对应的NAT规则。
[0076] 在匹配表项中存在与报文的所有匹配参数均匹配的目标匹配表项时,确定报文精确命中目标匹配表项,将目标匹配表项作为目标表项,返回目标表项对应的NAT规则,其中,目标匹配表项对应的NAT规则的匹配参数与报文相匹配。
[0077] 应当理解的是,在报文与对应的匹配表项的NAT规则的匹配参数都不匹配时,即无法精确命中,返回空。
[0078] 以图4、图5中的源地址规则前缀树和目的地址规则前缀树为例,在接收到源地址为192.168.20.20(前缀长度30),目的地址为192.168.1.40(前缀长度29)的报文时,先匹配源地址前缀树中的最长前缀节点:182.168.20.20/30节点,然后分别遍历匹配182.168.20.20/30节点、192.168.20.16/29节点、192.168.0.0/13节点、0.0.0.0/0节点下的前缀表项对应的NAT规则。然后匹配目的地址前缀树中的最长前缀节点192.168.1.40/29节点,然后分别遍历匹配192.168.1.40/29节点、192.168.1.32/28节点、192.168.1.0/24节点、0.0.0.0/0节点下的前缀表项对应的NAT规则。因此,该报文需要匹配的NAT规则有A、C、F、B。在没有优先级区分时,需要进行NAT规则A、C、F、B的NAT匹配;在A设置的优先级最高且基于入接口、端口等匹配参数确定报文精确命中A时,仅对NAT规则A进行NAT匹配。
[0079] 继续以图4、图5中的源地址规则前缀树和目的地址规则前缀树为例,接收到源地址为192.168.64.20(前缀长度为30),目的地址为192.168.1.128(前缀长度为25)的报文时,先匹配源地址前缀树中的最长前缀节点:182.168.0.0/13节点,然后分别遍历匹配182.168.0.0/13节点、0.0.0.0/0节点下的前缀表项对应的NAT规则。再匹配目的地址前缀树中的最长前缀节点192.168.1.128/25节点,然后分别遍历匹配192.168.1.128/25、
192.168.1.0/24节点、0.0.0.0/0节点下的前缀表项对应的NAT规则。因此,该报文需要匹配的NAT规则有C、F。在没有优先级区分时,需要进行NAT规则C、F的NAT匹配;在C设置的优先级最高且基于入接口、端口等匹配参数确定报文精确命中C时,仅对NAT规则C进行NAT匹配。
[0080] 应当理解的是,在其他实施例中,除了源地址规则前缀树和目的地址规则前缀树,还可以构建服务规则前缀树,在源地址规则前缀树和目的地址规则前缀树的NAT匹配之外,还基于服务规则前缀树进行服务的NAT匹配。其中,其中服务公共前缀是由四层协议与目的端口计算得来。
[0081] 本实施例为了配合上述NAT规则匹配方法,还提供了一种NAT规则匹配装置30。
[0082] 请参考图7,图7为本申请实施例提供的一种NAT规则匹配装置的模块示意图。
[0083] NAT规则匹配装置30包括:
[0084] 节点匹配模块31,用于基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点,规则前缀树为以规则前缀表项中的前缀值作为叶子节点,以二进制形式按照由高位到低位的顺序构造的Patricia前缀树;
[0085] 表项匹配模块32,用于将匹配节点下挂载的规则前缀表项和匹配节点的祖先节点下挂载的规则前缀表项作为匹配表项;
[0086] 规则匹配模块33,用于基于匹配表项对应的NAT规则的匹配参数在匹配表项中确定目标表项,返回目标表项对应的NAT规则。
[0087] 可选地,规则前缀树包括源地址规则前缀树和目的地址规则前缀树,节点匹配模块31具体用于:基于最长前缀匹配规则,确定源地址规则前缀树中与报文的源地址匹配的匹配节点;基于最长前缀匹配规则,确定目的地址规则前缀树中与报文的目的地址匹配的匹配节点。
[0088] 可选地,规则匹配模块33具体用于:在匹配表项中存在与报文的所有匹配参数均匹配的目标匹配表项时,确定报文精确命中目标匹配表项,将目标匹配表项作为目标表项,返回目标表项对应的NAT规则,其中,所述目标匹配表项对应的NAT规则的匹配参数与所述报文相匹配;在匹配表项中不存在与报文的所有匹配参数均匹配的目标匹配表项时,返回空。
[0089] 可选地,NAT规则匹配装置30还包括:前缀树构建模块,用于将NAT规则转换为规则前缀表项,每个规则前缀表项中包括源地址公共前缀、目的地址公共前缀和对应的NAT规则;基于所有规则前缀表项的源地址公共前缀和目的地址公共前缀,分别构建源地址规则前缀树和目的地址规则前缀树;将每个规则前缀表项挂载在源地址规则前缀树或目的地址规则前缀树每个规则前缀表项对应的目标节点下,其中,每个规则前缀表项只能选择一个规则前缀树进行挂载。
[0090] 可选地,前缀树构建模块具体用于:确定第一规则前缀表项的源地址公共前缀在源地址规则前缀树中对应的第一叶子节点,以及第一规则前缀表项的目的地址公共前缀在目的地址规则前缀树中对应的第二叶子节点;将第一叶子节点和第二叶子节点中已挂载规则前缀表项最少的叶子节点作为第一规则前缀表项对应的第一目标节点,第一规则前缀表项为所有规则前缀表项中的任意一个;将第一规则前缀表项挂载在第一目标节点下。
[0091] 可选地,前缀树构建模块具体用于:在第一目标节点下已挂载其他规则前缀表项时,基于第一规则前缀表项和其他规则前缀表项的预设优先级将第一规则前缀表项加入其他规则前缀表项中。
[0092] 可选地,前缀树构建模块具体用于:以所有规则前缀表项中的每个规则前缀表项的源地址公共前缀作为叶子节点,生成源地址规则前缀树;以所有规则前缀表项中的每个规则前缀表项的目的地址公共前缀作为叶子节点,生成目的地址规则前缀树。
[0093] 本申请实施例还提供了一种电子设备,该电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行本实施例提供的NAT规则匹配方法中任一项所述方法中的步骤。
[0094] 应当理解是,该电子设备可以是个人电脑(personal computer,PC)、平板电脑、智能手机、个人数字助理(personal digital assistant,PDA)等具有逻辑计算功能的电子设备。
[0095] 本申请实施例还提供了一种可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行NAT规则匹配方法中的步骤。
[0096] 综上所述,本申请实施例提供了一种NAT规则匹配方法、装置、电子设备及存储介质,所述方法包括:基于最长前缀匹配规则,确定规则前缀树中与报文的地址匹配的匹配节点,所述规则前缀树为以规则前缀表项中的前缀值作为叶子节点,以二进制形式按照由高位到低位的顺序构造的Patricia前缀树;将所述匹配节点下挂载的规则前缀表项和所述匹配节点的祖先节点下挂载的规则前缀表项作为匹配表项;基于匹配参数在所述匹配表项中确定目标表项,返回所述目标表项对应的NAT规则。
[0097] 在上述实现方式中,将NAT规则匹配与规则前缀树中的节点匹配相结合,可以有效的降低需要匹配的NAT规则数,降低NAT规则匹配对设备运算资源的消耗,提高了规则匹配效率,有效的解决设备中配置大量NAT规则的时候,设备性能下降问题。
[0098] 在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0099] 另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0100] 所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。因此本实施例还提供了一种可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行区块数据存储方法中任一项所述方法中的步骤。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RanDom Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0101] 以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0102] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
[0103] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈