專利名稱:一種魯棒性頭壓縮中更新亂序深度的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)通信領(lǐng)域中的一種魯棒性頭壓縮算法,主要是提出一種在亂序遞 交鏈路環(huán)境下,通過(guò)測(cè)量亂序比例(reorder_ratio),閉環(huán)修復(fù)LSB(Least Significant Bits)算法中使用的P值的方法。
背景技術(shù):
由于物理?xiàng)l件的限制,移動(dòng)通信系統(tǒng)中的無(wú)線鏈路與有線鏈路相比傳輸速率較 低,誤碼率較高。為了能有效利用有限的無(wú)線信道帶寬資源,引入了魯棒性頭壓縮技術(shù) (RObust Header Compress,以下簡(jiǎn)稱R0HC)。ROHC的核心是利用業(yè)務(wù)流的分組之間的信息 冗余來(lái)透明的壓縮和解壓縮直接相連節(jié)點(diǎn)間的分組頭中的信息。ROHC技術(shù)由IETF(互聯(lián)網(wǎng) 工程任務(wù)組)的RFC3095文檔進(jìn)行描述。LSB (Least Significant Bits)算法是ROHC技術(shù)中的重要算法,它主要用于壓縮 序列號(hào)MSN (Master Sequence Number)信息。LSB壓縮算法通過(guò)使用一個(gè)參考值V_ref以 及指定P值,將一個(gè)待壓縮的,占kl比特位的值A(chǔ)進(jìn)行LSB壓縮,隨后得到一個(gè)壓縮后的, 占用更少比特位k2的,與V_ref關(guān)聯(lián)的值B。通過(guò)LSB壓縮,沒(méi)有變化的比特位被刪除掉 了,B值所表示的即為從值V_ref變化到值A(chǔ)的最低有效位(即B = A的低k2位)。采用 LSB解壓縮將壓縮后的值進(jìn)行還原的過(guò)程與上述過(guò)程相反。ROHC是在2001年發(fā)布的,因?yàn)楫?dāng)時(shí)的鏈路幾乎不存在亂序遞交的情況,所以ROHC 在設(shè)計(jì)之初就被定義為應(yīng)用在按序遞交的鏈路上。隨著時(shí)間地推移,ROHC已經(jīng)廣泛地應(yīng)用 于越來(lái)越多的無(wú)線設(shè)備上,和其它壓縮算法相比,“不能有效地工作在亂序遞交鏈路上”也 就成為了 ROHC的一個(gè)弱點(diǎn)。在按序遞交的鏈路上,從源端ROHC壓縮器發(fā)送出去的壓縮包在通過(guò)鏈路傳輸后, 在目的端可以被按序遞交給ROHC解壓器。比如壓縮器依次發(fā)送5包數(shù)據(jù)包1,2,3,4,5,那 么解壓器接收到這些數(shù)據(jù)包的順序也是1,2,3,4,5,這樣的一個(gè)過(guò)程是ROHC期望的,同時(shí) 也是它正常工作的一個(gè)條件;在非按序遞交鏈路上,數(shù)據(jù)包的順序有可能被底層鏈路影響, 使得位于目的端的ROHC解壓器接收到的數(shù)據(jù)包順序和源端ROHC壓縮器發(fā)送的順序不一 致,最終導(dǎo)致解壓器無(wú)法正常解壓數(shù)據(jù)包。比如壓縮器依次發(fā)送5包數(shù)據(jù)包1,2,3,4,5,在 鏈路傳送過(guò)程中,由于數(shù)據(jù)包3在底層鏈路上發(fā)生了錯(cuò)誤重傳,使得解壓器接收到這些數(shù) 據(jù)包的順序是1,2,4,5,3,其中數(shù)據(jù)包3被稱為序列晚包,數(shù)據(jù)包4,5被稱為序列早包,序列 早包的個(gè)數(shù)被稱為亂序深度,此例中為2。這樣的一個(gè)過(guò)程是不被ROHC期望的,對(duì)于序列早 包的異常處理可能會(huì)引起序列晚包的解壓失敗,從而導(dǎo)致解壓器狀態(tài)遷移,影響壓縮效率; 對(duì)于序列晚包的異常處理可能會(huì)引起壓縮器和解壓器上下文不同步,影響健壯性。由于數(shù) 據(jù)包在鏈路中的亂序過(guò)程是無(wú)法預(yù)期的,它可能發(fā)生在ROHC處理過(guò)程的任何階段,所以在 發(fā)生這種情況時(shí),對(duì)數(shù)據(jù)包3,4,5的處理方法會(huì)直接影響到整個(gè)ROHC的效率和健壯性。為了改善這種情況,在2006年IETE發(fā)布了 RFC42M文檔,在這份文檔中,圍繞著 ROHC如何兼容亂序遞交的鏈路,提出了多種能夠提高其壓縮效率和健壯性的方法。但是在RFC4224中提出的所有方案中,由于壓縮器和解壓器之間不存在有關(guān)亂序深度的反饋,壓縮 器無(wú)法確切地獲得當(dāng)前鏈路的最大亂序深度,最終導(dǎo)致在選擇合適的LSB編碼P值時(shí),壓縮 器只能單方面進(jìn)行估計(jì),而這樣一種估計(jì)在一些場(chǎng)合是無(wú)法真正避免因?yàn)閬y序?qū)е碌慕鈮?問(wèn)題的。作為ROHC的第二個(gè)版本,RFC5225采納了 RFC42M中的若干思想,在計(jì)算LSB P值 時(shí)引入了亂序比例(reorder_ratio)的概念,即動(dòng)態(tài)地調(diào)整LSB P值為2~ (k_2)*reorder_ ratio (如圖1所示,其中re0rder_rati0的取值只能為0,1,2,3中的一種),從而使得 R0HCv2可以在一定程度上支持亂序遞交。但是在具體實(shí)現(xiàn)時(shí),由于壓縮器和解壓器之間并沒(méi)有針對(duì)當(dāng)前鏈路中的亂序狀況 進(jìn)行有效溝通,所以讓人無(wú)法準(zhǔn)確把握該值的選取。比如壓縮器通過(guò)調(diào)整LSB算法中的P 值來(lái)解決亂序遞交問(wèn)題時(shí),RFC4224文檔中只是舉例將P取值為2~k/3,但是在不同鏈路上 到底是取2~k/4,2~k/2,還是2~k*3/4,文檔中并沒(méi)有描述。因?yàn)閷?duì)于整個(gè)ROHC而言,選取 不同P值時(shí)的壓縮效率和健壯性是完全不同的,所以對(duì)于RFC5225本身而言,它并沒(méi)有引入 新的亂序處理方法,因此同樣不能解決RFC42M存在的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是,提供一種魯棒性頭壓縮中更新亂序深度的方法及系 統(tǒng),能夠根據(jù)亂序狀況有效地更新亂序深度,從而使得LSB P值動(dòng)態(tài)調(diào)整,進(jìn)而有效確保當(dāng) 前壓縮策略的健壯性的同時(shí),還能有效兼顧壓縮效率。為了解決上述技術(shù)問(wèn)題,本發(fā)明提出一種魯棒性頭壓縮中更新亂序深度的方法, 包括解壓器在判斷出數(shù)據(jù)包發(fā)生亂序時(shí),對(duì)亂序狀況進(jìn)行估計(jì),并據(jù)以判斷是否需要 采用更健壯的亂序處理策略,如果不需要,則保持所述解壓器側(cè)的亂序深度值;如果需要, 則更新所述解壓器側(cè)的亂序深度值為一更大值,并向壓縮器發(fā)送攜帶所述更新后的亂序深 度值的反饋包;所述壓縮器接收到所述反饋包后,根據(jù)所述反饋包中的亂序深度值更新所述壓縮 器側(cè)的亂序深度值。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述解壓器判斷數(shù)據(jù)包是否發(fā)生亂序包括將接收到的數(shù)據(jù)包的序列號(hào)與記錄的當(dāng)前最大序列號(hào)進(jìn)行比較,如果小于所述最 大序列號(hào),則認(rèn)為發(fā)生亂序;否則,認(rèn)為未發(fā)生亂序,更新所述最大序列號(hào)為所述接收到的 數(shù)據(jù)包的序列號(hào)。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述解壓器在判斷數(shù)據(jù)包是否發(fā)生亂序之前,還包括根據(jù)接收到的數(shù)據(jù)包的序列號(hào)進(jìn)行數(shù)據(jù)包還原處理,對(duì)還原出的數(shù)據(jù)包進(jìn)行校 驗(yàn),如果校驗(yàn)成功,則進(jìn)行亂序判斷;如果校驗(yàn)失敗,則進(jìn)行亂序修復(fù)處理,如果修復(fù)成功, 則進(jìn)行亂序判斷;如果修復(fù)失敗,則丟棄所述數(shù)據(jù)包,不進(jìn)行亂序判斷;所述亂序修復(fù)處理包括判斷所述解壓器側(cè)的亂序深度值是否還可增大,如果不 可增大,則認(rèn)為修復(fù)失??;如果還可增大,則以一更大值作為所述解壓器側(cè)的亂序深度值進(jìn)行序列號(hào)還原計(jì)算,以還原出的新的序列號(hào)進(jìn)行數(shù)據(jù)包還原處理,對(duì)還原出的數(shù)據(jù)包進(jìn)行 校驗(yàn),如果校驗(yàn)失敗,則認(rèn)為修復(fù)失敗,如果校驗(yàn)成功,則認(rèn)為修復(fù)成功,并更新修復(fù)成功個(gè) 數(shù)記錄。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述解壓器對(duì)亂序狀況進(jìn)行估計(jì)包括根據(jù)所述修復(fù)成功個(gè)數(shù)記錄和所述解壓器 側(cè)的亂序深度值對(duì)亂序狀況進(jìn)行估計(jì);所述解壓器在更新所述解壓器側(cè)的亂序深度值后,還將所述修復(fù)成功個(gè)數(shù)記錄置 為初始值。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述壓縮器根據(jù)所述反饋包中的亂序深度值更新所述壓縮器側(cè)的亂序深度值包 括判斷所述壓縮器側(cè)的亂序深度值是否小于所述反饋包中的亂序深度值,如果是, 則更新所述壓縮器側(cè)的亂序深度值為所述反饋包中的亂序深度值;否則,向解壓器發(fā)送初 始化和刷新(IR)包,以進(jìn)行亂序深度值同步。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述更大值等于所述解壓器側(cè)的亂序深度值自增1后的值;所述亂序深度值包括0、1、2、3。為了解決上述技術(shù)問(wèn)題,本發(fā)明還提出一種解壓器,包括接收模塊,用于接收魯棒性頭壓縮數(shù)據(jù)包;存儲(chǔ)模塊,用于存儲(chǔ)一亂序深度值;亂序檢測(cè)模塊,與所述接收模塊相連,用于檢測(cè)所述接收模塊接收到的數(shù)據(jù)包是 否發(fā)生亂序,在檢測(cè)出發(fā)生亂序時(shí),發(fā)送亂序估計(jì)指令;亂序估計(jì)模塊,與所述亂序檢測(cè)模塊相連,用于根據(jù)所述亂序估計(jì)指令對(duì)亂序狀 況進(jìn)行估計(jì),得到一估計(jì)結(jié)果;更新判斷模塊,與所述亂序估計(jì)模塊相連,用于根據(jù)所述估計(jì)結(jié)果,判斷是否需要 采用更健壯的亂序處理策略,如果需要,則發(fā)送亂序深度更新指令;亂序深度更新模塊,與所述存儲(chǔ)模塊和所述更新判斷模塊均相連,用于根據(jù)所述 亂序深度更新指令,將所述存儲(chǔ)模塊中的亂序深度值更新為一更大值,并發(fā)送攜帶所述更 新后的亂序深度值的反饋包。進(jìn)一步地,上述解壓器還可具有以下特點(diǎn)所述存儲(chǔ)模塊,還用于存儲(chǔ)一當(dāng)前最大序列號(hào);所述亂序檢測(cè)模塊包括比較單元,用于將接收到的數(shù)據(jù)包的序列號(hào)與所述當(dāng)前最大序列號(hào)進(jìn)行比較,得 到一比較結(jié)果;判斷處理單元,與所述比較單元和所述存儲(chǔ)模塊均相連,用于獲取并判斷所述比 較結(jié)果,如果所述比較結(jié)果為接收到的數(shù)據(jù)包的序列號(hào)小于所述最大序列號(hào),則認(rèn)為發(fā)生 亂序;否則,認(rèn)為未發(fā)生亂序,更新所述存儲(chǔ)模塊中的所述最大序列號(hào)為所述接收到的數(shù)據(jù) 包的序列號(hào)。進(jìn)一步地,上述解壓器還可具有以下特點(diǎn)
所述存儲(chǔ)模塊,還用于存儲(chǔ)一修復(fù)成功個(gè)數(shù)記錄;所述亂序檢測(cè)模塊,用于在接收到檢測(cè)控制指令后,才執(zhí)行亂序檢測(cè);所述解壓器還包括校驗(yàn)?zāi)K,位于所述接收模塊與所述亂序檢測(cè)模塊之間,用于根據(jù)接收到的數(shù)據(jù) 包的序列號(hào)進(jìn)行數(shù)據(jù)包還原處理,對(duì)還原出的數(shù)據(jù)包進(jìn)行校驗(yàn),如果校驗(yàn)成功,向所述亂序 檢測(cè)模塊發(fā)送檢測(cè)控制指令;如果校驗(yàn)失敗,則發(fā)送亂序修復(fù)指令;亂序修復(fù)模塊,與所述校驗(yàn)?zāi)K和所述亂序檢測(cè)模塊均相連,用于判斷所述存儲(chǔ) 模塊中的亂序深度值是否還可增大,如果不可增大,則認(rèn)為修復(fù)失敗,丟棄所述數(shù)據(jù)包;如 果還可增大,則以一更大值作為所述解壓器側(cè)的亂序深度值進(jìn)行序列號(hào)還原計(jì)算,以還原 出的新的序列號(hào)進(jìn)行數(shù)據(jù)包還原處理,對(duì)還原出的數(shù)據(jù)包進(jìn)行校驗(yàn),如果校驗(yàn)失敗,則認(rèn)為 修復(fù)失敗,丟棄所述數(shù)據(jù)包;如果校驗(yàn)成功,則認(rèn)為修復(fù)成功,更新所述修復(fù)成功個(gè)數(shù)記錄, 向所述亂序檢測(cè)模塊發(fā)送檢測(cè)控制指令。進(jìn)一步地,上述解壓器還可具有以下特點(diǎn)所述亂序估計(jì)模塊,在估計(jì)亂序狀況時(shí),是根據(jù)所述修復(fù)成功個(gè)數(shù)記錄和所述存 儲(chǔ)模塊中的亂序深度值對(duì)亂序狀況進(jìn)行估計(jì);所述亂序深度更新模塊,在更新所述存儲(chǔ)模塊中的亂序深度值后,還將所述存儲(chǔ) 模塊中的修復(fù)成功個(gè)數(shù)記錄置為初始值。進(jìn)一步地,上述解壓器還可具有以下特點(diǎn)所述更大值等于所述解壓器側(cè)的亂序深度值自增1后的值;所述亂序深度值包括0、1、2、3。為了解決上述技術(shù)問(wèn)題,本發(fā)明還提出一種壓縮器,包括存儲(chǔ)模塊,用于存儲(chǔ)一亂序深度值;接收解析模塊,用于接收包含亂序深度值的反饋包,從中解析出亂序深度值;比較模塊,與所述接收解析模塊和所述存儲(chǔ)模塊均相連,用于比較所述存儲(chǔ)模塊 中的亂序深度值是否小于所述反饋包中的亂序深度值,得到一比較結(jié)果;更新處理模塊,與所述存儲(chǔ)模塊和所述比較模塊均相連,用于在所述比較結(jié)果為 所述存儲(chǔ)模塊中的亂序深度值小于所述反饋包中的亂序深度值時(shí),更新所述存儲(chǔ)模塊中的 亂序深度值為所述反饋包中的亂序深度值;否則,發(fā)送初始化和刷新(IR)包,以與解壓器 進(jìn)行亂序深度值同步。為了解決上述技術(shù)問(wèn)題,本發(fā)明還提出一種魯棒性頭壓縮中更新亂序深度的系 統(tǒng),包括如上所述的解壓器和壓縮器。本發(fā)明提供的一種魯棒性頭壓縮中更新亂序深度的方法及系統(tǒng),能夠根據(jù)亂序狀 況有效地更新亂序深度,從而使得LSB P值動(dòng)態(tài)調(diào)整,進(jìn)而有效確保當(dāng)前壓縮策略的健壯性 的同時(shí),還能有效兼顧壓縮效率。
圖1協(xié)議定義的LSB算法中P值與re0rder_rati0之間的關(guān)系圖;圖2是本發(fā)明實(shí)施例一種魯棒性頭壓縮中更新亂序深度的方法流程圖;圖3是本發(fā)明實(shí)施例定義的Re0rder_Rati0反饋選項(xiàng)示意圖4是本發(fā)明實(shí)施例解壓器接收到壓縮包時(shí)的總體處理流程圖;圖5是本發(fā)明實(shí)施例解壓器進(jìn)行MSN亂序修復(fù)的方法流程圖;圖6是本發(fā)明實(shí)施例解壓器進(jìn)行亂序數(shù)據(jù)包處理的方法流程圖;圖7是本發(fā)明實(shí)施例壓縮器對(duì)于Re0rder_Rati0反饋包的處理流程圖;圖8是本發(fā)明實(shí)施例一種解壓器的裝置方框圖;圖9是本發(fā)明實(shí)施例一種壓縮器的裝置方框圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對(duì)本發(fā)明 的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中 的特征可以相互任意組合。參見(jiàn)圖2,該圖示出了本發(fā)明實(shí)施例一種魯棒性頭壓縮中更新亂序深度的方法,包 括步驟步驟S201 解壓器在判斷出數(shù)據(jù)包發(fā)生亂序時(shí),對(duì)亂序狀況進(jìn)行估計(jì),并據(jù)以判 斷是否需采用更健壯的亂序處理策略,如果不需要,則保持所述解壓器側(cè)的亂序深度值 reorder_ratio_D ;如果需要,則更新所述解壓器側(cè)的亂序深度值re0rder_rati0_D為一更 大值,并向壓縮器發(fā)送攜帶所述更新后的亂序深度值reorder_ratio_D的反饋包;步驟S202 所述壓縮器接收到所述反饋包后,根據(jù)所述反饋包中的亂序深度值 reorder_ratio_D更新所述壓縮器側(cè)的亂序深度值reorder_ratio_C。本發(fā)明實(shí)施例在解壓流程中增加了亂序分析處理功能,在當(dāng)前亂序處理策略應(yīng)對(duì) 當(dāng)前亂序狀況表現(xiàn)出健壯性不佳時(shí),嘗試增大亂序深度值,并以反饋包的形式通知壓縮器 一側(cè)進(jìn)行同步更新,實(shí)現(xiàn)主動(dòng)嘗試改變LSB P值,進(jìn)而可以修復(fù)一定比例的落在LSB區(qū)間以 外的數(shù)據(jù)包,減少頭壓縮過(guò)程中的丟包。其中,步驟S201中,所述解壓器判斷數(shù)據(jù)包是否發(fā)生亂序可以采用如下判斷方 法將接收到的數(shù)據(jù)包的序列號(hào)msrucurrent與記錄的當(dāng)前最大序列號(hào)maxjiisn進(jìn)行比較, 如果小于所述最大序列號(hào)maxjiisn,則認(rèn)為發(fā)生亂序;否則,認(rèn)為未發(fā)生亂序,更新所述最 大序列號(hào)max_msn為所述接收到的數(shù)據(jù)包的序列號(hào)msn_current。其中,步驟S201中,所述攜帶所述更新后的亂序深度值re0rder_rati0_D的反饋 包可以如圖3所示。較佳地,步驟S201中,所述更大值可以選擇所述解壓器側(cè)的亂序深度值自增1后 的值。較佳地,步驟S201之前,還可以包括下述步驟S203(圖中未示出)步驟S203 根據(jù)接收到的數(shù)據(jù)包的序列號(hào)msrucurrent進(jìn)行數(shù)據(jù)包還原處理,對(duì) 還原出的數(shù)據(jù)包進(jìn)行校驗(yàn),如果校驗(yàn)成功,則進(jìn)行亂序判斷;如果校驗(yàn)失敗,則進(jìn)行亂序修 復(fù)處理,如果修復(fù)成功,則進(jìn)行亂序判斷;如果修復(fù)失敗,則丟棄所述數(shù)據(jù)包,不進(jìn)行亂序判 斷。其中,步驟S203中所述亂序修復(fù)處理可以包括判斷所述解壓器側(cè)的亂序深度 值re0rder_rati0_D是否還可增大,如果不可增大,則認(rèn)為修復(fù)失??;如果還可增大,則以 一更大值作為所述解壓器側(cè)的亂序深度值re0rder_rati0_D進(jìn)行序列號(hào)還原計(jì)算,以還原出的新的序列號(hào)mSn_CUrrtent_neW進(jìn)行數(shù)據(jù)包還原處理,對(duì)還原出的數(shù)據(jù)包進(jìn)行校驗(yàn),如 果校驗(yàn)失敗,則認(rèn)為修復(fù)失敗,如果校驗(yàn)成功,則認(rèn)為修復(fù)成功,并更新修復(fù)成功個(gè)數(shù)記錄 repaimum。較佳地,所述更大值可以選擇所述解壓器側(cè)的亂序深度值自增1后的值。
其中,所述校驗(yàn)可以是例如CRC之類的校驗(yàn),本發(fā)明在此不做限制。
其中,可以以一計(jì)數(shù)器對(duì)修復(fù)成功個(gè)數(shù)repaimum進(jìn)行記錄。本發(fā)明實(shí)施例在解壓流程中增加了亂序修復(fù)功能(步驟S20;3),即,對(duì)校驗(yàn)失敗 的原因進(jìn)行猜測(cè),將序列晚包導(dǎo)致的LSB計(jì)算錯(cuò)誤作為其根本原因,根據(jù)當(dāng)前的reorder ratio值調(diào)整LSB算法的解壓參考區(qū)間,再次還原MSN值,最后重新進(jìn)行CRC校驗(yàn),從而驗(yàn)證 校驗(yàn)失敗原因是否為序列晚包導(dǎo)致,如果是,則可針對(duì)這類校驗(yàn)失敗的數(shù)據(jù)包進(jìn)行亂序處 理。其中,步驟S201中,所述解壓器對(duì)亂序狀況進(jìn)行估計(jì)可以是根據(jù)所述修復(fù)成功 個(gè)數(shù)記錄和所述解壓器側(cè)的亂序深度值對(duì)亂序狀況進(jìn)行估計(jì)。例如,可設(shè)置判斷條件為, 當(dāng)repair_nUm >= 100時(shí),認(rèn)為需要采用更加健壯的亂序策略;或者,設(shè)置判斷條件為,當(dāng) (repair_num)/(reorder_ratio+l) >= 100時(shí),認(rèn)為需要采用更加健壯的亂序策略。具體 的判斷條件可以根據(jù)需要設(shè)置,本發(fā)明在此不做限制。相應(yīng)地,所述解壓器在更新所述解壓 器側(cè)的亂序深度值后,還將所述修復(fù)成功個(gè)數(shù)repaimum記錄置為初始值。其中,步驟S202中,所述壓縮器根據(jù)所述反饋包中的亂序深度值更新所述壓縮器 側(cè)的亂序深度值可以包括步驟判斷所述壓縮器側(cè)的亂序深度值是否小于所述反饋包中的 亂序深度值,如果是,則更新所述壓縮器側(cè)的亂序深度值為所述反饋包中的亂序深度值;否 則,向解壓器發(fā)送初始化和刷新(IR)包,以進(jìn)行亂序深度值同步。為了進(jìn)一步說(shuō)明本發(fā)明上述方案,下面結(jié)合圖4、5、6、7進(jìn)行說(shuō)明。參見(jiàn)圖4,該圖示出了本發(fā)明所涉及的解壓器對(duì)壓縮數(shù)據(jù)包的處理流程,包括步 驟步驟S401 解壓器的解壓流程啟動(dòng),進(jìn)入步驟S402 ;步驟S402 所述解壓器根據(jù)壓縮包類型信息,分析接收到的壓縮數(shù)據(jù)包,將待解 壓的MSN信息取出,進(jìn)入步驟S403 ;步驟S403 所述解壓器調(diào)用LSB解碼算法對(duì)壓縮的MSN進(jìn)行解碼,獲取原始的MSN 值,記為msn_current,進(jìn)入步驟S404 ;步驟S404 所述解壓器使用msrucurrent進(jìn)行數(shù)據(jù)包還原處理,并對(duì)還原的數(shù)據(jù) 包進(jìn)行CRC校驗(yàn),如果校驗(yàn)失敗,進(jìn)入步驟S405,如果校驗(yàn)成功,進(jìn)入步驟S408 ;步驟S405 所述解壓器使用MSN亂序修復(fù)算法進(jìn)行修復(fù)處理,進(jìn)入步驟S406 ;步驟S406 所述解壓器判斷采用MSN亂序修復(fù)算法是否修復(fù)成功,如果成功,則進(jìn) 入步驟S408,如果失敗,則進(jìn)入步驟S407 ;步驟S407 所述解壓器認(rèn)為該數(shù)據(jù)包無(wú)法修復(fù),將其丟棄,進(jìn)入步驟S411 ;步驟S408 所述解壓器判斷數(shù)據(jù)包是否存在亂序,如果否,進(jìn)入步驟S409,如果 是,進(jìn)入步驟S410 ;步驟S409 所述解壓器將max_msn更新為msn_current,進(jìn)入步驟S411 ;步驟S410 所述解壓器使用亂序包處理功能對(duì)亂序包進(jìn)行處理,進(jìn)入步驟S411 ;步驟S411 所述解壓器處理流程結(jié)束。
參見(jiàn)圖5,該圖示出了本發(fā)明所涉及的解壓器MSN亂序修復(fù)算法(步驟S405)的具 體實(shí)施方案步驟S501 所述解壓器亂序修復(fù)過(guò)程啟動(dòng),進(jìn)入步驟S502 ;步驟S502 所述解壓器獲取reorder_ratio_D值,進(jìn)入步驟S503 ;步驟S503 所述解壓器判斷re0rder_rati0_D值是否為最大值3,如果是,進(jìn)入步 驟S210 ;否則,進(jìn)入步驟S504 ;步驟 S504 所述解壓器計(jì)算 reorder_ratio_D_new = reorder_ratio+l,以 reorder_ratio_D_new 作為新的 reorder_ratio_D 值,進(jìn)入步驟 S505 ;步驟S505 所述解壓器使用reorder_ratio_D_new進(jìn)行MSN還原計(jì)算,得到msn_ current_new,進(jìn)入步驟 S506 ;步驟S506 所述解壓器使用msrucurrentjew進(jìn)行數(shù)據(jù)包還原,對(duì)還原后的數(shù)據(jù) 包進(jìn)行CRC校驗(yàn),進(jìn)入步驟S507 ;步驟S507 判斷校驗(yàn)是否成功,如果成功,進(jìn)入步驟S508 ;如果失敗,進(jìn)入步驟 S510 ;步驟S508 所述解壓器將修復(fù)成功數(shù)據(jù)包個(gè)數(shù)計(jì)數(shù)器加1,進(jìn)入步驟S509 ;步驟S509 所述解壓器亂序修復(fù)成功,進(jìn)入步驟S511 ;步驟S510 所述解壓器亂序修復(fù)失敗,進(jìn)入步驟S511 ;步驟S511 所述解壓器MSN亂序修復(fù)流程結(jié)束。參見(jiàn)圖6,該圖示出了本發(fā)明所涉及的解壓器對(duì)亂序包進(jìn)行處理(步驟S410)的具 體實(shí)施方案步驟S601 所述解壓器亂序數(shù)據(jù)包處理啟動(dòng),進(jìn)入步驟S602 ;步驟S602 所述解壓器根據(jù)r印air_num、reorder_ratio等亂序相關(guān)信息對(duì)當(dāng)前 鏈路的亂序狀況進(jìn)行評(píng)估,進(jìn)入步驟S603 ;步驟S603 所述解壓器根據(jù)對(duì)亂序狀況的評(píng)估結(jié)果判斷是否需要采用更健壯的 亂序處理策略,如果需要,進(jìn)入步驟S604 ;如果不需要,進(jìn)入步驟S607 ;步驟S604 所述解壓器更新re0rder_rati0_D值等于其自增1運(yùn)算結(jié)果,進(jìn)入步 驟 S605 ;步驟S605 所述解壓器將r印air_num置為0,重新統(tǒng)計(jì)鏈路亂序狀況,進(jìn)入步驟
5606;步驟S606 所述解壓器封裝并發(fā)送攜帶re0rder_rati0_D的反饋包,進(jìn)入步驟
5607;步驟S607 所述解壓器亂序數(shù)據(jù)包處理流程結(jié)束。參見(jiàn)圖7,該圖示出了本發(fā)明所涉及的壓縮器對(duì)re0rder_rati0反饋包處理的實(shí) 施方案做進(jìn)一步的詳細(xì)描述步驟S701 壓縮器對(duì)攜帶re0rder_rati0反饋包處理啟動(dòng),進(jìn)入步驟S702 ;步驟S702 所述壓縮器接收到有效的,類型為Re0rder_Rati0的反饋包,進(jìn)入步驟 S703 ;步驟S703 所述壓縮器獲取反饋包和壓縮器側(cè)的re0rder_rati0值,分別記為 reorder_ratio_D 禾口 reorder_ratio_C,進(jìn)入步驟 S704 ;
步驟S704 所述壓縮器比較反饋包中的reorder_ratio_D和本地的reorder_ ratio_C值,如果reorder_ratio_C小于reorder_ratio_D,進(jìn)入步驟S706 ;否則,進(jìn)入步驟 S705 ;步驟S705 所述壓縮器認(rèn)為當(dāng)前re0rder_rati0狀態(tài)不同步,需要發(fā)送頂包,進(jìn) 入步驟S707 ;步驟S706 所述壓縮器將reorder_ratio_C更新為反饋包中的reorder_ratio_D, 進(jìn)入步驟S707 ;步驟S707 所述壓縮器對(duì)reorderjatio反饋包的處理流程結(jié)束。為了實(shí)現(xiàn)上述方法,本發(fā)明實(shí)施例還提供了一種解壓器,如圖8所示,包括接收模塊,用于接收魯棒性頭壓縮數(shù)據(jù)包;存儲(chǔ)模塊,用于存儲(chǔ)一亂序深度值;亂序檢測(cè)模塊,與所述接收模塊相連,用于檢測(cè)所述接收模塊接收到的數(shù)據(jù)包是 否發(fā)生亂序,在檢測(cè)出發(fā)生亂序時(shí),發(fā)送亂序估計(jì)指令;亂序估計(jì)模塊,與所述亂序檢測(cè)模塊相連,用于根據(jù)所述亂序估計(jì)指令對(duì)亂序狀 況進(jìn)行估計(jì),得到一估計(jì)結(jié)果;更新判斷模塊,與所述亂序估計(jì)模塊相連,用于根據(jù)所述估計(jì)結(jié)果,判斷是否需要 采用更健壯的亂序處理策略,如果需要,則發(fā)送亂序深度更新指令;亂序深度更新模塊,與所述存儲(chǔ)模塊和所述更新判斷模塊均相連,用于根據(jù)所述 亂序深度更新指令,將所述存儲(chǔ)模塊中的亂序深度值更新為一更大值,并發(fā)送攜帶所述更 新后的亂序深度值的反饋包。其中,所述存儲(chǔ)模塊,還用于存儲(chǔ)一當(dāng)前最大序列號(hào)。所述亂序檢測(cè)模塊包括比 較單元,用于將接收到的數(shù)據(jù)包的序列號(hào)與所述當(dāng)前最大序列號(hào)進(jìn)行比較,得到一比較結(jié) 果;判斷處理單元,與所述比較單元和所述存儲(chǔ)模塊均相連,用于獲取并判斷所述比較結(jié) 果,如果所述比較結(jié)果為接收到的數(shù)據(jù)包的序列號(hào)小于所述最大序列號(hào),則認(rèn)為發(fā)生亂序; 否則,認(rèn)為未發(fā)生亂序,更新所述存儲(chǔ)模塊中的所述最大序列號(hào)為所述接收到的數(shù)據(jù)包的 序列號(hào)。其中,所述存儲(chǔ)模塊,還用于存儲(chǔ)一修復(fù)成功個(gè)數(shù)記錄。所述亂序檢測(cè)模塊,用于 在接收到檢測(cè)控制指令后,才執(zhí)行亂序檢測(cè)。所述解壓器還可以包括校驗(yàn)?zāi)K,位于所述 接收模塊與所述亂序檢測(cè)模塊之間,用于根據(jù)接收到的數(shù)據(jù)包的序列號(hào)進(jìn)行數(shù)據(jù)包還原處 理,對(duì)還原出的數(shù)據(jù)包進(jìn)行校驗(yàn),如果校驗(yàn)成功,向所述亂序檢測(cè)模塊發(fā)送檢測(cè)控制指令; 如果校驗(yàn)失敗,則發(fā)送亂序修復(fù)指令。亂序修復(fù)模塊,與所述校驗(yàn)?zāi)K和所述亂序檢測(cè)模塊 均相連,用于判斷所述存儲(chǔ)模塊中的亂序深度值是否還可增大,如果不可增大,則認(rèn)為修復(fù) 失敗,丟棄所述數(shù)據(jù)包;如果還可增大,則以一更大值作為所述解壓器側(cè)的亂序深度值進(jìn)行 序列號(hào)還原計(jì)算,以還原出的新的序列號(hào)進(jìn)行數(shù)據(jù)包還原處理,對(duì)還原出的數(shù)據(jù)包進(jìn)行校 驗(yàn),如果校驗(yàn)失敗,則認(rèn)為修復(fù)失敗,丟棄所述數(shù)據(jù)包;如果校驗(yàn)成功,則認(rèn)為修復(fù)成功,更 新所述修復(fù)成功個(gè)數(shù)記錄,向所述亂序檢測(cè)模塊發(fā)送檢測(cè)控制指令。其中,所述亂序估計(jì)模塊,在估計(jì)亂序狀況時(shí),是根據(jù)所述修復(fù)成功個(gè)數(shù)記錄和所 述存儲(chǔ)模塊中的亂序深度值對(duì)亂序狀況進(jìn)行估計(jì)。所述亂序深度更新模塊,在更新所述存 儲(chǔ)模塊中的亂序深度值后,還將所述存儲(chǔ)模塊中的修復(fù)成功個(gè)數(shù)記錄置為初始值。
其中,所述更大值可以等于所述解壓器側(cè)的亂序深度值自增1后的值。所述亂序 深度值包括0、1、2、3。為了實(shí)現(xiàn)上述方法,本發(fā)明實(shí)施例還提供了一種壓縮裝置,如圖9所示,包括存儲(chǔ)模塊,用于存儲(chǔ)一亂序深度值;接收解析模塊,用于接收包含亂序深度值的反饋包,從中解析出亂序深度值;比較模塊,與所述接收解析模塊和所述存儲(chǔ)模塊均相連,用于比較所述存儲(chǔ)模塊 中的亂序深度值是否小于所述反饋包中的亂序深度值,得到一比較結(jié)果;更新處理模塊,與所述存儲(chǔ)模塊和所述比較模塊均相連,用于在所述比較結(jié)果為 所述存儲(chǔ)模塊中的亂序深度值小于所述反饋包中的亂序深度值時(shí),更新所述存儲(chǔ)模塊中的 亂序深度值為所述反饋包中的亂序深度值;否則,發(fā)送初始化和刷新(IR)包,以與解壓器 進(jìn)行亂序深度值同步。當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,本 領(lǐng)域技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng) 屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
1權(quán)利要求
1.一種魯棒性頭壓縮中更新亂序深度的方法,其特征在于,包括解壓器在判斷出數(shù)據(jù)包發(fā)生亂序時(shí),對(duì)亂序狀況進(jìn)行估計(jì),并據(jù)以判斷是否需要采用 更健壯的亂序處理策略,如果不需要,則保持所述解壓器側(cè)的亂序深度值;如果需要,則更 新所述解壓器側(cè)的亂序深度值為一更大值,并向壓縮器發(fā)送攜帶所述更新后的亂序深度值 的反饋包;所述壓縮器接收到所述反饋包后,根據(jù)所述反饋包中的亂序深度值更新所述壓縮器側(cè) 的亂序深度值。
2.如權(quán)利要求1所述的方法,其特征在于,所述解壓器判斷數(shù)據(jù)包是否發(fā)生亂序包括 將接收到的數(shù)據(jù)包的序列號(hào)與記錄的當(dāng)前最大序列號(hào)進(jìn)行比較,如果小于所述最大序列號(hào),則認(rèn)為發(fā)生亂序;否則,認(rèn)為未發(fā)生亂序,更新所述最大序列號(hào)為所述接收到的數(shù)據(jù) 包的序列號(hào)。
3.如權(quán)利要求2所述的方法,其特征在于,所述解壓器在判斷數(shù)據(jù)包是否發(fā)生亂序之 前,還包括根據(jù)接收到的數(shù)據(jù)包的序列號(hào)進(jìn)行數(shù)據(jù)包還原處理,對(duì)還原出的數(shù)據(jù)包進(jìn)行校驗(yàn),如 果校驗(yàn)成功,則進(jìn)行亂序判斷;如果校驗(yàn)失敗,則進(jìn)行亂序修復(fù)處理,如果修復(fù)成功,則進(jìn)行 亂序判斷;如果修復(fù)失敗,則丟棄所述數(shù)據(jù)包,不進(jìn)行亂序判斷;所述亂序修復(fù)處理包括判斷所述解壓器側(cè)的亂序深度值是否還可增大,如果不可增 大,則認(rèn)為修復(fù)失敗;如果還可增大,則以一更大值作為所述解壓器側(cè)的亂序深度值進(jìn)行序 列號(hào)還原計(jì)算,以還原出的新的序列號(hào)進(jìn)行數(shù)據(jù)包還原處理,對(duì)還原出的數(shù)據(jù)包進(jìn)行校驗(yàn), 如果校驗(yàn)失敗,則認(rèn)為修復(fù)失敗,如果校驗(yàn)成功,則認(rèn)為修復(fù)成功,并更新修復(fù)成功個(gè)數(shù)記 錄。
4.如權(quán)利要求3所述的方法,其特征在于所述解壓器對(duì)亂序狀況進(jìn)行估計(jì)包括根據(jù)所述修復(fù)成功個(gè)數(shù)記錄和所述解壓器側(cè)的 亂序深度值對(duì)亂序狀況進(jìn)行估計(jì);所述解壓器在更新所述解壓器側(cè)的亂序深度值后,還將所述修復(fù)成功個(gè)數(shù)記錄置為初 始值。
5.如權(quán)利要求1所述的方法,其特征在于,所述壓縮器根據(jù)所述反饋包中的亂序深度 值更新所述壓縮器側(cè)的亂序深度值包括判斷所述壓縮器側(cè)的亂序深度值是否小于所述反饋包中的亂序深度值,如果是,則更 新所述壓縮器側(cè)的亂序深度值為所述反饋包中的亂序深度值;否則,向解壓器發(fā)送初始化 和刷新(IR)包,以進(jìn)行亂序深度值同步。
6.如權(quán)利要求1-5中任何一項(xiàng)所述的方法,其特征在于 所述更大值等于所述解壓器側(cè)的亂序深度值自增1后的值; 所述亂序深度值包括0、1、2、3。
7.一種解壓器,其特征在于,包括 接收模塊,用于接收魯棒性頭壓縮數(shù)據(jù)包; 存儲(chǔ)模塊,用于存儲(chǔ)一亂序深度值;亂序檢測(cè)模塊,與所述接收模塊相連,用于檢測(cè)所述接收模塊接收到的數(shù)據(jù)包是否發(fā) 生亂序,在檢測(cè)出發(fā)生亂序時(shí),發(fā)送亂序估計(jì)指令;亂序估計(jì)模塊,與所述亂序檢測(cè)模塊相連,用于根據(jù)所述亂序估計(jì)指令對(duì)亂序狀況進(jìn) 行估計(jì),得到一估計(jì)結(jié)果;更新判斷模塊,與所述亂序估計(jì)模塊相連,用于根據(jù)所述估計(jì)結(jié)果,判斷是否需要采用 更健壯的亂序處理策略,如果需要,則發(fā)送亂序深度更新指令;亂序深度更新模塊,與所述存儲(chǔ)模塊和所述更新判斷模塊均相連,用于根據(jù)所述亂序 深度更新指令,將所述存儲(chǔ)模塊中的亂序深度值更新為一更大值,并發(fā)送攜帶所述更新后 的亂序深度值的反饋包。
8.如權(quán)利要求7所述的解壓器,其特征在于 所述存儲(chǔ)模塊,還用于存儲(chǔ)一當(dāng)前最大序列號(hào); 所述亂序檢測(cè)模塊包括比較單元,用于將接收到的數(shù)據(jù)包的序列號(hào)與所述當(dāng)前最大序列號(hào)進(jìn)行比較,得到一 比較結(jié)果;判斷處理單元,與所述比較單元和所述存儲(chǔ)模塊均相連,用于獲取并判斷所述比較結(jié) 果,如果所述比較結(jié)果為接收到的數(shù)據(jù)包的序列號(hào)小于所述最大序列號(hào),則認(rèn)為發(fā)生亂序; 否則,認(rèn)為未發(fā)生亂序,更新所述存儲(chǔ)模塊中的所述最大序列號(hào)為所述接收到的數(shù)據(jù)包的 序列號(hào)。
9.如權(quán)利要求8所述的解壓器,其特征在于 所述存儲(chǔ)模塊,還用于存儲(chǔ)一修復(fù)成功個(gè)數(shù)記錄;所述亂序檢測(cè)模塊,用于在接收到檢測(cè)控制指令后,才執(zhí)行亂序檢測(cè); 所述解壓器還包括校驗(yàn)?zāi)K,位于所述接收模塊與所述亂序檢測(cè)模塊之間,用于根據(jù)接收到的數(shù)據(jù)包的 序列號(hào)進(jìn)行數(shù)據(jù)包還原處理,對(duì)還原出的數(shù)據(jù)包進(jìn)行校驗(yàn),如果校驗(yàn)成功,向所述亂序檢測(cè) 模塊發(fā)送檢測(cè)控制指令;如果校驗(yàn)失敗,則發(fā)送亂序修復(fù)指令;亂序修復(fù)模塊,與所述校驗(yàn)?zāi)K和所述亂序檢測(cè)模塊均相連,用于判斷所述存儲(chǔ)模塊 中的亂序深度值是否還可增大,如果不可增大,則認(rèn)為修復(fù)失敗,丟棄所述數(shù)據(jù)包;如果還 可增大,則以一更大值作為所述解壓器側(cè)的亂序深度值進(jìn)行序列號(hào)還原計(jì)算,以還原出的 新的序列號(hào)進(jìn)行數(shù)據(jù)包還原處理,對(duì)還原出的數(shù)據(jù)包進(jìn)行校驗(yàn),如果校驗(yàn)失敗,則認(rèn)為修復(fù) 失敗,丟棄所述數(shù)據(jù)包;如果校驗(yàn)成功,則認(rèn)為修復(fù)成功,更新所述修復(fù)成功個(gè)數(shù)記錄,向所 述亂序檢測(cè)模塊發(fā)送檢測(cè)控制指令。
10.如權(quán)利要求9所述的解壓器,其特征在于所述亂序估計(jì)模塊,在估計(jì)亂序狀況時(shí),是根據(jù)所述修復(fù)成功個(gè)數(shù)記錄和所述存儲(chǔ)模 塊中的亂序深度值對(duì)亂序狀況進(jìn)行估計(jì);所述亂序深度更新模塊,在更新所述存儲(chǔ)模塊中的亂序深度值后,還將所述存儲(chǔ)模塊 中的修復(fù)成功個(gè)數(shù)記錄置為初始值。
11.如權(quán)利要求7-10中任何一項(xiàng)所述的解壓器,其特征在于 所述更大值等于所述解壓器側(cè)的亂序深度值自增1后的值; 所述亂序深度值包括0、1、2、3。
12.—種壓縮器,其特征在于,包括 存儲(chǔ)模塊,用于存儲(chǔ)一亂序深度值;接收解析模塊,用于接收包含亂序深度值的反饋包,從中解析出亂序深度值; 比較模塊,與所述接收解析模塊和所述存儲(chǔ)模塊均相連,用于比較所述存儲(chǔ)模塊中的 亂序深度值是否小于所述反饋包中的亂序深度值,得到一比較結(jié)果;更新處理模塊,與所述存儲(chǔ)模塊和所述比較模塊均相連,用于在所述比較結(jié)果為所述 存儲(chǔ)模塊中的亂序深度值小于所述反饋包中的亂序深度值時(shí),更新所述存儲(chǔ)模塊中的亂序 深度值為所述反饋包中的亂序深度值;否則,發(fā)送初始化和刷新(IR)包,以與解壓器進(jìn)行 亂序深度值同步。
13. 一種魯棒性頭壓縮中更新亂序深度的系統(tǒng),其特征在于,包括如權(quán)利要求7-11中 任何一項(xiàng)所述的解壓器和如權(quán)利要求12所述的壓縮器。
全文摘要
本發(fā)明提供了一種魯棒性頭壓縮中更新亂序深度的方法及系統(tǒng),該方法包括解壓器在判斷出數(shù)據(jù)包發(fā)生亂序時(shí),對(duì)亂序狀況進(jìn)行估計(jì),并據(jù)以判斷是否需要采用更健壯的亂序處理策略,如果不需要,則保持所述解壓器側(cè)的亂序深度值;如果需要,則更新所述解壓器側(cè)的亂序深度值為一更大值,并向壓縮器發(fā)送攜帶所述更新后的亂序深度值的反饋包;所述壓縮器接收到所述反饋包后,根據(jù)所述反饋包中的亂序深度值更新所述壓縮器側(cè)的亂序深度值。該方法能夠根據(jù)亂序狀況有效地更新亂序深度,從而使得LSB P值動(dòng)態(tài)調(diào)整,進(jìn)而在有效確保當(dāng)前壓縮策略的健壯性時(shí),還能有效兼顧壓縮效率。
文檔編號(hào)H04W28/06GK102149135SQ20111009966
公開(kāi)日2011年8月10日 申請(qǐng)日期2011年4月20日 優(yōu)先權(quán)日2011年4月20日
發(fā)明者畢文勇, 董淑松 申請(qǐng)人:中興通訊股份有限公司