CN104917852B - 一种针对IPv6地址的数据快速处理方法 - Google Patents
一种针对IPv6地址的数据快速处理方法 Download PDFInfo
- Publication number
- CN104917852B CN104917852B CN201510289655.XA CN201510289655A CN104917852B CN 104917852 B CN104917852 B CN 104917852B CN 201510289655 A CN201510289655 A CN 201510289655A CN 104917852 B CN104917852 B CN 104917852B
- Authority
- CN
- China
- Prior art keywords
- address
- ipv6
- bit
- directed
- processing method
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/659—Internet protocol version 6 [IPv6] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种针对IPv6地址的数据快速处理方法,通过修正部分IP地址位以获得较高的熵值,降低哈希冲突率,可以快速计算hash值的同时,也不会因为部分地区IP地址分配策略导致熵值过低,避免哈希值产生大量冲突,进而大大缩短负载均衡、流还原等的时间,使网络通信能够更加快速有效的进行。适用于对延迟要求较高且需要使用hash来实现负载均衡、流还原的网络。
Description
技术领域
本发明涉及电通信技术领域,涉及一种对IP地址进行处理的方法,具体涉及一种针对IPv6地址的数据快速处理方法。
背景技术
近年来,网络数据越来越呈现出3个V的特征,即数据容量(volume),增长速度(velocity)和种类(variety)。这些特征都在说明,网络流量在不断高速增大,而这又会给网络传输、网络处理带来极大的挑战。比如数据量太大时,会给本已不堪重荷的网络造成拥堵。当某链路过载或失效的时候,负载均衡是保持网络畅通的有效手段;更一般的情况下,负载均衡是防止网络拥塞的重要手段之一。而随着网络带宽的加速升级,数据量太大时,单机处理器即便处理能力再强,也会有处理不过来的时候。因此,负载均衡在网络中便有了非常重要的意义。另外,在流还原等相关工作中,对于动辄几千万的连接数,如果不能做到有效的负载均衡,数据处理的效率将会成倍的降低,甚至根本无法完成。
然而,负载均衡和流还原等的效果都十分依赖于所选择的哈希(hash)函数。再有,在加密、查找、聚簇、缓存等相关的领域,哈希也有着广泛而重要的应用。
哈希算法是一种能够将任意长度的二进制值映射为固定长度的较小二进制值的方法。哈希算法可以表示为:Hash值=H(Key),其中Key为原始值,H为Hash函数,Hash值为将Key按照Hash函数H映射而成的较小值。
目前有较多的方法可以针对IP数据包计算hash值,例如直接哈希、CRC哈希、XOR折叠、IPSX等。计算hash一般都需要用到其四元组(源IP地址,源端口号,目的IP地址,目的端口号)/五元组(源IP地址,源端口号,目的IP地址,目的端口号,协议号)。由于目前这些都是针对IPv4,所以还可以较好的完成哈希值计算的任务。然而由于IPv4地址的耗尽,以及国家对IPv6的大力推进,逐步升级到IPv6是大势所趋。而IPv6地址长度是128位,增加到IPv4地址的4倍,因而如果还使用原有技术,处理时间将大大加长,势必会成为网络传输的一个瓶颈,不能满足高速网络的要求。
IPv6地址是按地域进行分配的,因而对于单个地域来说,IP地址的前半部分相同,后面会根据需求进行分配。如果只使用IPv6地址的第97位-128位进行哈希,处理速度将大大提升。对于IPv6,通过对3100万条去重的数据包的整理,并将其IP地址按照地域进行分类和统计分析,发现二进制下“0”可以占到整个地址长度的65.57%。因此,虽然对于大部分地域来说,第97位-128位的熵值几乎都可以达到0.9以上,此方法都可以产生较好的效果,但是对于一部分地域来说,IPv6地址的第97位-112位熵值非常低,几乎为0,继续使用这种哈希方法将会造成严重的哈希冲突,进而极大的影响了网络处理设备的性能。
发明内容
基于此,为了应对IPv6将要取代IPv4的大潮,本发明提供一种针对IPv6地址的数据快速处理方法,更加有效的基于哈希计算处理IPv6地址,在大大缩短哈希值的计算时间同时,也不会产生严重的冲突,进而大大缩短网络传输及数据处理中负载均衡、流还原等的时间,使网络通信及数据处理能够更加快速有效的进行。
本发明主要内容为:在对网络数据包的四元组/五元组进行哈希计算前,先修正IP地址的第97位-112位,再使用IP地址的第97位-128位进行哈希值计算。
一种针对IPv6地址的数据快速处理方法,主要步骤包括:
(1)通过对输入的IPv6地址进行离线学习,从128位地址中选取连续的32位作为哈希输入的地址位,以及随机性最高的连续16位作为需要修正时的修正位(地址位和修正位彼此之间无重叠)。
(2)对于步骤(1)选取出的二进制的地址位,每8位一组计算各组的比特随机性;
(3)利用修正位对比特随机性未达到设定阈值的地址位进行修正,使其随机性达到设定阈值;
(4)将达到设定阈值的IP地址位作为哈希算法的输入,完成针对IPv6地址的数据快速处理。
优选地,步骤(1)中从128位地址中选取随机性最高的连续的32位作为哈希输入的地址位。
进一步地,所述随机性基于熵值进行计算。
进一步地,步骤(3)中基于异或运算,与或非运算对比特随机性未达到设定阈值的地址位进行修正。
进一步地,步骤(4)达到设定阈值的IP地址包括经步骤(3)修正后随机性达到设定阈值的地址位以及所选取的地址位中剩余的地址位(即本身随机性达到设定阈值不需要进行修正的地址位)。
一般地,步骤(1)从128位地址中选取最后32位(即第97位-128位)作为哈希输入的地址位,并根据57-72位对第97-112位进行必要的修正。
进一步地,步骤(2)中使指针sp1指向IP地址的97位-104位,sp2指向IP地址的第105位-112位,指针p1指向第57-64位,p2指向IP地址的第65-72位,每8位一组,计算sp1、sp2组的比特随机性。
进一步地,步骤(3)包括:p1 xor sp1→sp1,p2 xor sp2→sp2。
进一步地,上述方法还包括:p1和p2分别向前移动2字节,当p1到达IP开头时停止,否则回到步骤(2)重新计算。
进一步地,步骤(4)中达到设定阈值的IP地址包括sp1及其后的IP地址。
其中(1)只需要在所有步骤前预处理计算一次。对于大部分场景的IPv6来说,算法会直接在(2)结束;对于部分地址分配比较特殊的地域,算法会在执行(2)、(3)一遍后结束;只对于极个别情况,算法需要循环2遍。算法结束之后,使用sp1及其后的IP地址作为哈希算法的输入,所需要进行哈希处理的IP地址将缩短到原来的25%,哈希计算时间将大大缩短,而此部分的IP地址的位熵也大大提高,因而不会出现大量冲突的现象。
积极效果
本发明提供的方法通过修正部分IP地址位以获得较高的熵值,降低哈希冲突率,可以快速计算hash值的同时,也不会因为部分地区IP地址分配策略导致熵值过低,避免哈希值产生大量冲突,适用于对延迟要求较高且需要使用hash来实现负载均衡、流还原的网络。
本发明采用基于异或运算的修正方法:通过使用其他位与该位的异或值,提高该位的熵,增大随机性,降低冲突率。
本发明所提供的处理方法可以提高哈希计算的速度,从而提高数据处理速度,减少网络包转发/处理的延时,减少流还原需要处理的时间等。
附图说明
图1是本发明针对IPv6地址的数据快速处理方法的步骤图。
图2是采用本发明方法后修正数据与原始数据的测试结果对比图。
具体实施方式
本发明针对IPv6地址的数据快速处理方法,如图1所示,其主要步骤为:
1)通过对输入的IPv6地址进行离线学习,对海量数据包进行统计分析,从128位地址中选取随机性最高的连续32位,作为哈希输入的地址位,以及随机性最高的连续16位作为需要修正时的修正位。通常情况可取最后32位(通常情况下第97-112位的随机性不够高,需要进行修正,第113-128位随机性很高,不需要进行修正),并根据57-72位进行必要的修正。
2)对于二进制IP地址,指针sp1指向IP地址的97位-104位,sp2指向IP地址的第105位-112位,指针p1指向第57-64位,p2指向IP地址的第65-72位,每8位一组(可以直接按字节,即7、8字节):
3)计算sp1、sp2组的比特随机性,这里以比特1的比例计算,如果达到设定的阈值(此处设为0.5左右),算法结束;否则进行步骤4);
4)判断p1和p2字节是否为0,如果为零,说明p1和p2不适合用来修正,需要把p1和p2前移2字节后再进行操作;如果不为零,则进行步骤5);
5)对原始的地址数据进行修正:p1 xor sp1→sp1,p2 xor sp2→sp2;
6)p1和p2分别向前移动2字节,当p1到达IP开头时停止,否则回到步骤3)重新计算。
其中步骤1)只需要在所有步骤前预处理计算一次。对于大部分场景的IPv6来说,算法会直接在步骤3)结束;对于部分地址分配比较特殊的地域,算法会在执行步骤2)、3)、4)、5)、6)一遍后结束;只对于极个别情况,算法需要循环2遍。
算法结束之后,使用sp1及其后的IP地址作为哈希算法的输入,所需要进行哈希处理的IP地址将缩短到原来的25%,哈希计算时间将大大缩短,而此部分的IP地址的位熵也大大提高,因而不会出现大量冲突的现象。
发明人在CSTNET和6TUNET上使用上述方法进行实验,首先使用该方法进行数据处理,然后在原始数据上和经过该方法修正的数据上分别测试数据的熵值,测试结果如图2所示,其中,横坐标代表了7个不同的数据集;纵坐标代表了处理前和处理后该数据集下的数据的熵(越高越好,最高为1)。
特定的区域(7个数据集下)熵值大约提高206.47%左右,即大约提升0.23左右。
Claims (9)
1.一种针对IPv6地址的数据快速处理方法,步骤包括:
(1)通过对输入的IPv6地址进行离线学习,从128位地址中选取随机性最高的连续的32位作为哈希输入的地址位,以及随机性最高的连续16位作为需要修正时的修正位;
(2)对于步骤(1)选取出的二进制IP地址,每8位一组计算各组的比特随机性;
(3)利用修正位对比特随机性未达到设定阈值的地址位进行修正,使其随机性达到设定阈值;
(4)将达到设定阈值的IP地址位作为哈希算法的输入,完成针对IPv6地址的数据快速处理。
2.如权利要求1所述的针对IPv6地址的数据快速处理方法,其特征在于,所述随机性基于熵值进行计算。
3.如权利要求1所述的针对IPv6地址的数据快速处理方法,其特征在于,步骤(3)中基于异或运算,与或非运算对原始的地址数据进行修正。
4.如权利要求1所述的针对IPv6地址的数据快速处理方法,其特征在于,步骤(4)达到设定阈值的IP地址包括经步骤(3)修正后随机性达到设定阈值的地址位以及所选取的地址位中剩余的地址位。
5.如权利要求1所述的针对IPv6地址的数据快速处理方法,其特征在于,步骤(1)从128位地址中选取最后32位作为哈希输入的地址位,并根据第57-72位对第97-112位进行必要的修正。
6.如权利要求5所述的针对IPv6地址的数据快速处理方法,其特征在于,步骤(2)中使指针sp1指向IP地址的97位-104位,sp2指向IP地址的第105位-112位,指针p1指向第57-64位,p2指向IP地址的第65-72位,每8位一组,计算sp1、sp2组的比特随机性。
7.如权利要求6所述的针对IPv6地址的数据快速处理方法,其特征在于,步骤(3)包括:p1 xor sp1→sp1,p2 xor sp2→sp2。
8.如权利要求7所述的针对IPv6地址的数据快速处理方法,其特征在于,还包括:p1和p2分别向前移动2字节,当p1到达IP开头时停止,否则回到步骤(2)重新计算。
9.如权利要求8所述的针对IPv6地址的数据快速处理方法,其特征在于,步骤(4)中达到设定阈值的IP地址包括sp1及其后的IP地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510289655.XA CN104917852B (zh) | 2015-05-29 | 2015-05-29 | 一种针对IPv6地址的数据快速处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510289655.XA CN104917852B (zh) | 2015-05-29 | 2015-05-29 | 一种针对IPv6地址的数据快速处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104917852A CN104917852A (zh) | 2015-09-16 |
CN104917852B true CN104917852B (zh) | 2019-01-18 |
Family
ID=54086547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510289655.XA Active CN104917852B (zh) | 2015-05-29 | 2015-05-29 | 一种针对IPv6地址的数据快速处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104917852B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111181974A (zh) * | 2019-12-31 | 2020-05-19 | 国家计算机网络与信息安全管理中心 | 一种基于网络处理器实现流量预处理的装置和方法 |
CN116820787B (zh) * | 2023-08-31 | 2023-12-15 | 湖北芯擎科技有限公司 | 负载均衡方法、装置、电子设备及计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7126948B2 (en) * | 2002-03-21 | 2006-10-24 | Hewlett-Packard Development Company, L.P. | Method and system for performing a hash transformation to generate a hash pointer for an address input by using rotation |
CN101667958A (zh) * | 2008-09-01 | 2010-03-10 | 华为技术有限公司 | 选择哈希函数的方法、存储及查找路由表的方法及装置 |
CN101827137A (zh) * | 2010-04-13 | 2010-09-08 | 西安邮电学院 | 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法 |
CN103107945A (zh) * | 2013-01-10 | 2013-05-15 | 中国科学院信息工程研究所 | 一种快速查找ipv6路由的系统及方法 |
CN103297550A (zh) * | 2012-02-28 | 2013-09-11 | 中兴通讯股份有限公司 | 一种IPv6无状态地址的处理方法和系统 |
CN104579998A (zh) * | 2013-10-29 | 2015-04-29 | 国家计算机网络与信息安全管理中心 | 一种负载均衡处理装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7990973B2 (en) * | 2008-08-13 | 2011-08-02 | Alcatel-Lucent Usa Inc. | Hash functions for applications such as network address lookup |
-
2015
- 2015-05-29 CN CN201510289655.XA patent/CN104917852B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7126948B2 (en) * | 2002-03-21 | 2006-10-24 | Hewlett-Packard Development Company, L.P. | Method and system for performing a hash transformation to generate a hash pointer for an address input by using rotation |
CN101667958A (zh) * | 2008-09-01 | 2010-03-10 | 华为技术有限公司 | 选择哈希函数的方法、存储及查找路由表的方法及装置 |
CN101827137A (zh) * | 2010-04-13 | 2010-09-08 | 西安邮电学院 | 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法 |
CN103297550A (zh) * | 2012-02-28 | 2013-09-11 | 中兴通讯股份有限公司 | 一种IPv6无状态地址的处理方法和系统 |
CN103107945A (zh) * | 2013-01-10 | 2013-05-15 | 中国科学院信息工程研究所 | 一种快速查找ipv6路由的系统及方法 |
CN104579998A (zh) * | 2013-10-29 | 2015-04-29 | 国家计算机网络与信息安全管理中心 | 一种负载均衡处理装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104917852A (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9385957B1 (en) | Flow key lookup involving multiple simultaneous cam operations to identify hash values in a hash bucket | |
US11677866B2 (en) | Configurable parser and a method for parsing information units | |
US8037518B2 (en) | Data processing hash algorithm and policy management | |
WO2021135416A1 (zh) | 一种负载均衡方法和设备 | |
US9130776B2 (en) | Data path acceleration using HW virtualization | |
WO2017070970A1 (zh) | 一种确定路由的方法、对应装置及系统 | |
CN109034807B (zh) | 一种区块链数据同步方法 | |
KR20080080836A (ko) | 라우터 및 그 라우터에서 큐 처리방법 | |
CN104579998B (zh) | 一种负载均衡处理装置 | |
CN104917852B (zh) | 一种针对IPv6地址的数据快速处理方法 | |
US11621853B1 (en) | Protocol-independent multi-table packet routing using shared memory resource | |
CN113542145B (zh) | 以太网链路聚合组负载分担的方法以及网络设备 | |
CN111913749A (zh) | 基于流水线的sm3算法fpga实现方法及系统 | |
CN103475657B (zh) | 防syn泛洪攻击的处理方法和装置 | |
CN103428185B (zh) | 报文过滤/限速方法、系统及装置 | |
CN104660718A (zh) | 一种消息推送方法、装置及推送服务器 | |
Choi et al. | Accelerating memcached on aws cloud fpgas | |
CN111490969A (zh) | 网络设备中的灵活报头变更 | |
CN101803303A (zh) | 用于管理分段数据分组传输的方法和系统 | |
CN109005116B (zh) | 一种报文转发方法及装置 | |
US20120250692A1 (en) | Method and apparatus for temporal-based flow distribution across multiple packet processors | |
CN102035743A (zh) | 一种动态负载均衡分流方法 | |
US9485195B2 (en) | Instantaneous random early detection packet dropping with drop precedence | |
CN105282055B (zh) | 识别网络分组的内部目的地的方法及其装置 | |
CN111314220B (zh) | 最小化sfc时延的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |