據(jù)包;還用于在第二判斷模塊判斷到合并包的大小小于或等于通信連接的最大 傳輸單元時,通過通信連接發(fā)送合并包。
[0217] 具體地,最大傳輸單元是指Maximum Transmission Unit,縮寫為MTU,是指通信連 接所能通過的最大數(shù)據(jù)包大小,超過該最大傳輸單元的數(shù)據(jù)包將被丟棄。本實施例中通過 判斷合并包的大小是否超過通信連接的最大傳輸單元,防止合并包太大無法傳輸,保證數(shù) 據(jù)能夠正常傳輸。在判斷為否時,可以將取出的重發(fā)包丟棄或者等待與下一次待發(fā)送的原 始數(shù)據(jù)包合并后發(fā)送。
[0218] 如圖19所示,在一個實施例中,提供了一種數(shù)據(jù)接收裝置1900,具有實現(xiàn)上述各 個實施例的數(shù)據(jù)接收方法的功能。該數(shù)據(jù)接收裝置1900包括:接收單元1901、拆分單元 1902、第一判斷單元1903、第一重發(fā)包處理單元1904和第二重發(fā)包處理單元1905。
[0219] 接收單元1901,用于接收通過通信連接傳來的數(shù)據(jù)包。具體地,數(shù)據(jù)發(fā)送端102在 執(zhí)行上述步驟308后,合并包通過通信連接傳遞到數(shù)據(jù)接收端104,接收單元1901用于接收 該合并包。若數(shù)據(jù)發(fā)送端102未進行合并,進而發(fā)出原始數(shù)據(jù)包,則相應(yīng)地接收單元1901 用于接收數(shù)據(jù)發(fā)送端102發(fā)來的原始數(shù)據(jù)包。該通信連接是指數(shù)據(jù)接收端104與數(shù)據(jù)發(fā)送 端102間的通信連接。
[0220] 拆分單元1902,用于檢測到接收到的數(shù)據(jù)包為合并包時,將合并包拆分為原始數(shù) 據(jù)包和重發(fā)包。
[0221] 具體地,拆分單元1902可用于根據(jù)接收到的數(shù)據(jù)包的頭部信息中的合并包識別 標(biāo)志位的值,來判斷接收到的數(shù)據(jù)包是否為合并包。若接收到的是合并包,則繼續(xù)進行后續(xù) 對合并包的處理流程;否則,將接收到的數(shù)據(jù)包按照原始數(shù)據(jù)包進行處理。
[0222] 拆分單元1902可用于對合并包的頭部信息進行協(xié)議分析,具體根據(jù)合并包的頭 部信息中的數(shù)據(jù)指針,可以獲取到相應(yīng)的數(shù)據(jù)內(nèi)容;原始數(shù)據(jù)包和重發(fā)包各自的包序號也 記錄在合并包的頭部信息中,可直接獲得;通過頭部信息中的源地址和目的地址,可以確定 原始數(shù)據(jù)包和重發(fā)包的源地址和目的地址。將拆分出的原始數(shù)據(jù)包保留。
[0223] 第一判斷單元1903,用于根據(jù)重發(fā)包的包序號判斷是否首次接收到包序號的數(shù)據(jù) 包。具體地,在一個實施例中,第一判斷單元1903可用于在每接收到一個數(shù)據(jù)包時,判斷是 否存在與其包序號匹配的已接收記錄。如果存在已接收記錄,則說明不是首次接收到,如果 不存在已接收記錄,則說明是首次接收到,此時再對應(yīng)應(yīng)該數(shù)據(jù)包的包序號存儲已接收記 錄,以備下次接收到數(shù)據(jù)包時進行去重處理。所謂去重是指將數(shù)據(jù)發(fā)送端102最初發(fā)送的 相應(yīng)包序號的數(shù)據(jù)包以及后續(xù)發(fā)送的相應(yīng)重發(fā)包選擇其一保留的過程。
[0224] 第一重發(fā)包處理單元1904,用于在第一判斷單元判斷到首次接收到重發(fā)包時,保 留重發(fā)包。具體地,若判定首次接收到相應(yīng)包序號的數(shù)據(jù)包,說明數(shù)據(jù)發(fā)送端102最初發(fā)出 的相應(yīng)包序號的數(shù)據(jù)包已經(jīng)丟失或者延時很大,此時可以直接用該重發(fā)包來替代數(shù)據(jù)接收 端104最初發(fā)出的相應(yīng)包序號的數(shù)據(jù)包,避免產(chǎn)生過長的延時。
[0225] 第二重發(fā)包處理單元1905,用于在第一判斷單元判斷到非首次接收到重發(fā)包時, 丟棄重發(fā)包。具體地,若判定不是首次接收到相應(yīng)包序號的數(shù)據(jù)包,說明數(shù)據(jù)發(fā)送端102之 前發(fā)送的相應(yīng)包序號的數(shù)據(jù)包已經(jīng)被成功接收,該重發(fā)包不再起作用,則將該重發(fā)包丟棄。
[0226] 上述數(shù)據(jù)接收裝置1900,接收到合并包后,拆分出原始數(shù)據(jù)包和重發(fā)包。然后根據(jù) 重發(fā)包的包序號進行去重處理,如果首次接收到該包序號的數(shù)據(jù)包,說明該包序號的數(shù)據(jù) 包在傳輸過程中丟失,此時保留該重發(fā)包來替代丟失的數(shù)據(jù)包。如果不是首次接收到該包 序號的數(shù)據(jù)包,說明該包序號的數(shù)據(jù)包之前已被成功接收,此時可直接丟棄該重發(fā)包。這樣 通過去重處理,保證丟失的數(shù)據(jù)包能夠用重發(fā)包來替代,而已接收到的數(shù)據(jù)包的重發(fā)包則 直接丟棄,保證了數(shù)據(jù)傳輸?shù)臏蚀_性和完整性,可以保證高實時性的數(shù)據(jù)傳輸?shù)馁|(zhì)量。
[0227] 如圖20所示,在一個實施例中,第一判斷單元1903包括:存儲位置序號映射單元 1903a、數(shù)值獲取單元1903b和判斷執(zhí)行單元1903c。
[0228] 存儲位置序號映射單元1903a,用于求取重發(fā)包的包序號除以通信連接所對應(yīng)的 存儲位置總數(shù)所得的余數(shù),作為相應(yīng)的存儲位置序號。
[0229] 具體地,每個通信連接會對應(yīng)有相應(yīng)的存儲區(qū)域,該存儲區(qū)域中包括固定數(shù)量的 存儲位置,每個存儲位置用存儲位置序號來唯一標(biāo)識。存儲位置總數(shù)是指通信連接所對應(yīng) 的存儲區(qū)域中用于存儲數(shù)值的存儲位置的總數(shù)量。
[0230] 數(shù)據(jù)包的包序號是遞增產(chǎn)生的,比如若一個數(shù)據(jù)包的包序號為0,則下一個數(shù)據(jù)包 的包序號則是1,再下一個則是2,以此類推。將包序號除以存儲位置總數(shù)求得余數(shù),獲得存 儲位置序號,這樣每固定數(shù)量的數(shù)據(jù)包的包序號會循環(huán)利用該固定數(shù)量的存儲位置來進行 去重處理。
[0231] 將包序號除以存儲位置總數(shù)求得余數(shù),也就是將包序號按存儲位置總數(shù)取模。若 存儲位置總數(shù)為2的整數(shù)次冪,則可以截取二進制的包序號的低位來作為存儲位置序號, 相當(dāng)于將包序號除以存儲位置總數(shù)求得余數(shù)。
[0232] 數(shù)值獲取單元1903b,用于獲取存儲位置序號所對應(yīng)的存儲位置處的數(shù)值。
[0233] 具體地,根據(jù)得到的存儲位置序號,獲取對應(yīng)于通信連接的存儲區(qū)域中相應(yīng)存儲 位置處的數(shù)值。合并包的收斂會話標(biāo)識是與通信連接對應(yīng)的,多個收斂會話標(biāo)識可與一個 通信連接對應(yīng),可獲取與收斂會話標(biāo)識對應(yīng)的存儲區(qū)域中,存儲位置序號所對應(yīng)的存儲位 置處的數(shù)值。若存儲位置用數(shù)組表示,則相應(yīng)地,數(shù)值獲取單元1903b用于獲取數(shù)組序號所 對應(yīng)的數(shù)組中所存儲的數(shù)值。
[0234] 判斷執(zhí)行單元1903c,用于判斷包序號是否大于獲取的數(shù)值。
[0235] 具體地,通信連接所對應(yīng)的各個存儲位置處具有初始值,且該初始值小于包序號 的最小值。這樣判斷執(zhí)行單元1903c可用于在剛開始去重處理的工作時,就可以直接通過 判定包序號大于初始值而判定首次接收到相應(yīng)包序號的數(shù)據(jù)包。
[0236] 第一重發(fā)包處理單元1904還用于將存儲位置序號所對應(yīng)的存儲位置處的數(shù)值修 改為包序號。
[0237] 具體地,若判定包序號大于獲取的數(shù)值,說明首次接收到相應(yīng)包序號的數(shù)據(jù)包,此 時將該存儲位置序號所對應(yīng)的存儲位置處的數(shù)值修改為包序號。這樣下次接收到同一包序 號的數(shù)據(jù)包時,就因為包序號與該存儲位置處的數(shù)值相等而判定不是首次接收到該包序號 的數(shù)據(jù)包。
[0238] 舉例說明,參照圖11,通信連接所對應(yīng)的存儲位置用數(shù)組m表示,數(shù)組m的長度為 N,也就是上述的存儲位置總數(shù)。數(shù)據(jù)接收端104在接收到一個包序號為M的數(shù)據(jù)包后,對 該包序號M按數(shù)組m的長度N取模,求得數(shù)組序號id為Mod(M,N)。從數(shù)組m中讀取該數(shù) 組序號id所對應(yīng)的數(shù)值為m(id),然后比較包序號M與數(shù)值m(id)的大小。若M>m(id),則 將接收到的數(shù)據(jù)包保留,若M<m(id),則將接收到的數(shù)據(jù)包丟棄。
[0239] 本實施例中,通過固定數(shù)量的存儲位置來作為判斷是否首次接收到相應(yīng)包序號的 數(shù)據(jù)包的依據(jù),占用存儲資源極少,又可以高效地完成去重處理。
[0240] 如圖21所示,在一個實施例中,數(shù)據(jù)接收裝置1900還包括:當(dāng)前數(shù)據(jù)包發(fā)送工作 方式確定單元1906、網(wǎng)絡(luò)質(zhì)量參數(shù)計算單元1907和工作方式切換請求單元1908。
[0241] 當(dāng)前數(shù)據(jù)包發(fā)送工作方式確定單元1906,用于根據(jù)接收到的數(shù)據(jù)包的頭部信息確 定當(dāng)前數(shù)據(jù)包發(fā)送工作方式。具體地,接收到的數(shù)據(jù)包的頭部信息中包括工作方式標(biāo)志位, 當(dāng)前數(shù)據(jù)包發(fā)送工作方式確定單元1906用于通過該標(biāo)志位的值可以確定數(shù)據(jù)發(fā)送端102 的當(dāng)前數(shù)據(jù)包發(fā)送工作方式。這里數(shù)據(jù)包發(fā)送工作方式是指單獨發(fā)送原始數(shù)據(jù)包的獨立發(fā) 送方式和將原始數(shù)據(jù)包和重發(fā)包合并后發(fā)送的合并發(fā)送方式。
[0242] 網(wǎng)絡(luò)質(zhì)量參數(shù)計算單元1907,用于計算通信連接所對應(yīng)的網(wǎng)絡(luò)質(zhì)量參數(shù)。
[0243] 具體地,網(wǎng)絡(luò)質(zhì)量參數(shù)是指衡量通信連接的傳輸性能的量化參數(shù),比如丟包率、傳 輸錯誤率、數(shù)據(jù)包延遲時間變化、數(shù)據(jù)包傳輸平均延遲時間等。其中,丟包率是指數(shù)據(jù)在傳 輸中被丟失的比率,在一個實施例中,可以連續(xù)接收到的指定數(shù)量的數(shù)據(jù)包中數(shù)據(jù)包總數(shù) 為被除數(shù)、該多個數(shù)據(jù)包中包序號最大值減去最小值再加一為除數(shù)計算商,將該商作為丟 包率。數(shù)據(jù)包延遲時間可以通過計算接收到數(shù)據(jù)包的時間戳與數(shù)據(jù)包頭部信息中的發(fā)出數(shù) 據(jù)包的時間戳的差值獲得。數(shù)據(jù)包傳輸平均延遲時間則可以通過計算多個數(shù)據(jù)包延遲時間 的平均值得到。
[0244] 工作方式切換請求單元1908,用于若當(dāng)前數(shù)據(jù)包發(fā)送工作方式為原始數(shù)據(jù)包單獨 發(fā)送方式,且網(wǎng)絡(luò)質(zhì)量參數(shù)在用于表示網(wǎng)絡(luò)質(zhì)量差的第一預(yù)設(shè)參數(shù)范圍內(nèi),則通過通信連 接發(fā)送工作方式切換請求。
[0245] 具體地,第一預(yù)設(shè)參數(shù)范圍是預(yù)先定義的用于表示網(wǎng)絡(luò)質(zhì)量差的數(shù)值范圍,第一 預(yù)設(shè)參數(shù)范圍可以是超過第一預(yù)設(shè)值,比如若網(wǎng)絡(luò)質(zhì)量參數(shù)為丟包率,則該第一預(yù)設(shè)值比 如可以取0. 01~0. 02中的值。若網(wǎng)絡(luò)質(zhì)量參數(shù)為數(shù)據(jù)包傳輸平均延遲時間,則該第一預(yù)設(shè) 值比如可以取0. 005~0. 01中的值。工作方式切換請求是用于請求數(shù)據(jù)發(fā)送端102進行 工作方式切換的請求,在當(dāng)前數(shù)據(jù)包發(fā)送工作方式為原始數(shù)據(jù)包單獨發(fā)送方式的情況下, 使得數(shù)據(jù)發(fā)送端102在接收到該工作方式切換請求后進行工作方式切換,切換為合并包發(fā) 送方式。數(shù)據(jù)發(fā)送端102在切換為合并包發(fā)送方式后,將緩存隊列以及與合并包發(fā)送方式 相關(guān)的變量進行初始化,與合并包發(fā)送方式相關(guān)的變量比如上一次檢測到具有時間戳的數(shù) 據(jù)包的時間戳tslastsign〇
[0246]在另一個實施例中,工作方式切換請求單元1908用于若當(dāng)前數(shù)據(jù)包發(fā)送工作方 式為合并包發(fā)送方式,且網(wǎng)絡(luò)質(zhì)量參數(shù)在用于表示網(wǎng)絡(luò)質(zhì)量好的第二預(yù)設(shè)參數(shù)范圍內(nèi),則 通過通信連接發(fā)送工作方式切換請求。
[0247] 具體地,第二預(yù)設(shè)參數(shù)范圍是預(yù)先定義的用于表示網(wǎng)絡(luò)質(zhì)量好的數(shù)值范圍,第二 預(yù)設(shè)參數(shù)范圍可以是低于第二預(yù)設(shè)值,比如若網(wǎng)絡(luò)質(zhì)量參數(shù)為丟包率,則該第二預(yù)設(shè)值比 如可以取0. 01~0. 02中的值。若網(wǎng)絡(luò)質(zhì)量參數(shù)為數(shù)據(jù)包傳輸平均延遲時間,則該第二預(yù) 設(shè)值比如可以取〇. 005~0. 01中的值。工作方式切換請求是用于請求數(shù)據(jù)發(fā)送端102進 行工作方式切換的請求,在當(dāng)前數(shù)據(jù)包發(fā)送工作方式為合并包發(fā)送方式的情況下,使得數(shù) 據(jù)發(fā)送端102在接收到該工作方式切換請求后進行工作方式切換,切換為原始數(shù)據(jù)包單獨 發(fā)送方式。在原始數(shù)據(jù)包單獨發(fā)送方式下發(fā)生丟包,可以采用丟包重傳方式重新獲取相應(yīng) 的數(shù)據(jù)包。
[0248]本實施例中,考慮到合并包發(fā)送方式會增加單個數(shù)據(jù)包的數(shù)據(jù)量,并非適用于所 有網(wǎng)絡(luò)環(huán)境,本實施例中根據(jù)網(wǎng)絡(luò)質(zhì)量參數(shù)來動態(tài)調(diào)整數(shù)據(jù)發(fā)送端102的數(shù)據(jù)包發(fā)送工作 方式,提高了兼容性和適應(yīng)性。
[0249] 在一個實施例中,網(wǎng)絡(luò)質(zhì)量參數(shù)計算單元1907還用于計算對應(yīng)于通信連接的丟 包率。工作方式切換請求單元1908還用于若當(dāng)前數(shù)據(jù)包發(fā)送工作方式為原始數(shù)據(jù)包單獨 發(fā)送方式,且計算出的丟包率超過第一預(yù)設(shè)值,則通過通信連接發(fā)送工作方式切換請求。工 作方式切換請求單元1908還用于若當(dāng)前數(shù)據(jù)包發(fā)送工作方式為合并包發(fā)送方式,且計算 出的丟包率低于第二預(yù)設(shè)值,則通過通信連接發(fā)送工作方式切換請求。
[0250] 在一個實施例中,網(wǎng)絡(luò)質(zhì)量參數(shù)計算單元1907還用于計算當(dāng)前對應(yīng)于通信連接 的實時丟包率,根據(jù)上一次計算出的平均丟包率和當(dāng)前的實時丟包率計算當(dāng)前的平均丟包 率。工作方式切換請求單元1908還用于若當(dāng)前數(shù)據(jù)包發(fā)送工作方式為原始數(shù)據(jù)包單獨發(fā) 送方式,且當(dāng)前的平均丟包率超過第一預(yù)設(shè)值,則通過通信連接發(fā)送工作方式切換請求。工 作方式切換請求單元1908還用于若當(dāng)前數(shù)據(jù)包發(fā)送工作方式為合并包發(fā)送方式,且當(dāng)前 的平均丟包率低于第二預(yù)設(shè)值,則通過通信連接發(fā)送工作方式切換請求。其中個,網(wǎng)絡(luò)質(zhì)量 參數(shù)計算單元1907具體可用于采用上述公式(3)來計算平均丟包率Pt。
[0251] 如圖22所示,在一個實施例中,數(shù)據(jù)接收裝置1900還包括:工作方式切換記錄保 存單元1909、工作方式標(biāo)志位值獲取單元1910和第二判斷單元1911。
[0252] 工作方式切換記錄保存單元1909,用于保存工作方式切換