一种基于哈希算法的面向IPv6过渡的IPv4地址及端口段池维护方法,首先定义一种新的哈希函数,哈希函数分别接受端口段掩码长度、IPv4地址、端口段索引作为输入参数进行哈希映射,得到一个64位的整数,将其对哈希表大小n取模即为结果,输出一个[0,n-1]的整数,实现对IPv4端口段地址池的维护,通过巧妙设计哈希过程,本发明专利技术不仅实现了以IPv4地址与端口段信息共同作为索引进行哈希映射,算法还能够保证同一个IPv4地址下连续的端口段依然被映射到连续的结果;连续的IPv4地址对应的映射结果也保持连续。
【技术实现步骤摘要】
本专利技术属于互联网
,特别涉及一种。
技术介绍
随着互联网近些年来的快速发展,IPv4网络规模不断扩大,IPv4地址资源日益紧缺。目前互联网正处于IPv4向IPv6的过渡时期,但是由于IPv6与IPv4互不兼容,完成由IPv4向IPv6的全面过渡在短期内难以实现。为应对IPv4地址的稀缺状况,过渡技术需要改进IPv4地址的分配机制以实现多个用户共享同一个IPv4地址。一种有效的解决方案是采用划分端口段的方式实现IPv4地址共享。一个完整的IPv4地址拥有65535个传输层端口,除去系统预留的端口段(如O 1023号端口),其余的端口可以供我们任意的分配使用。而大部分用户设备在进行网络通信时使用的端口数量远少于总端口数量。因此,我们可以将分配完整IPv4地址的方式转变成分配IPv4地址加端口段的方式,即多个用户共同使用同一个IP地址,每个用户只使用这个IP地址下的一个端口区间,且用户之间所使用的端口区间互不重叠。基于端口段掩码-索引的表示方式可以有效表示端口段信息。每一个端口段由两个16位整数进行表示:端口段掩码以及端口段索引。端口段掩码类似于IP地址子网掩码,其二进制表示的高k位为1,低16-k位为O。端口段索引表示这一端口段的起始端口,其二进制表示的高k位为索引值,低16-k位为O。二者共同表示了从端口段索引开始的长度为216_k的端口段。例如当端口段掩码为FSOO16,端口段索引为OSOO16时,二者共同表示了2048-4095范围内的端口,如图1所示。在IP地址分配协议(如DHCP,动态主机设置协定)中,需要维护地址池并支持多种查询方式。一种必不可少的查询方式是以IP地址作为索引进行查询。这种查询方式通常可由哈希表实现,其对应的哈希函数以IPv4地址作为输入。但是引入了端口段机制后,这种方式存在明显的弊端。每个IP地址索引下一定会保存大量的端口段信息,仅以IP地址作为索引会大大的降低系统的查询效率,不利于系统对端口段信息的维护。同时,由于不能提供充足的索引信息,导致系统在操作端口段时出现错误。因此在引入了端口段后,为了能够维护IPv4地址加端口段的地址池,必须能够以IPv4地址与端口段信息共同作为索引进行查询,所以必须重新设计哈希算法以满足现在的IP地址维护需求。
技术实现思路
为了克服上述现有技术的缺点,本专利技术的目的在于提供一种,接受IPv4地址、端口段掩码以及端口段索引作为输入,并根据哈希表的功能进行增删查改等维护操作。为了实现上述目的,本专利技术采用的技术方案是:—种,设计哈希函数如下:H (IP, L, IDX) = (L X 2L+32+IP X 2L+IDX X 2卜16) modn其中,IP表示IPv4地址,且O≤IP < 232,L表示端口段掩码长度,即端口段掩码二进制表示中I的数量,O≤L≤16,IDX表示端口段索引,O≤IDX < 216,η为哈希表大小;该函数接受端口段掩码长度、IPv4地址、端口段索引作为输入参数进行哈希映射,得到一个64位的整数,将其对哈希表大小η取模即为结果,结果是一个小于η的非负整数,对应于端口段地址池中的某一项,从而可以实现对对IPv4端口段地址池的维护。为避免冲突,η取质数。利用 所述哈希函数进行哈希映射之后,利用冲突处理算法得出所查端口段在哈希表中的位置,从而进行对IPv4端口段地址池的增删查改操作。所述冲突处理算法为开放地址法或拉链法。与现有技术相比,本专利技术采用IPv4地址与端口段信息共同作为索引进行哈希映射,实现对IPv4端口段地址池的维护。算法能够保证同一个IPv4地址下连续的端口段被映射成连续的私网地址,并且,通过算法的优化可以有效的避免端口段分配的碰撞问题。从而能够保证系统能够高效准确的进行IP地址信息维护。附图说明图1是端口段示意图。图2是哈希函数结构示意图。图3是哈希算法流程图。具体实施例方式下面结合附图和实施例详细说明本专利技术的实施方式。本专利技术首先定义一种新的哈希函数,分别接受端口段掩码长度、IPv4地址、端口段索引作为输入参数,并按照图2所示的结构将其进行组合。得到一个64位的整数,将其对哈希表大小η取模即为结果。哈希函数的输出是一个的整数,其中η为哈希表大小。该函数可以表述如下:H (IP, L, IDX) = (L X 2L+32+IP X 2L+IDX X 2卜16) modn其中,IP表示IPv4地址,且O≤IP < 232,L表示端口段掩码长度,即端口段掩码二进制表示中I的数量,O≤L≤16,IDX表示端口段索引,O≤IDX < 216,n为哈希表大小;为了避免冲突,η通常取一个质数,为方便起见,不进行冲突处理过程。假设IPv4 地址为 192.168.0.1,端口范围是 2048-4095。则 IPv4 地址 IP=32322355211(|,端口段掩码为F80016,端口段掩码长度L = 5,端口段索引IDX =080016=20481(|,哈希表大小n=100003 (下文同)。则H (IP, L, IDX) = (LX2L+32+IPX2L+IDXX2H6)modn=85958。由于不做冲突处理,这就是所查IPv4端口段在哈希表中的位置,可对其进行增删查改等操作。当IPv4地址仍然为192.168.0.1,端口范围是63488-65535时,有IP=323223552110, L=5,IDX=F80016=634881(I。则H (IP, L, IDX) = (L X 2L+32+IP X 2L+IDX X 2L_16) modn=85988。这一结果恰好是前一结果加30,即相同IPv4地址下端口段索引相差的范围。当IPv4 地址为 192.168.0.2,端 口 范围是 0-2047 时,有 IP=323223552210, L=5,IDX=O。则H(IP,L, IDX) = (LX2L+32+IPX2L+IDXX2H6)modn=85989。这一结果与前一结果连续。通过巧妙设计哈希过程,本专利技术设计的哈希函数不仅实现了以IPv4地址与端口段信息共同作为索引进行哈希映射,算法还能够保证同一个IPv4地址下连续的端口段依然被映射到连续的结果;连续的IPv4地址对应的映射结果也保持连续。本哈希算法在哈希函数中记录了端口段掩码长度,使得哈希表可以同时容纳不同掩码长度的IP地址与端口段数据,且有效避免了碰撞。详细的算法流程如图3所示,使用本哈希函数计算哈希表映射后,利用冲突处理算法如开放地址法、拉链法等,即可得出所查端口段在哈希表中的位置。进而可以进行对IPv4端口段地址池的增删查改等操作。本文档来自技高网...
【技术保护点】
一种基于哈希算法的面向IPv6过渡的IPv4地址及端口段池维护方法,其特征在于,设计哈希函数如下:H(IP,L,IDX)=(L×2L+32+IP×2L+IDX×2L?16)modn其中,IP表示IPv4地址,且0≤IP<232,L表示端口段掩码长度,即端口段掩码二进制表示中1的数量,0≤L≤16,IDX表示端口段索引,0≤IDX<216,n为哈希表大小;该函数接受端口段掩码长度、IPv4地址、端口段索引作为输入参数进行哈希映射,得到一个64位的整数,将其对哈希表大小n取模即为结果,结果是一个小于n的非负整数,对应于端口段地址池中的某一项,从而可以实现对IPv4端口段地址池的维护。
【技术特征摘要】
1.一种基于哈希算法的面向IPv6过渡的IPv4地址及端口段池维护方法,其特征在于,设计哈希函数如下: H (IP, L, IDX) = (L X 2l+32+IP X 2l+IDX X 2卜16) modn 其中,IP表示IPv4地址,且O < IP < 232, L表示端口段掩码长度,即端口段掩码二进制表示中I的数量,O彡L彡16,IDX表示端口段索引,O彡IDX < 216,η为哈希表大小; 该函数接受端口段掩码长度、IPv4地址、端口段索引作为输入参数进行哈希映射,得到一个64位的整数,将其 对哈希表大小η取模即为结果,结果是一个小于η...
【专利技术属性】
技术研发人员:崔勇,刘聪,孙琪,
申请(专利权)人:清华大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。