本發明涉及通信技術領域,更具體地,涉及數據包順序識別方法及設備。
背景技術:
數據包順序是數據包的一個重要屬性,也是網絡設計、分析、研究和實際應用中的一個重要參數。數據包的順序關系到實際系統的性能,反應了網絡中可能存在的異常情況,因此在實際網絡中,比如在互聯網和數據中心網絡中,數據包順序直接關系到了網絡的性能和服務質量。在傳統的方法中,數據包順序恢復最簡單的方法是從發送者發送數據序列號到接收者。更具體的說,在每個數據包發送時附加一個序列號通過序列號來恢復數據的順序和識別亂序。這樣的測量方法要求對每一個數據包進行更改加入序列號,從而帶來了很大的額外開銷,無法適用于大規模數據包的網絡,同時在很多情況下,測量方法無法對數據包進行改變,因此無法在數據包中加入序列號,也導致了數據包時延測量方法的失效。
技術實現要素:
本發明提供一種克服上述問題或者至少部分地解決上述問題的數據包順序識別方法及設備。
根據本發明的一個方面,提供一種數據包順序識別方法,包括:
S1、發送的數據包的第一結合擴展哈希值以及發送個數至接收端;
S2、根據接收的數據包計算第二結合擴展哈希值和接收個數;以及
S3、根據所述第一結合擴展哈希值和第二結合擴展哈希值的關系以及發送個數和接收個數的關系,判斷數據包的順序是否有誤。
根據本發明的另一個方面,提供一種發送端,所述發送端將發送的數據包的第一結合擴展哈希值以及發送個數發射至接收端。
根據本發明的另一個方法,提供一種接收端,所述接收端用于根據接收的數據包計算第二結合擴展哈希值和接收個數;以及
當第一結合擴展哈希值等于第二結合擴展哈希值,且發送個數等于接收個數時,則認定數據包的順序無誤。
本申請提出了一種基于數據包的哈希值的亂序識別和順序恢復方法和設備,極大的提高了測量的效率,同時本發明的方法無須對數據包做任何改變,極大的提高了本方法的使用方位,減少了對網絡數據流的影響,使得數據包的亂序識別和順序恢復能夠應用在高速率大規模數據包的網絡中。
附圖說明
圖1為根據本發明實施例的流程示意圖;
圖2為根據本發明實施例的數據包順序確定流程示意圖。
具體實施方式
下面結合附圖和實施例,對本發明的具體實施方式作進一步詳細描述。以下實施例用于說明本發明,但不用來限制本發明的范圍。
圖1給出了根據本發明實施例的一種數據包順序識別方法的總體示意圖。總的來說,該方法包括以下步驟:
發送端基于哈希函數將發送的數據包分組,將每一組中的數據包的第一結合擴展哈希值Oi以及發送個數w發射至接收端;
接收端根據接收的數據包計算第二結合擴展哈希值O′i和接收個數w’;以及
當所述第一結合擴展哈希值Oi等于第二結合擴展哈希值O′i,且發送個數w等于接收個數w’時,則數據包的順序無誤;或當所述第一結合擴展哈希值不等于第二擴展哈希值,且發送個數大于接收個數時,根據第一結合哈希值獲得接收的數據包的順序。
本申請提出了一種基于數據包的哈希值的亂序識別和順序恢復方法和設備,極大的提高了測量的效率,同時本發明的方法無須對數據包做任何改變,極大的提高了本方法的使用方位,減少了對網絡數據流的影響,使得數據包的亂序識別和順序恢復能夠應用在高速率大規模數據包的網絡中。
在一個具體實施例中,發送端根據特定的哈希函數將發送的一段數據包分成組,該哈希函數將所有數據包映射到[1,g]范圍的整數。因此這段中的數據包被分為g組,也就是G1,G2,…,Gg。每組含有ω個數據包。根據發送順序,給一組中的數據包標記升序的序號。因此,用Gi=(Si1,Si2,...,Siω)表示組Gi中的數據包,其中sij是組Gi中的第j個包。
在一個具體實施例中,由于哈希值不包含任何順序信息,因此采用將順序信息編碼到哈希值中,即本方法采用擴展哈希值來識別每個每個數據包:對組Gi,發送端計算第j個數據包sij的擴展哈希值,也就是hij=Hash(sij)*j,其中,hij為組Gi中第j個數據包的擴展哈希值,用Hi表示擴展哈希向量,Hi=(hi1,hi2,...,hiω)T。
對于一組數據包Gi,發送端計算該組所有數據包的擴展哈希值。在接收端,如果數據包的順序于發送端完全相同,那么擴展哈希值也應該完全相同,因此接收端可以通過從發送端傳輸哈希值到接收端來檢查順序信息。
因為每個包都擁有一個擴展哈希值會導致高開銷。同時,這種方法不能應用在丟包情況下。相比于每個組里的數據包數量,丟失和亂序的數據包非常少。接收到的數據包順序應該同發送的順序很相似。在一個具體實施例中,本方法并沒有發送所有數據包的擴展哈希值。我們只把亂序信息發送給接收端。為了實現這一目的,發送端發送組內所有包的擴展哈希值的線性組合。
具體的說,發送端計算組Gi中的ω個數據包的k個線性組合Oi=(oi1,oi2,...,oik)T。其中k個線性組合的系數互相獨立,可以選擇一個各行獨立的系數矩陣M=(axy)1≤x≤k,1≤y≤ω,αxy即表示互相獨立的系數,則Oi=MHi。組Gi的向量Oi=(oi1,oi2,...,oik)T為第一結合擴展哈希值。
應該注意的是,Oi有k個值,Hi有ω個值。對組Gi,發送端計算該組數據包的第一結合擴展哈希Oi,然后發送一組數據(Oi,ω)到接收端。我們把這個數據組叫做順序代表值EXH,順序代表值具有k個值。對每段數據包,發送端可以按順序計算所有組的順序代表值。
在一個具體實施例中,接收端用與發送端相同的哈希函數把接收的一段數據包分割成組。假定接收到的組為G′1,G′2,...,G′g,對接收的組G′i,我們把組表示為G′i=(ri1,ri2,...,riω′)。
在一個具體實施例中,接收端把一個接收到的第i組中的第j個數據包rij的擴展哈希值表示為h′ij=Hash(rij)*j,j表示一個特定的哈希函數,此哈希函數與接收端所用的哈希函數一致。用Hi表示擴展哈希向量,H′i=(h′i1,h′i2,...,h′iω′)T。對組Gi。
在一個具體實施例中,接收端對應計算收到的每一組數據的順序代表值。接收端計算,如果ω′=ω且Oi=O′i,那么G′i中的數據包應該與發送端的Gi中的數據包相同。Q′i=MH′i,由此接收端判斷接收到的數據包的順序與發送端發出的數據包的順序一致。
在一個具體實施例中,如果Qi≠Q′i或者ω′≠ω,那么兩組數據包就不相同。這意味著從組Gi到G′i可能有數據包的丟失或亂序。
在一個具體實施例中,如果ω′<ω,表明這一組數據包中有數據包丟失。
圖2給出了數據包順序確定流程示意圖。此時計算c=ω-ω′,說明接收到的該組中有c個數據包丟失,由于數據包丟失,這c個數據包的擴展哈希值未知,假設擴展哈希值為x1,x2,...,xc。此時接收到的w’個數據可能處于w個數據中任意w’個可能的位置,根據實際網絡情況,遍歷w’個數據所有可能的情況。
對于w’個數據的每一種可能情況,計算剩余ω′個數據包的擴展哈希值,得到一個關于x1,x2,...,xc的方程,即
對于M矩陣中的每一行系數,都可以得到一個對應的方程,而由c個方程可以組成一個方程組,這c個方程組解出x1,x2,...,xc的值。
任意選取兩組M中不同的系數構成方程組,得到兩組x1,x2,...,xc的解,如果兩組解相同,則代表這組解x1,x2,...,xc對應的c個位置為數據包真實丟失的位置,對應的w’個數據包的位置為數據包的原始位置,從而得到了所有的數據包的位置和順序。
在一個具體實施例中,本發明還提供一種發送端,所述發送端將發送的數據包的第一結合擴展哈希值以及發送個數發射至接收端。
在一個具體實施例中,所述發送端包括:
第一哈希值模塊,記錄數據包的發送個數并將發送的數據包按升序排列,基于哈希函數獲得每個數據包的擴展哈希值;
第一哈希向量模塊,與所述第一哈希值模塊連接,基于所述第一哈希值模塊的擴展哈希值得到擴展哈希向量;
第一結合哈希模塊,與所述第一哈希向量模塊連接,基于所述擴展哈希向量與系數矩陣M=(axy)1≤x≤k,1≤y≤ω的乘積得到第一結合擴展哈希值,所述矩陣的各行獨立;以及
發送模塊,與所述第一哈希值模塊和所述第一結合哈希模塊連接,基于所述第一結合擴展哈希值與發送個數獲得順序代表值,并發送至接收端。
在一個具體實施例中,本發明還提供一種接收端,所述接收端用于根據接收的數據包計算第二結合擴展哈希值和接收個數;以及
當第一結合擴展哈希值等于第二結合擴展哈希值,且發送個數等于接收個數時,則認定數據包的順序無誤。
在一個具體實施例中,所述接收端還用于當所述第一結合擴展哈希值不等于第二擴展哈希值,且發送個數大于接收個數時,根據第一結合哈希值獲得接收的數據包的順序。
在一個具體實施例中,所述接收端包括:
第二哈希值模塊,記錄數據包的接收個數并基于哈希函數獲得接收的每個數據包的擴展哈希值;
第二哈希向量模塊,與所述第二哈希值模塊連接,基于所述第二哈希值模塊獲得的所有擴展哈希值得到第二擴展哈希向量;
第二結合哈希模塊,與所述第二哈希向量模塊連接,基于所述第二擴展哈希向量與所述矩陣的乘積得到第二結合擴展哈希值;以及
判斷模塊,判斷數據包的順序:
當所述第一結合擴展哈希值等于第二結合擴展哈希值,且發送個數等于接收個數時,則認定數據包的順序無誤;或
當所述第一結合擴展哈希值不等于第二擴展哈希值,且發送個數大于接收個數時,根據第一結合哈希值獲得接收的數據包的順序。
在一個具體實施例中,所述判斷模塊根據第一結合哈希值獲得接收的數據包的順序包括:
遍歷發送的數據包的順序,基于所述矩陣的每一行的系數,得到丟失數據包與第一結合擴展哈希值的方程組;以及
任意選取所述方程組中不同系數構成的方程,得到兩組丟失數據包的解,若兩組解相同,則該組解對應的位置為數據包真實丟失的位置,接收的數據包的位置為數據包的原始位置。
最后,本申請的方法僅為較佳的實施方案,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。