ip地址存储方法、装置和硬件网关
技术领域
1.本技术涉及通信领域,尤其涉及一种ip地址存储方法、装置和硬件网关。
背景技术:2.随着云网络用户对于网络容量、时延等要求的不断提高,采用软件实现云硬件网关的功能,虽然可以同时具备ipv4和ipv6报文转发能力,但是已经无法满足用户对网络性能的需求。
3.现有技术中,新一代虚拟硬件网关的核心是可编程芯片。ipv4和ipv6被存储于可编程芯片的硬件存储空间中。该可编程芯片在转发报文时具有tb/s级的网络转发速度,可以为用户提供良好的用户体验。
4.然而,该可编程芯片的硬件存储空间通常为几十兆的静态随机存取存储器(static random-access memory,sram)。在存储128位的ipv6地址和32位的ipv4地址时,存在硬件存储空间使用效率低的问题。
技术实现要素:5.本技术提供一种ip地址存储方法、装置和硬件网关,用以解决硬件存储空间使用效率低的问题。
6.第一方面,本技术提供一种ip地址存储方法,包括:
7.获取待处理地址,待处理地址可以为第一类型地址或者第二类型地址;
8.当待处理地址为第一类型地址时,将待处理地址输入预设哈希算法,降维得到预设位数的第一映射地址;
9.判断第一映射地址是否与硬件存储空间中存储的ip地址冲突;
10.当冲突时,根据预设规则为待处理地址分配预设位数的第二映射地址。
11.可选地,根据预设规则为待处理地址分配预设位数的第二映射地址,具体包括:
12.从索引集合中选择一个目标索引;
13.根据目标索引,确定目标索引对应的第二类型地址的地址段;
14.从第二类型地址的地址段中选择一个空闲第二类型地址作为第二映射地址。
15.可选地,方法还包括:
16.当第一映射地址与硬件存储空间中存储的ip地址不冲突时,设置第一映射地址的映射属性为哈希映射,并将第一映射地址存储到共享表中。
17.可选地,方法还包括:
18.当第一映射地址与硬件存储空间中存储的ip地址冲突时,设置第二映射地址的映射属性为冲突映射,并将待处理地址和第二映射地址存储到映射表中。
19.可选地,方法还包括:
20.当待处理地址为第二类型地址时,设置待处理地址的映射属性设置为直接映射,并将待处理地址存储到共享表中。
21.可选地,方法还包括:
22.将第二映射地址、第一映射地址、以及类型为第二类型地址的待处理地址作为地址映射表项的主键,对地址映射表项进行配置,地址映射表项包括共享表和映射表。
23.可选地,第一类型地址为ipv6地址,第二类型地址为ipv4地址。
24.可选地,方法,还包括:
25.获取访问请求,访问请求中包括访问请求的第一目标地址;
26.根据第一目标地址、预设哈希算法和地址映射表项,确定第二目标地址;
27.根据第二目标地址转发访问请求。
28.可选地,根据第一目标地址、预设哈希算法和地址映射表项,确定第二目标地址,具体包括:
29.当第一目标地址为第一类型地址时,判断地址映射表项中的映射表中是否包括第一目标地址;
30.当包括时,根据第一目标地址和映射表,确定第二目标地址,并确定映射属性为冲突映射;
31.否则,使用硬件对第一目标地址进行哈希运算,得到第二目标地址,并确定映射属性为哈希映射。
32.可选地,在根据第一目标地址、预设哈希算法和地址映射表项,确定第二目标地址之前,方法还包括:
33.当第一目标地址为第二类型地址时,确定第二目标地址为第一目标地址,并确定映射属性为直接映射。
34.第二方面,本技术提供一种ip地址存储装置,包括:
35.获取模块,用于获取待处理地址,待处理地址可以为第一类型地址或者第二类型地址;
36.处理模块,用于在待处理地址为第一类型地址时,将待处理地址输入预设哈希算法,降维得到预设位数的第一映射地址;判断第一映射地址是否与硬件存储空间中存储的ip地址冲突;在冲突时,根据预设规则为待处理地址分配预设位数的第二映射地址。
37.可选地,处理模块,具体用于:
38.从索引集合中选择一个目标索引;
39.根据目标索引,确定目标索引对应的第二类型地址的地址段;
40.从第二类型地址的地址段中选择一个空闲第二类型地址作为第二映射地址。
41.可选地,处理模块,还用于:
42.在第一映射地址与硬件存储空间中存储的ip地址不冲突时,设置第一映射地址的映射属性为哈希映射,并将第一映射地址存储到共享表中。
43.可选地,处理模块,还用于:
44.在第一映射地址与硬件存储空间中存储的ip地址冲突时,设置第二映射地址的映射属性为冲突映射,并将待处理地址和第二映射地址存储到映射表中。
45.可选地,处理模块,还用于:
46.在待处理地址为第二类型地址时,设置待处理地址的映射属性设置为直接映射,并将待处理地址存储到共享表中。
47.可选地,处理模块,还用于:
48.将第二映射地址、第一映射地址、以及类型为第二类型地址的待处理地址作为地址映射表项的主键,对地址映射表项进行配置,地址映射表项用于共享表和映射表。
49.可选地,第一类型地址为ipv6地址,第二类型地址为ipv4地址。
50.可选地,装置,还包括:
51.获取模块,用于获取访问请求,访问请求中用于访问请求的第一目标地址;
52.处理模块,用于根据第一目标地址、预设哈希算法和地址映射表项,确定第二目标地址;根据第二目标地址转发访问请求。
53.可选地,处理模块,具体用于:
54.在第一目标地址为第一类型地址时,判断地址映射表项中的映射表中是否用于第一目标地址;
55.在包括时,根据第一目标地址和映射表,确定第二目标地址,并确定映射属性为冲突映射;
56.否则,使用硬件对第一目标地址进行哈希运算,得到第二目标地址,并确定映射属性为哈希映射。
57.可选地,在根据第一目标地址、预设哈希算法和地址映射表项,确定第二目标地址之前,处理模块,还用于:
58.在第一目标地址为第二类型地址时,确定第二目标地址为第一目标地址,并确定映射属性为直接映射。
59.第三方面,本技术提供一种硬件网关,包括:存储器和处理器;
60.存储器用于存储计算机程序;处理器用于根据存储器存储的计算机程序执行第一方面及第一方面任一种可能的设计中的ip地址存储方法。
61.第四方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当硬件网关的至少一个处理器执行该计算机程序时,硬件网关执行第一方面及第一方面任一种可能的设计中的ip地址存储方法。
62.第五方面,本技术提供一种计算机程序产品,计算机程序产品包括计算机程序,当硬件网关的至少一个处理器执行该计算机程序时,硬件网关执行第一方面及第一方面任一种可能的设计中的ip地址存储方法。
63.本技术提供的ip地址存储方法,通过获取待处理地址;当该待处理地址为第一类型地址时,使用预设哈希算法,将该待处理地址降维得到预设位数的第一映射地址;当该第一映射地址出现哈希冲突时,为该待处理地址分配一个预设位数的第二映射地址;将该第一映射地址和第二映射地址存储到硬件存储空间中;当该待处理地址为第二类型地址时,直接将该待处理地址存储到硬件存储空间的手段,实现提高ip地址的存储效率的效果。
附图说明
64.为了更清楚地说明本技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
65.图1为本技术一实施例提供的一种硬件网关的应用场景示意图;
66.图2为本技术一实施例提供的一种ip地址存储方法的流程图;
67.图3为本技术另一实施例提供的一种映射关系示意图;
68.图4为本技术又一实施例提供的一种ip地址存储方法的流程图;
69.图5为本技术再一实施例提供的一种ip地址存储方法的流程图;
70.图6为本技术又一实施例提供的一种ip地址存储装置的结构示意图;
71.图7为本技术再一实施例提供的一种硬件网关的硬件结构示意图。
具体实施方式
72.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术中的附图,对本技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
73.对于商业化云网络来说,公网ip是其产品的重要组成部分,目前全球ipv4地址资源越来越紧张,路由越来越长,发展ipv6已是大势所趋,各行业对于ipv6使用诉求愈发强烈。在ipv4和ipv6地址共存的情况下,云硬件网关需要同时具备ipv4和ipv6报文转发能力。传统云网络设备均采用软件实现ip地址表项存储、报文转发等功能,软件的内存资源通常比较充裕,因此不会受到资源上的限制。然而传统网络设备转发性能有限,已经无法满足当前云网络用户对于网络容量、时延的要求。为了满足用户对于网络容量、时延的要求,使用可编程芯片的新一代虚拟网络转发设备应运而生。该新一代虚拟网络转发设备即为硬件网关。其网络转发速度在tb/s级,时延可以控制在几微秒以内,可以为云上用户提供个良好的使用体验。该硬件网关中可以包括可编程芯片。该可编程芯片的硬件存储空间通常为静态随机存取存储器(static random-access memory,sram)。该可编程芯片的硬件存储空间相对较少,通常只有几十兆。一个ipv6地址长度为128个二进制位,一个ipv4地址的长度为32个二进制位。一个包含可编程芯片的硬件网关能支持单独存储32万个ipv4地址或者8万个ipv6地址。
74.在ipv4地址和ipv6地址共存的情况下,为了保证该硬件网关的正常使用,该硬件网关中需要同时存储ipv4地址和ipv6地址,以满足需求。现有技术中,一种常用的方法是预先划分ipv4地址和ipv6地址的存储空间。然而,这种方式很难精准预测实际使用的ipv4地址和ipv6地址的比例,当线上ipv4地址和ipv6地址比例与预先划分比例有出入时,会对宝贵的硬件存储资源造成大量浪费。另一种常用的方法是将128为的ipv6地址哈希成32位的ipv4地址。硬件网关可以将哈希后的ipv6地址与ipv4地址共享表项资源,存储在一共有表项中。当哈希冲突时,硬件网关可以使用单独表项存储128位的ipv6地址。然而,该方法中的两张硬件表项中都存储了ipv6地址,使表项之间具有依赖关系,增加了硬件编程的难度,可能会导致硬件stage不足。并且该方法中共有表项和单独表项中存储的数据长度不一致,因此同样需要预先分配该两个表项的比例。该方法同样无法保证硬件资源的充分利用。因此,如何充分利用有限的硬件存储空间,以使该硬件网关可以以最大的存储效率同时存储ipv4地址和ipv6地址,是一个关键问题。
75.针对上述问题,本技术提出了一种ip地址存储方法。本技术提出的ip地址存储方
法基于可编程芯片的ipv6地址压缩,实现了可编程芯片上同时支持ipv4和ipv6的配置、存储和转发的需求。在软件层面,本技术使用预设哈希算法将ipv6地址映射成ipv4地址后进行存储。在硬件层面,本技术使用相同的预设哈希算法对访问请求中包含的第一目标地址进行哈希运算获得第二目标地址。硬件网关可以根据该第二目标地址转发该访问请求。该软、硬件层面相同的预设哈希算法的使用可以保证软、硬件的哈希结果相同。该相同的哈希算法,使该硬件网关可以直接存储哈希映射得到的第二类型地址,而不必以映射表的方式存储,从而节省了存储空间。当出现哈希冲突时,硬件网关可以在软件层面为该ipv6地址分配一个ipv4地址存储到硬件中。由于哈希冲突的几率很小,硬件只需要存储一张规格很小的映射表即可。并且,为了维护不同来源产生的ipv4地址,本方法还为每个ipv4地址赋予一个2位的映射属性。即,在本技术中,硬件网关可以将128位的ipv6地址压缩成32位的ipv4地址和2位的映射属性,从而节省了存储空间。并且,本技术所使用的方法不需要预先划分ipv4和ipv6的规格比例,最大限度地节省了硬件资源,充分利用硬件存储空间,提高了该硬件网关中ip地址的存储效率。
76.下面以具体地实施例对本技术的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
77.图1示出了本技术一实施例提供的一种硬件网关的应用场景示意图。如图1所示,其中,发送设备可以为终端设备或者其他硬件网关。该发送设备可以向硬件网关发送访问请求。当硬件网关接收到该访问请求后,可以根据该访问请求中的第一目标地址,确定接收设备。该接收设备可以为终端设备或者其他硬件网关。该第一目标地址可以为ipv4地址或者ipv6地址。该硬件网关中可以存储有地址映射表项。该地址映射表项中包括该硬件网关可以识别到的其他硬件网关的ip地址。该硬件网关可以根据该地址映射表项中记录的ip地址,定位到其他硬件网关。该硬件网关可以根据该第一目标地址和地址映射表项,确定该接收设备对应的第二目标地址。该硬件网关可以根据该第二目标地址,将该访问请求转发到该接收设备。
78.该硬件网关可以在每一次获取一待处理地址时,将该待处理地址存储到该地址映射表项中。该待处理地址可以为ipv4地址或者ipv6地址。该待处理地址为该硬件网关可以访问的其他硬件网关的ip地址。该硬件网关可以根据下述ip地址存储方法,将该待处理地址映射为预设位数的第二类型地址和2位的映射属性后,存储在该硬件网关的硬件存储空间中。
79.本技术中,以硬件网关为执行主体,执行如下实施例的ip地址存储方法。具体地,该执行主体可以为硬件网关的硬件装置,或者为硬件网关中实现下述实施例的软件应用,或者为安装有实现下述实施例的软件应用的计算机可读存储介质,或者为实现下述实施例的软件应用的代码。
80.图2示出了本技术一实施例提供的一种ip地址存储方法的流程图。在图1所示实施例的基础上,如图2所示,以硬件网关为执行主体,本实施例的方法可以包括如下步骤:
81.s101、获取待处理地址,待处理地址可以为第一类型地址或者第二类型地址。
82.本实施例中,在存储ip地址时,硬件网关可以逐一可以访问的其他硬件网关的ip地址。该硬件网关可以将这些ip地址作为待处理地址逐一进行处理,从而使这些ip地址可以存储在该硬件网关中,实现该硬件网关与其他硬件网关之间的通信。本实施例中,将该待
处理地址分为了第一类型地址和第二类型地址两类。其中,第二类型地址的长度为预设位数。除该第二类型地址以外其他长度的地址可以为第一类型地址。
83.一种示例中,该第一类型地址可以为长度为128位ipv6地址。该第二类型地址可以为长度为32位的ipv4地址。因此,该预设位数可以为32位。该预设位数的设置,实现了该硬件网关中存储的ip地址长度的统一。
84.由于目前常用的ip地址类型较多,因此,硬件网关通常需要同时具备第一类型地址和第二类型地址的报文转发能力。例如,需要在ipv4地址和ipv6地址共存的情况下,实现ipv4地址和ipv6地址的双栈运行。因此,该硬件网关中需要存储第一类型地址和第二类型地址。
85.s102、判断待处理地址是否为第一类型地址,若是,进入s103,否则,进入s107。
86.s103、当待处理地址为第一类型地址时,将待处理地址输入预设哈希算法,降维得到预设位数的第一映射地址。
87.本实施例中,当该待处理地址为第一类型地址时,硬件网关需要使用预设哈希算法对该待处理地址进行降维处理。该第一类型地址的格式将为降维到预设位数的第二类型地址。例如,当该第一类型地址为ipv6时,该硬件网关可以通过预设哈希算法将128位降维到32位。将该第一类型地址降维到预设位数后,该降维后的第一类型地址将与第二类型地址具有相同的格式。因此,该降维后的第一类型地址将与其他的第二类型地址共用所有与ip地址相关的表项存储资源,从而达到节约存储空间的效果。并且,当降维后的第一类型地址和第二类型地址实现共用表项规格后,该硬件网关不需要分别为两种协议预先规划规格大小,可以最大限度利用硬件存储资源。
88.本实施例中,硬件网关可以在软件层面,将该第一类型地址的待处理地址输入预设哈希算法。该硬件网关可以通过该预设哈希算法,对该待处理地址进行降维,得到预设位数的第一映射地址。该第一映射地址的格式为第二类型地址。例如,如图3所示,当第一类型地址为ipv6地址,且该待处理地址可以为fd02:d00f:c400:1001。该硬件网关通过预设哈希算法,映射得到的32位的第二类型地址的第一映射地址。该第一映射地址可以为32.236.199.44。该第二类型地址可以为ipv4。
89.其中,该预设哈希算法可以为现有哈希算法或者改进后的哈希算法。该硬件网关的硬件层面和软件层面中均使用该预设哈希算法。
90.s104、判断第一映射地址是否与硬件存储空间中存储的ip地址冲突,若是,则进入s105,否则,进入s106。
91.本实施例中,硬件网关在获取该第一映射地址后,判断该第一映射地址是否已经被占用。具体地,该硬件网关可以读取硬件存储空间中存储的ip地址。该硬件存储空间中存储的ip地址均为预设位数的第二类型地址。该硬件网关可以通过逐一匹配、搜索等方式,判断该硬件存储空间中是否存储与该第一映射地址相同的ip地址。
92.如果,该硬件存储空间中存在与该第一映射地址相同的ip地址,则该硬件网关确定该第一映射地址出现冲突,并进入s105。否则,该第一映射地址与该硬件存储空间中的ip地址没有发生冲突,并进入s106。
93.s105、当冲突时,根据预设规则为待处理地址分配预设位数的第二映射地址。
94.本实施例中,当第一映射地址与硬件存储空间中存储的ip地址冲突时,如果该硬
件网关继续使用该第一映射地址存储该待处理地址,则会导致该第一映射地址对应的待处理地址不再唯一。因此,为了保证还硬件存储空间中ip地址与待处理地址映射关系的唯一性,硬件网关可以通过软件,为该待处理地址分配一个第二映射地址。该第二映射地址的格式为第二类型地址。例如,如图3所示,当第一类型地址为ipv6地址,且该地址具体可以为fd02:d00f:c400:1002。该硬件网关通过预设哈希算法,映射得到的32位的第二类型地址的第一映射地址可以为32.236.199.44。该第一映射地址与fd02:d00f:c400:1001的第一映射地址冲突。因此,该硬件网关可以通过软件,为该待处理地址分配第二类型地址的第二映射地址。该第二映射地址可以为10.11.22.33。该第二类型地址可以为ipv4。
95.一种示例中,该硬件网关可以在硬件存储空间中增加一张映射表。该映射表中可以存储该待处理地址和第二映射地址。
96.一种示例中,其具体分配过程可以包括如下步骤:
97.步骤1、从索引集合中选择一个目标索引。
98.本步骤中,硬件网关的软件中可以维护有一个索引集合。该索引集合可以为一个索引环。该索引集合中可以包括多个索引。当第一映射地址出现冲突时,硬件网关可以从该索引集合中取出一个索引。该索引即为目标索引。其中,硬件网关获取该索引的方式可以为随机获取、顺序获取等,本技术对此不做限制。
99.步骤2、根据目标索引,确定目标索引对应的第二类型地址的地址段。
100.本步骤中,硬件网关可以根据该目标索引,确定该目标索引对应的第二类型地址的地址段。该地址段可以为多播地址段,或者,该硬件网关中不会使用到的其他第二类型地址的地址段。
101.步骤3、从第二类型地址的地址段中选择一个空闲第二类型地址作为第二映射地址。
102.本步骤中,硬件网关可以从该第二类型地址段中取出一个未被使用的空闲的第二类型地址作为第二映射地址。当该第二类型地址被使用后,硬件网关可以从该第二类型地址的地址段中删除该第二映射地址。
103.一种示例中,当硬件网关中的软件为该ip地址分配第二映射地址后,该硬件网关可以设置第二映射地址的映射属性为冲突映射。当第一类型地址为ipv6,第二类型地址为ipv4时,该冲突映射可以在该硬件网关中使用参数ipv6_convert_to_ipv4进行表示。该映射属性可以在该硬件存储空间占用2位进行存储。
104.s106、设置第一映射地址的映射属性为哈希映射,并将第一映射地址存储到共享表中。
105.本步骤中,当第一映射地址与硬件存储空间中存储的ip地址不冲突时,该硬件网关还可以设置第一映射地址的映射属性为哈希映射。当第一类型地址为ipv6,第二类型地址为ipv4时,该哈希映射可以在该硬件网关中使用参数ipv6_hash_to_ipv4进行表示。
106.该映射属性可以在该硬件存储空间占用2位进行存储。硬件网关还可以将第一映射地址存储到共享表中。该共享表存储于该硬件网关的硬件存储空间中。
107.s107、当待处理地址为第二类型地址时,设置待处理地址的映射属性设置为直接映射,并将待处理地址存储到共享表中。
108.本实施例中,当待处理地址为第二类型地址时,该硬件网关可以设置该待处理地
址的映射属性为直接映射。硬件网关还可以直接将该待处理地址存储到共享表中。该共享表存储于该硬件网关的硬件存储空间中。当第一类型地址为ipv6,第二类型地址为ipv4时,该直接映射可以在该硬件网关中使用参数ipv4_to_ipv4进行表示。该映射属性可以在该硬件存储空间占用2位进行存储。
109.本技术提供的ip地址存储方法,硬件网关可以获取待处理地址。该待处理地址可以为第一类型地址或者第二类型地址。当该待处理地址为第一类型地址时,硬件网关可以在软件层面将该待处理地址输入预设哈希算法,得到预设位数的第一映射地址。硬件网关可以通过判断硬件存储空间中是否已经存在该第一映射地址,确定该第一映射地址是否出现冲突。如果出现冲突,则该硬件网关可以通过软件,为该待处理地址分配一个预设位数的第二映射地址。该硬件网关可以在硬件存储空间中增加一张映射表。该映射表中可以存储该待处理地址和第二映射地址。否则,该硬件存储空间可以将该第一映射地址存储到共享表中。当待处理地址为第二类型地址时,硬件网关可以直接将该待处理地址存储到共享表中。本技术中,通过使用预设哈希算法,将第一类型地址的待处理地址映射为与第二类型地址格式的第一映射地址或者第二映射地址,使不同类型的待处理地址可以共用所有与ip地址相关的表项存储资源,使硬件网关不需要分别为两种协议预先规划规格大小,可以最大限度利用硬件存储资源,提高了ip地址的存储效率。同时,本技术通过给每个待处理地址赋予一个2位的映射属性,实现了不同类型的待处理地址的存储,最大限度地节省了硬件存储空间。
110.在上述实施例的基础上,硬件网关可以将第一映射地址、第二映射地址、以及类型为第二类型地址的待处理地址作为地址映射表项的主键,对地址映射表项进行配置。其具体过程可以包括:
111.本实施例中,硬件网关中,地址映射表项可以包括共享表和映射表。其中,共享表中可以存储有第一映射地址和类型为第二类型地址的待处理地址。映射表中存储有第二映射地址和该第二映射地址对应的待处理地址。为了便于检索以及避免重复,在该地址映射表项中,可以将该第一映射地址、第二映射地址、以及类型为第二类型地址的待处理地址作为主键。
112.此外,在该硬件网关中存储的第一映射地址、第二映射地址、以及类型为第二类型地址的待处理地址的类型均为第二类型地址。为了区分该三种不同方式得到的第二类型地址,本技术中可以为其设置不同的映射属性。其中,第一映射地址的映射属性可以为哈希映射。第二映射地址的映射属性可以为冲突映射。第二类型地址的待处理地址的映射属性可以为直接映射。当第一类型地址为ipv6,第二类型地址为ipv4时,第一映射地址在硬件网关中可以使用全局变量ipv6_hash_to_ipv4对其进行标注。第二映射地址在硬件网关中可以使用全局变量ipv6_convert_to_ipv4对其进行标注。第二类型地址的待处理地址在硬件网关中可以使用全局变量ipv4_to_ipv4对其进行标注。该映射属性可以与第一映射地址、第二映射地址、以及类型为第二类型地址的待处理地址一起存储在该硬件存储空间的地址映射表项中。并且,该硬件网关中实现第二映射地址分配的软件、预设哈希算法、共享表和映射表等信息将被打包后作为该硬件网关的配置。该配置将根据需求发送到其他硬件网关或者终端设备中。
113.图4示出了本技术一实施例提供的一种ip地址存储方法的流程图。在图1至图3所
示实施例的基础上,如图4所示,当完成该硬件网关上全部ip地址的存储后,以硬件网关为执行主体,本实施例的方法还可以包括如下步骤:
114.s301、获取访问请求,访问请求中包括访问请求的第一目标地址。
115.本实施例中,硬件网关可以获取发送设备发送的访问请求。该发送设备可以为其他硬件网关或者终端设备。该访问请求中可以包括最终接收该访问请求的接收设备的第一目标地址。该第一目标地址可以为第二类型地址或者第一类型地址。该硬件网关可以根据该第一目标地址,将该访问请求转发到接收设备。该接收设备可以为其他硬件网关或者终端设备。
116.s302、根据第一目标地址、预设哈希算法和地址映射表项,确定第二目标地址。
117.本实施例中,当该硬件网关确定该第一目标地址是第一类型地址时,硬件网关可以根据如下步骤,确定该第一目标地址对应的第二目标地址和映射属性。该步骤还可以如图5所示。其具体步骤可以包括:
118.一种示例中,如图5所示。当硬件网关确定第一目标地址为第二类型地址时,该第一目标地址即为转发地址。该硬件网关可以将该第一目标地址作为ip_key。该硬件网关还可以设置ip_type的值为映射属性中的直接映射。
119.s4001、判断第一目标地址是否第一类型地址,若是,进入s4002,若否,则进入s4005。
120.本步骤中,当该硬件网关获取到该第一目标地址后,该硬件网关首先可以根据ip协议类型判断该第一目标地址类型。如果,该第一目标地址为第一类型地址,则进入s4002。否则,该硬件网关可以进入s4005。
121.s4002、判断地址映射表项中的映射表中是否包括第一目标地址,若是,则进入s4003,否则,进入s4004。
122.本步骤中,硬件网关可以将该第一目标地址与映射表中的ip地址进行匹配,确定该第一目标地址是否为该映射表中存储的ip地址。如果,该映射表中存储有该第一目标地址,则进入s4003。否则,该硬件网关可以进入s4004。
123.s4003、根据第一目标地址和映射表,确定第二目标地址,并确定映射属性为冲突映射。
124.本步骤中,当该映射表中包括该第一目标地址时,该硬件网关可以根据该映射表,确定该第一目标地址对应的第二映射地址。该第二映射地址即为该第一目标地址对应的第二目标地址。该硬件网关可以确定映射属性为冲突映射。即,当该映射表中包括该第一目标地址时,ip_key为第二映射地址,ip_type为映射属性中的冲突映射。
125.s4004、使用硬件对第一目标地址进行哈希运算,得到第二目标地址,并确定映射属性为哈希映射。
126.本步骤中,当该第一目标地址无法在映射表中查询到时,该硬件网关可以将该第一目标地址输入到预设哈希算法中,运算得到第一映射地址。该第一映射地址即为该第一目标地址对应的第二目标地址。该硬件网关可以确定映射属性为哈希映射。即,当该第一目标地址无法在映射表中查询到时,ip_key为第一映射地址,ip_type为映射属性中的哈希映射。
127.s4005、将第一目标地址作为第二目标地址,并确定映射属性为直接映射。
128.本步骤中,当该第一目标地址为第二类型地址时,该硬件网关可以确定该第一目标地址即为第二目标地址。即,ip_key为第一目标地址,ip_type为直接映射。
129.s303、根据第二目标地址转发访问请求。
130.本实施例中,当硬件网关确定第二目标地址ip_key和映射属性ip_type后,该硬件网关可以根据该ip_key和ip_type确定接收设备。该硬件设备可以将该访问请求转发到该接收设备。
131.本技术提供的ip地址存储方法,硬件网关可以获取发送设备发送的访问请求。硬件网关可以根据第一目标地址、预设哈希算法和映射表,确定预设位数的第二目标地址和映射属性。该硬件网关可以根据该第二目标地址和映射属性确定接收设备。该硬件设备可以将该访问请求转发到该接收设备。本技术中,通过转发访问请求,实现映射到预设位数的第二目标地址的使用,提高了该硬件网关中ip地址的存储效率。
132.图6示出了本技术一实施例提供的一种ip地址存储装置的结构示意图,如图6所示,本实施例的ip地址存储装置10用于实现上述任一方法实施例中对应于硬件网关的操作,本实施例的ip地址存储装置10包括:
133.获取模块11,用于获取待处理地址,待处理地址可以为第一类型地址或者第二类型地址;
134.处理模块12,用于在待处理地址为第一类型地址时,将待处理地址输入预设哈希算法,降维得到预设位数的第一映射地址;判断第一映射地址是否与硬件存储空间中存储的ip地址冲突;在冲突时,根据预设规则为待处理地址分配预设位数的第二映射地址。
135.一种示例中,处理模块12,具体用于:
136.从索引集合中选择一个目标索引;
137.根据目标索引,确定目标索引对应的第二类型地址的地址段;
138.从第二类型地址的地址段中选择一个空闲第二类型地址作为第二映射地址。
139.一种示例中,处理模块12,还用于:
140.在第一映射地址与硬件存储空间中存储的ip地址不冲突时,设置第一映射地址的映射属性为哈希映射,并将第一映射地址存储到共享表中。
141.一种示例中,处理模块12,还用于:
142.在第一映射地址与硬件存储空间中存储的ip地址冲突时,设置第二映射地址的映射属性为冲突映射,并将待处理地址和第二映射地址存储到映射表中。
143.一种示例中,处理模块12,还用于:
144.在待处理地址为第二类型地址时,设置待处理地址的映射属性设置为直接映射,并将待处理地址存储到共享表中。
145.一种示例中,处理模块12,还用于:
146.将第二映射地址、第一映射地址、以及类型为第二类型地址的待处理地址作为地址映射表项的主键,对地址映射表项进行配置,地址映射表项用于共享表和映射表。
147.一种示例中,第一类型地址为ipv6地址,第二类型地址为ipv4地址。
148.一种示例中,还包括:
149.获取模块11,用于获取访问请求,访问请求中用于访问请求的第一目标地址;
150.处理模块12,用于根据第一目标地址、预设哈希算法和地址映射表项,确定第二目
标地址;根据第二目标地址转发访问请求。
151.一种示例中,处理模块12,具体用于:
152.在第一目标地址为第一类型地址时,判断地址映射表项中的映射表中是否用于第一目标地址;
153.在包括时,根据第一目标地址和映射表,确定第二目标地址,并确定映射属性为冲突映射;
154.否则,使用硬件对第一目标地址进行哈希运算,得到第二目标地址,并确定映射属性为哈希映射。
155.一种示例中,在根据第一目标地址、预设哈希算法和地址映射表项,确定第二目标地址之前,处理模块12,还用于:
156.在第一目标地址为第二类型地址时,确定第二目标地址为第一目标地址,并确定映射属性为直接映射。
157.本技术实施例提供的ip地址存储装置10,可执行上述方法实施例,其具体实现原理和技术效果,可参见上述方法实施例,本实施例此处不再赘述。
158.图7示出了本技术实施例提供的一种硬件网关的硬件结构示意图。如图7所示,该硬件网关20,用于实现上述任一方法实施例中对应于硬件网关的操作,本实施例的硬件网关20可以包括:存储器21,处理器22和通信接口24。
159.存储器21,用于存储计算机程序。该存储器21可能包含高速随机存取存储器(random access memory,ram),也可能还包括非易失性存储(non-volatile memory,nvm),例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。
160.处理器22,用于执行存储器存储的计算机程序,以实现上述实施例中的ip地址存储方法。具体可以参见前述方法实施例中的相关描述。该处理器22可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
161.可选地,存储器21既可以是独立的,也可以跟处理器22集成在一起。
162.当存储器21是独立于处理器22之外的器件时,硬件网关20还可以包括总线23。该总线23用于连接存储器21和处理器22。该总线23可以是工业标准体系结构(industry standard architecture,isa)总线、外部设备互连(peripheral component interconnect,pci)总线或扩展工业标准体系结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本技术附图中的总线并不限定仅有一根总线或一种类型的总线。
163.通信接口24,可以通过总线23与处理器21连接。该通信接口24用于获取其他设备发送到该硬件网关的访问请求。该通信接口24还用于将该访问请求转发到其他设备。
164.本实施例提供的硬件网关可用于执行上述的ip地址存储方法,其实现方式和技术效果类似,本实施例此处不再赘述。
165.本技术还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程
序,计算机程序被处理器执行时用于实现上述的各种实施方式提供的方法。
166.其中,计算机可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,计算机可读存储介质耦合至处理器,从而使处理器能够从该计算机可读存储介质读取信息,且可向该计算机可读存储介质写入信息。当然,计算机可读存储介质也可以是处理器的组成部分。处理器和计算机可读存储介质可以位于专用集成电路(application specific integrated circuits,asic)中。另外,该asic可以位于用户设备中。当然,处理器和计算机可读存储介质也可以作为分立组件存在于通信设备中。
167.具体地,该计算机可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(static random-access memory,sram),电可擦除可编程只读存储器(electrically-erasable programmable read-only memory,eeprom),可擦除可编程只读存储器(erasable programmable read only memory,eprom),可编程只读存储器(programmable read-only memory,prom),只读存储器(read-only memory,rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
168.本技术还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。设备的至少一个处理器可以从计算机可读存储介质中读取该计算机程序,至少一个处理器执行该计算机程序使得设备实施上述的各种实施方式提供的方法。
169.本技术实施例还提供一种芯片,该芯片包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行计算机程序,使得安装有芯片的设备执行如上各种可能的实施方式中的方法。
170.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
171.其中,各个模块可以是物理上分开的,例如安装于一个的设备的不同位置,或者安装于不同的设备上,或者分布到多个网络单元上,或者分布到多个处理器上。各个模块也可以是集成在一起的,例如,安装于同一个设备中,或者,集成在一套代码中。各个模块可以以硬件的形式存在,或者也可以以软件的形式存在,或者也可以采用软件加硬件的形式实现。本技术可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
172.当各个模块以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本技术各个实施例方法的部分步骤。
173.应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显
示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
174.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制。尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
技术特征:1.一种ip地址存储方法,其特征在于,所述方法包括:获取待处理地址,所述待处理地址为第一类型地址或者第二类型地址;当所述待处理地址为第一类型地址时,将所述待处理地址输入预设哈希算法,降维得到预设位数的第一映射地址;判断所述第一映射地址是否与硬件存储空间中存储的ip地址冲突;当冲突时,根据预设规则为所述待处理地址分配预设位数的第二映射地址。2.根据权利要求1所述的方法,其特征在于,所述根据预设规则为所述待处理地址分配预设位数的第二映射地址,具体包括:从索引集合中选择一个目标索引;根据所述目标索引,确定所述目标索引对应的第二类型地址的地址段;从所述第二类型地址的地址段中选择一个空闲第二类型地址作为所述第二映射地址。3.根据权利要求或1所述的方法,其特征在于,所述方法还包括:当所述第一映射地址与硬件存储空间中存储的ip地址不冲突时,设置所述第一映射地址的映射属性为哈希映射,并将所述第一映射地址存储到共享表中。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:当所述第一映射地址与硬件存储空间中存储的ip地址冲突时,设置所述第二映射地址的映射属性为冲突映射,并将所述待处理地址和所述第二映射地址存储到映射表中。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:当所述待处理地址为第二类型地址时,设置所述待处理地址的映射属性设置为直接映射,并将所述待处理地址存储到共享表中。6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述方法还包括:将第一映射地址、第二映射地址、以及类型为第二类型地址的待处理地址作为地址映射表项的主键,对所述地址映射表项进行配置,所述地址映射表项包括共享表和映射表。7.根据权利要求1至5中任意一项所述的方法,其特征在于,所述第一类型地址为ipv6地址,所述第二类型地址为ipv4地址。8.根据权利要求1至5中任意一项所述的方法,其特征在于,所述方法,还包括:获取访问请求,所述访问请求中包括第一目标地址;根据所述第一目标地址、所述预设哈希算法和地址映射表项,确定第二目标地址;根据所述第二目标地址转发所述访问请求。9.根据权利要求8所述的方法,其特征在于,所述根据所述第一目标地址、所述预设哈希算法和所述地址映射表项,确定第二目标地址,具体包括:当所述第一目标地址为第一类型地址时,判断所述地址映射表项中的所述映射表中是否包括所述第一目标地址;当包括时,根据所述第一目标地址和所述映射表,确定所述第二目标地址,并确定映射属性为冲突映射;否则,使用硬件对所述第一目标地址进行哈希运算,得到所述第二目标地址,并确定映射属性为哈希映射。10.根据权利要求9所述的方法,其特征在于,所述方法,在根据所述第一目标地址、所述预设哈希算法和所述地址映射表项,确定第二目标地址之前,所述方法还包括:
当所述第一目标地址为第二类型地址时,确定所述第二目标地址为所述第一目标地址,并确定映射属性为直接映射。11.一种ip地址存储装置,其特征在于,所述装置,包括:获取模块,用于获取待处理地址,所述待处理地址可以为第一类型地址或者第二类型地址;处理模块,用于当所述待处理地址为第一类型地址时,将所述待处理地址输入预设哈希算法,降维得到预设位数的第一映射地址;判断所述第一映射地址是否与硬件存储空间中存储的ip地址冲突;当冲突时,根据预设规则为所述待处理地址分配预设位数的第二映射地址。12.一种硬件网关,其特征在于,所述硬件网关,包括:存储器,处理器;所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序,实现如权利要求1至10中任意一项所述的ip地址存储方法。13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1至10任一项所述的ip地址存储方法。14.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至10任一项所述的ip地址存储方法。
技术总结本申请提供一种IP地址存储方法、装置和硬件网关。该方法包括:硬件网关可以获取待处理地址。当该待处理地址为第一类型地址时,硬件网关可以通过使用预设哈希算法,将该待处理地址降维得到预设位数的第一映射地址。当该第一映射地址出现哈希冲突时,该硬件网关还可以为该待处理地址分配一个预设位数的第二映射地址。该硬件网关可以将该第一映射地址和第二映射地址存储到硬件存储空间中。当该待处理地址为第二类型地址时,该硬件网关可以直接将该待处理地址存储到硬件存储空间。本申请的方法,提高了该硬件网关中IP地址的存储效率。提高了该硬件网关中IP地址的存储效率。提高了该硬件网关中IP地址的存储效率。
技术研发人员:陈雅迪 马塞
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2022.03.25
技术公布日:2022/7/4