一種針對IPv6地址的數據快速處理方法
【技術領域】
[0001]本發明涉及電通信技術領域,涉及一種對IP地址進行處理的方法,具體涉及一種針對IPv6地址的數據快速處理方法。
【背景技術】
[0002]近年來,網絡數據越來越呈現出3個V的特征,即數據容量(volume),增長速度(velocity)和種類(variety)。這些特征都在說明,網絡流量在不斷高速增大,而這又會給網絡傳輸、網絡處理帶來極大的挑戰。比如數據量太大時,會給本已不堪重荷的網絡造成擁堵。當某鏈路過載或失效的時候,負載均衡是保持網絡暢通的有效手段;更一般的情況下,負載均衡是防止網絡擁塞的重要手段之一。而隨著網絡帶寬的加速升級,數據量太大時,單機處理器即便處理能力再強,也會有處理不過來的時候。因此,負載均衡在網絡中便有了非常重要的意義。另外,在流還原等相關工作中,對于動輒幾千萬的連接數,如果不能做到有效的負載均衡,數據處理的效率將會成倍的降低,甚至根本無法完成。
[0003]然而,負載均衡和流還原等的效果都十分依賴于所選擇的哈希(hash)函數。再有,在加密、查找、聚簇、緩存等相關的領域,哈希也有著廣泛而重要的應用。
[0004]哈希算法是一種能夠將任意長度的二進制值映射為固定長度的較小二進制值的方法。哈希算法可以表示為:Hash值=H(Key),其中Key為原始值,H為Hash函數,Hash值為將Key按照Hash函數H映射而成的較小值。
[0005]目前有較多的方法可以針對IP數據包計算hash值,例如直接哈希、CRC哈希、XOR折疊、IPSX等。計算hash—般都需要用到其四元組(源IP地址,源端口號,目的IP地址,目的端口號)/五元組(源IP地址,源端口號,目的IP地址,目的端口號,協議號)。由于目前這些都是針對IPv4,所以還可以較好的完成哈希值計算的任務。然而由于IPv4地址的耗盡,以及國家對IPv6的大力推進,逐步升級到IPv6是大勢所趨。而IPv6地址長度是128位,增加到IPv4地址的4倍,因而如果還使用原有技術,處理時間將大大加長,勢必會成為網絡傳輸的一個瓶頸,不能滿足高速網絡的要求。
[0006]IPv6地址是按地域進行分配的,因而對于單個地域來說,IP地址的前半部分相同,后面會根據需求進行分配。如果只使用IPv6地址的第97位-128位進行哈希,處理速度將大大提升。對于IPv6,通過對3100萬條去重的數據包的整理,并將其IP地址按照地域進行分類和統計分析,發現二進制下“O”可以占到整個地址長度的65.57%。因此,雖然對于大部分地域來說,第97位-128位的熵值幾乎都可以達到0.9以上,此方法都可以產生較好的效果,但是對于一部分地域來說,IPv6地址的第97位-112位熵值非常低,幾乎為0,繼續使用這種哈希方法將會造成嚴重的哈希沖突,進而極大的影響了網絡處理設備的性能。
【發明內容】
[0007]基于此,為了應對IPv6將要取代IPv4的大潮,本發明提供一種針對IPv6地址的數據快速處理方法,更加有效的基于哈希計算處理IPv6地址,在大大縮短哈希值的計算時間同時,也不會產生嚴重的沖突,進而大大縮短網絡傳輸及數據處理中負載均衡、流還原等的時間,使網絡通信及數據處理能夠更加快速有效的進行。
[0008]本發明主要內容為:在對網絡數據包的四元組/五元組進行哈希計算前,先修正IP地址的第97位-112位,再使用IP地址的第97位-128位進行哈希值計算。
[0009]一種針對IPv6地址的數據快速處理方法,主要步驟包括:
[0010](I)通過對輸入的IPv6地址進行離線學習,從128位地址中選取連續的32位作為哈希輸入的地址位,以及隨機性最高的連續16位作為需要修正時的修正位(地址位和修正位彼此之間無重疊)。
[0011](2)對于步驟(I)選取出的二進制的地址位,每8位一組計算各組的比特隨機性;
[0012](3)利用修正位對比特隨機性未達到設定閾值的地址位進行修正,使其隨機性達到設定閾值;
[0013](4)將達到設定閾值的IP地址位作為哈希算法的輸入,完成針對IPv6地址的數據快速處理。
[0014]優選地,步驟(I)中從128位地址中選取隨機性最高的連續的32位作為哈希輸入的地址位。
[0015]進一步地,所述隨機性基于摘值進行計算。
[0016]進一步地,步驟(3)中基于異或運算,與或非運算對比特隨機性未達到設定閾值的地址位進行修正。
[0017]進一步地,步驟(4)達到設定閾值的IP地址包括經步驟(3)修正后隨機性達到設定閾值的地址位以及所選取的地址位中剩余的地址位(即本身隨機性達到設定閾值不需要進行修正的地址位)。
[0018]一般地,步驟(I)從128位地址中選取最后32位(即第97位-128位)作為哈希輸入的地址位,并根據57-72位對第97-112位進行必要的修正。
[0019]進一步地,步驟⑵中使指針spl指向IP地址的97位-104位,sp2指向IP地址的第105位-112位,指針pi指向第57-64位,p2指向IP地址的第65-72位,每8位一組,計算spl、sp2組的比特隨機性。
[0020]進一步地,步驟(3)包括:plxor spl — spl, p2 xor sp2 — sp2o
[0021]進一步地,上述方法還包括:pl和p2分別向前移動2字節,當pi到達IP開頭時停止,否則回到步驟(2)重新計算。
[0022]進一步地,步驟(4)中達到設定閾值的IP地址包括spl及其后的IP地址。
[0023]其中(I)只需要在所有步驟前預處理計算一次。對于大部分場景的IPv6來說,算法會直接在(2)結束;對于部分地址分配比較特殊的地域,算法會在執行(2)、(3) 一遍后結束;只對于極個別情況,算法需要循環2遍。算法結束之后,使用spl及其后的IP地址作為哈希算法的輸入,所需要進行哈希處理的IP地址將縮短到原來的25%,哈希計算時間將大大縮短,而此部分的IP地址的位熵也大大提高,因而不會出現大量沖突的現象。
[0024]積極效果
[0025]本發明提供的方法通過修正部分IP地址位以獲得較高的熵值,降低哈希沖突率,可以快速計算hash值的同時,也不會因為部分地區IP