專利名稱:一種判斷反向數(shù)據(jù)包字節(jié)丟失的方法
技術(shù)領域:
本發(fā)明涉及移動通信技術(shù),特別是涉及一種判斷反向數(shù)據(jù)包字節(jié)丟失的方法。
背景技術(shù):
碼分多址(Code Division Multiple Access,CDMA)2000系統(tǒng)的新型數(shù)據(jù)業(yè)務(Evolution Data Optimized,EV-DO)已經(jīng)由最初的Rev 0版本發(fā)展到了Rev A版本。圖1示意了在EV-DO Rev A中,作為接受方的基站收到作為發(fā)送方的移動終端發(fā)來的反向數(shù)據(jù)包時的效果。
在EV-DO Rev A中,在移動終端上,每個要發(fā)送的反向數(shù)據(jù)包被分成4個子包,其中第一個子包攜帶了原數(shù)據(jù)包的所有有效信息和部分冗余信息,其他3個數(shù)據(jù)包均攜帶幫助解碼的冗余信息;同時,有三個交織號分別為0、1、2的三個交織,這三個交織用于發(fā)送分屬三個不同反向數(shù)據(jù)包的子包。一個反向數(shù)據(jù)包的所有子包,由交織號相同的交織發(fā)送。由于移動終端到基站之間的無線信道的變化很劇烈,在基站上,對于每個數(shù)據(jù)包而言,有可能收到第一個子包就能成功解碼,也有可能在收到第二、第三、第四子包后才能解碼成功,甚至最終都沒有解碼成功。如果基站在收到第一子包后沒有解碼成功,那么會通過由基站到移動終端的前向反饋發(fā)送Nak給移動終端,讓移動終端再發(fā)第二個子包;如果基站在收到第一子包后解碼成功,那么會通過前向反饋發(fā)Ack給移動終端,移動終端開始第一子包所在交織發(fā)送一個新的數(shù)據(jù)包,依此類推。在圖1中,反向數(shù)據(jù)包A由交織號為0的交織發(fā)送,并且在第一個子包A0就解碼成功,基站通過前向反饋發(fā)送Ack給移動終端,這樣移動終端下一次在交織號為0的交織發(fā)送的就是反向數(shù)據(jù)包D的第一個子包D0;反向數(shù)據(jù)包B的4個子包B0、B1、B2、和B3,全部由交織號為1的交織發(fā)送,在第四個子包B3才解碼成功,因此在基站收到B0、B1和B2后都會通過前向反饋發(fā)送Nak給移動終端,讓移動終端接著發(fā)下一個子包;反向數(shù)據(jù)包C由交織號為2的交織發(fā)送,并且在第一個子包C0就解碼成功,基站通過前向反饋發(fā)送Ack給移動終端,這樣下一次在交織號為2的交織發(fā)送的就是反向數(shù)據(jù)包E的第一個子包E0,等等。采用這種交織發(fā)送的方法,可以實現(xiàn)反向數(shù)據(jù)包的提前終止,提高了反向數(shù)據(jù)速率,但同時也使得反向數(shù)據(jù)包可能出現(xiàn)順序錯亂。例如在圖1中,在發(fā)送端,反向數(shù)據(jù)包B是在反向數(shù)據(jù)包C之前開始發(fā)送的;但是在接受端,由于反向數(shù)據(jù)包B在第四個子包才解碼成功,而反向數(shù)據(jù)包C在第一個子包就解碼成功,因此C比B先完成解碼。
反向數(shù)據(jù)包的解碼工作是由基站收發(fā)信機(Base Transceiver Station,BTS)完成的,BTS將解碼完成的反向數(shù)據(jù)包傳送到基站控制器(Base StationController,BSC)。在現(xiàn)有技術(shù)中,如果出現(xiàn)上述的反向數(shù)據(jù)包C比反向數(shù)據(jù)包B先完成解碼的情況,BSC上的無線鏈路協(xié)議(Radio Link Protocol,RLP)模塊在處理反向數(shù)據(jù)包的字節(jié)時,發(fā)現(xiàn)反向數(shù)據(jù)包A所包含的字節(jié)后面緊跟的是反向數(shù)據(jù)包C所包含的字節(jié),則認為反向數(shù)據(jù)包B所包含的字節(jié)丟失,通知移動終端重發(fā)反向數(shù)據(jù)包B。實際上反向數(shù)據(jù)包B只是延遲到達而已,這樣就會造成不必要的反向數(shù)據(jù)包重發(fā),影響反向通信的速率。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種反向判斷數(shù)據(jù)包字節(jié)丟失的方法,以防止在亂序反向數(shù)據(jù)包的情況下BSC錯誤認為反向數(shù)據(jù)包中的字節(jié)丟失,從而避免不必要的反向數(shù)據(jù)包重復發(fā)送。
為了達到上述目的,本發(fā)明提供了一種判斷反向數(shù)據(jù)包字節(jié)丟失的方法,該方法的第一種實現(xiàn)方式包括步驟A1,確定當前解碼成功的反向數(shù)據(jù)包的等待時長,并判斷在當前反向數(shù)據(jù)包中的字節(jié)之前發(fā)送的反向字節(jié)是否缺失,如果有則執(zhí)行步驟B1;步驟B1,判斷在步驟A1中得到的等待時長之內(nèi),是否收到在當前反向數(shù)據(jù)包中的字節(jié)之前發(fā)送的反向字節(jié),如果沒有收到則認為發(fā)生反向字節(jié)丟失,通知發(fā)送方重發(fā)丟失的反向字節(jié)。
其中,步驟A1所述確定當前解碼成功的反向數(shù)據(jù)包的等待時長包括步驟A11,基站收發(fā)信機BTS將當前解碼成功的反向數(shù)據(jù)包,以及當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息傳送給基站控制器BSC;步驟A12,BSC判斷當前反向數(shù)據(jù)包是否提前結(jié)束,如果是則執(zhí)行步驟A13,否則認為等待時長為0;步驟A13,BSC根據(jù)當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息,計算當前反向數(shù)據(jù)包的等待時長。
其中,步驟A1所述確定當前解碼成功的反向數(shù)據(jù)包的等待時長包括步驟A21,BTS判斷當前反向數(shù)據(jù)包是否提前結(jié)束,如果是則執(zhí)行步驟A22,否則認為等待時長為0;步驟A22,BTS根據(jù)當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息,計算當前反向數(shù)據(jù)包的等待時長;步驟A23,BTS將解碼成功的反向數(shù)據(jù)包,以及計算出的等待時長傳送給BSC。
其中,步驟B1所述判斷在步驟A1中得到的等待時長之內(nèi),是否收到在當前反向數(shù)據(jù)包中的字節(jié)之前發(fā)送的反向字節(jié)由BSC完成。
該方法的第二種實施方式為,設置包緩存隊列,該方法包括步驟A2,確定當前解碼成功的反向數(shù)據(jù)包的等待時長,并將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列,然后開始為當前解碼成功的反向數(shù)據(jù)包計時;步驟B2,在步驟A2中得到的等待時長到達時,將包緩存隊列中,步驟A2中解碼成功的反向數(shù)據(jù)包及其之前的反向數(shù)據(jù)包選出,作為排好序的反向數(shù)據(jù)包;步驟C2,判斷在排好序的反向數(shù)據(jù)包中是否有字節(jié)缺失,如果是則認為發(fā)生反向字節(jié)丟失,通知發(fā)送方重發(fā)丟失的反向字節(jié)。
其中,步驟A2所述將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列為根據(jù)當前解碼成功的反向數(shù)據(jù)包所攜帶的幀序號,判斷當前解碼成功的反向數(shù)據(jù)包,與包緩存隊列中已有的反向數(shù)據(jù)包,在發(fā)送時的先后順序,然后將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列。
其中,步驟A2所述確定當前解碼成功的反向數(shù)據(jù)包的等待時長包括步驟A31,BTS將當前解碼成功的反向數(shù)據(jù)包,以及當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息傳送給BSC;步驟A32,BSC判斷當前反向數(shù)據(jù)包是否提前結(jié)束,如果是則執(zhí)行步驟A33,否則認為等待時長為0;步驟A33,BSC根據(jù)當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息,計算當前反向數(shù)據(jù)包的等待時長。
其中,步驟A2所述確定當前解碼成功的反向數(shù)據(jù)包的等待時長包括步驟A41,BTS判斷當前反向數(shù)據(jù)包是否提前結(jié)束,如果是則執(zhí)行步驟A42,否則認為等待時長為0;步驟A42,BTS根據(jù)當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息,計算當前反向數(shù)據(jù)包的等待時長。
其中,步驟A2所述將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列,然后開始為當前解碼成功的反向數(shù)據(jù)包計時為BTS將解碼成功的反向數(shù)據(jù)包,以及步驟A42中計算出的等待時長傳送給BSC,BSC將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列,然后開始為當前解碼成功的反向數(shù)據(jù)包計時。
其中,步驟A2所述將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列,然后開始為當前解碼成功的反向數(shù)據(jù)包計時為BTS根據(jù)將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列,然后開始為當前解碼成功的反向數(shù)據(jù)包計時;步驟B2所述將包緩存隊列中,步驟A2中解碼成功的反向數(shù)據(jù)包及其之前反向數(shù)據(jù)包選出,作為排好序的反向數(shù)據(jù)包為BTS將包緩存隊列中,步驟A2中解碼成功的反向數(shù)據(jù)包及其之前反向數(shù)據(jù)包選出,作為排好序的反向數(shù)據(jù)包傳送給BSC。
其中,步驟C2所述判斷在排好序的反向數(shù)據(jù)包中是否有字節(jié)缺失由BSC完成。
采用本發(fā)明所提供的技術(shù)方案,對于亂序反向數(shù)據(jù)包,首先計算等待時長,只有在超出等待時長以后才認為發(fā)生反向數(shù)據(jù)包中所包含的字節(jié)丟失,這樣就避免了錯誤的將亂序反向數(shù)據(jù)包認定為反向字節(jié)丟失。進一步,等待時長可以用于將亂序反向數(shù)據(jù)包排序,從而加快BSC中后續(xù)處理的速度。而計算等待時長和排序的工作可以由BTS完成,這樣就減輕了BSC的計算壓力。
圖1是CDMA2000EV-DO Rev A中反向數(shù)據(jù)包的發(fā)送方案;圖2是本發(fā)明提供的計算等待時長的流程圖;圖3是本發(fā)明提供的判斷反向數(shù)據(jù)包字節(jié)丟失方法實施例一的流程圖;圖4是本發(fā)明提供的判斷反向數(shù)據(jù)包字節(jié)丟失方法實施例二的流程圖。
具體實施例方式
本發(fā)明的核心思想在于,對于亂序反向數(shù)據(jù)包,首先計算等待時長,根據(jù)等待時長來判斷是否發(fā)生了數(shù)據(jù)包中的字節(jié)丟失。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖及具體實施例對本發(fā)明作進一步地詳細描述。
請參考圖2,圖2是本發(fā)明提供的計算等待時長的流程圖。為了便于理解,且不失一般性,以圖1所示的反向數(shù)據(jù)包C為例說明計算過程。根據(jù)圖1,從直觀上看,反向數(shù)據(jù)包C不需要等待反向數(shù)據(jù)包A,但需要等待反向數(shù)據(jù)包B。
步驟201,當前子包所在的反向數(shù)據(jù)包解碼成功產(chǎn)生回調(diào)。
這里,C0是當前子包,解碼成功產(chǎn)生回調(diào),啟動對于反向數(shù)據(jù)包C的等待時長計算流程。
步驟202,獲取當前子包、當前子包向前第一個子包和當前子包向前第二個子包的交織信息。
對于當前子包C0來說,當前子包向前第一個子包是子包B0,當前子包向前第二個子包是子包A0。
所述的交織信息包括三個數(shù)據(jù)域交織號、子包號和交織狀態(tài)。
交織號表示該子包位于哪個交織,其取值范圍是0到2,因為總共有3個交織。在圖1中,子包A0位于交織號0,子包B0位于交織號1,子包C0位于交織號2。
子包號表示該子包是所在反向數(shù)據(jù)包的第幾個子包,其取值范圍是0到3,因為對于作為接受端的基站來說,一個反向數(shù)據(jù)包最多包括4個子包。在圖1中,A0、B0和C0都是各自所在的反向數(shù)據(jù)包的第0個子包。
子包狀態(tài)表示該子包所在反向數(shù)據(jù)包的狀態(tài),可以是以下這四個值CRCPass,反向數(shù)據(jù)包解碼成功,且該反向數(shù)據(jù)包是當前解碼子包所在的反向數(shù)據(jù)包;CRCFail,反向數(shù)據(jù)包沒有解碼成功;Invalid,反向數(shù)據(jù)包解碼成功,且該反向數(shù)據(jù)包不是當前解碼子包所在的反向數(shù)據(jù)包;或者該反向數(shù)據(jù)包沒有數(shù)據(jù)發(fā)送;或者第四子包解碼失敗,且該反向數(shù)據(jù)包不是當前解碼子包所在的反向數(shù)據(jù)包;SubPacketFail,該子包無效,不能用于所在反向數(shù)據(jù)包的解碼。
在圖1中,子包A0的子包狀態(tài)值為Invalid,子包B0的子包狀態(tài)值為CRCFail,子包C0的子包狀態(tài)值為CRCPass;需要說明的是,以上僅僅給出了子包狀態(tài)的四種取值所表示的與計算等待時長有關(guān)的意義。
步驟203,判斷當前子包是否提前終止,如果是則執(zhí)行步驟204,否則執(zhí)行步驟212。
判斷當前子包是否提前終止的方法是看當前子包的交織信息中的子包號是否為3,如果為3表示沒有提前終止,如果不為3表示提前終止。
當前子包是C0時,當前子包的交織信息中的子包號為0,表示提前終止。
步驟204,判斷當前子包所在反向數(shù)據(jù)包是否需要等待當前子包向前第一個子包所在反向數(shù)據(jù)包,如果是則執(zhí)行步驟205,否則執(zhí)行步驟206。
判斷當前子包所在反向數(shù)據(jù)包是否需要等待當前子包向前第一個子包所反向在數(shù)據(jù)包的方法是,如果以下三個條件中的任意一個條件成立,則認為當前子包所在反向數(shù)據(jù)包不需要等待當前子包向前第一個子包所在反向數(shù)據(jù)包,否則認為當前子包所在反向數(shù)據(jù)包需要等待當前子包向前第一個子包所在反向數(shù)據(jù)包。這三個條件是(1)當前子包交織信息中的子包號,大于當前子包向前第一個子包的交織信息中的子包號;(2)當前子包向前第一個子包的交織信息中的子包狀態(tài)為Invalid;(3)當前子包向前第一個子包的交織信息中的子包狀態(tài)為SubPacketFail,且當前子包向前第一個子包的交織信息中的子包號為3。
當前子包是C0時,當前子包向前第一個子包是B0,且上述三個條件均不滿足,因此當前子包C0所在的反向數(shù)據(jù)包需要等待當前子包向前第一個子包B0所在的反向數(shù)據(jù)包。
步驟205,計算當前子包所在反向數(shù)據(jù)包需要等待當前子包向前第一個子包所在反向數(shù)據(jù)包的等待時長,然后執(zhí)行步驟207。
等待時長的計算方法是,首先將當前子包的交織信息中的交織號,減去當前子包向前第一個子包的交織信息中的交織號,再加上3,將加法所得的結(jié)果除以3以后取余數(shù);然后用3減去當前子包向前第一個子包的交織信息中的子包號,將得到的差乘以3,并且用乘法的結(jié)果減去前面一步得到的余數(shù),就是當前子包所在的反向數(shù)據(jù)包需要等待當前子包向前第一個子包所在的反向數(shù)據(jù)包的等待時長。
根據(jù)以上計算方法,子包C0所在的反向數(shù)據(jù)包應該等待子包B0所在的反向數(shù)據(jù)包的等待時長為8,單位是子包。
步驟206,令當前子包所在反向數(shù)據(jù)包需要等待當前子包向前第一個子包所在反向數(shù)據(jù)包的等待時長為0。
步驟207,判斷當前子包所在反向數(shù)據(jù)包是否需要等待當前子包向前第二個子包所在反向數(shù)據(jù)包,如果是則執(zhí)行步驟208,否則執(zhí)行步驟209。
判斷當前子包所在反向數(shù)據(jù)包是否需要等待當前子包向前第二個子包所在反向數(shù)據(jù)包的方法是,如果以下三個條件中的任意一個條件成立,則認為當前子包所在反向數(shù)據(jù)包不需要等待當前子包向前第二個子包所在反向數(shù)據(jù)包,否則認為當前子包所在反向數(shù)據(jù)包需要等待當前子包向前第二個子包所在反向數(shù)據(jù)包。這三個條件是(1)當前子包交織信息中的子包號,大于當前子包向前第二個子包的交織信息中的子包號;(2)當前子包向前第二個子包的交織信息中的子包狀態(tài)為Invalid;(3)當前子包向前第二個子包的交織信息中的子包狀態(tài)為SubPacketFail,且當前子包向前第二個子包的交織信息中的子包號為3。
當前子包是C0時,當前子包向前第二個子包是A0,且上述三個條件中的(2)滿足,因此當前子包C0所在的反向數(shù)據(jù)包不需要等待當前子包向前第二個子包A0所在的反向數(shù)據(jù)包。
步驟208,計算當前子包所在反向數(shù)據(jù)包需要等待當前子包向前第二個子包所在反向數(shù)據(jù)包的等待時長,然后執(zhí)行步驟210。
等待時長的計算方法是,首先將當前子包的交織信息中的交織號,減去當前子包向前第二個子包的交織信息中的交織號,再加上3,將加法所得的結(jié)果除以3以后取余數(shù);然后用3減去當前子包向前第二個子包的交織信息中的子包號,將得到的差乘以3,并且用乘法的結(jié)果減去前面一步得到的余數(shù),就是當前子包所在的反向數(shù)據(jù)包需要等待當前子包向前第二個子包所在的反向數(shù)據(jù)包的等待時長。
步驟209,令當前子包所在反向數(shù)據(jù)包需要等待當前子包向前第二個子包所在反向數(shù)據(jù)包的等待時長為0。
步驟210,判斷當前子包所在的反向數(shù)據(jù)包分別需要等待的兩個等待時長是否均為0,如果是則執(zhí)行步驟212,否則執(zhí)行步驟211。
步驟211,以當前子包所在的反向數(shù)據(jù)包分別需要等待的兩個等待時長中較大的一個作為當前子包所在反向數(shù)據(jù)包的等待時長。
由于當前子包C0所在的反向數(shù)據(jù)包C需要等待當前子包向前第一個子包B0所在的數(shù)據(jù)包B,且等待時長為8;而當前子包C0所在的反向數(shù)據(jù)包C需要等待當前子包向前第二個子包A0所在的數(shù)據(jù)包A的等待時長為0,因此當前子包C0所在的反向數(shù)據(jù)包的等待時長為8。
步驟212,當前子包所在的反向數(shù)據(jù)包不需要等待,也就是說當前子包的等待時長為0。
請參考圖3,圖3是本發(fā)明提供的判斷反向數(shù)據(jù)包字節(jié)丟失方法實施例一的流程圖。
步驟301,BTS將反向數(shù)據(jù)包解碼,并將交織信息傳送給BSC。
在移動通信基站系統(tǒng)中,對反向數(shù)據(jù)包進行解碼是由BTS完成的。在對計算等待時長的流程的描述中提到,在BTS對當前子包所在的反向數(shù)據(jù)包解碼成功后,會得到當前子包、當前子包向前第一個子包和當前子包向前第二個子包的交織信息,BTS將成功解碼的反向數(shù)據(jù)包,以及對應的三個交織信息都傳送給BSC。
步驟302,BSC根據(jù)交織信息,計算當前反向數(shù)據(jù)包的等待時長。
步驟302就是步驟201至步驟212所進行的流程。
步驟303,BSC將當前反向數(shù)據(jù)包中的字節(jié)放入重排緩沖區(qū)。
重排緩沖區(qū)是現(xiàn)有技術(shù)的RLP協(xié)議所用來對反向數(shù)據(jù)包中的字節(jié)進行排序用的。移動終端會按照RLP協(xié)議為所發(fā)送的每個字節(jié)分配一個RLP序號,RLP序號按照字節(jié)發(fā)送的先后順序遞增;BSC在接收到反向數(shù)據(jù)包以后,將反向數(shù)據(jù)包所包含的字節(jié),根據(jù)RLP序號放入重排緩沖區(qū)中。只有連續(xù)的、超過一定長度門限的、且最早進入重排緩沖區(qū)的一段字節(jié)才能被送入后續(xù)處理模塊。
例如,假設長度門限是20字節(jié),重排緩沖區(qū)中現(xiàn)有字節(jié)為RLP序號從30到35的總共6個連續(xù)字節(jié),由于連續(xù)字節(jié)的長度沒有超過長度門限,因此不能送入后續(xù)處理模塊。現(xiàn)在收到第一個反向數(shù)據(jù)包,其中包括RLP序號為40到50的11個連續(xù)字節(jié)。按照RLP序號放入重排緩沖區(qū)后,連續(xù)字節(jié)的數(shù)目仍然沒有超過20個。如果又收到第二個反向數(shù)據(jù)包,其中包括RLP序號為36到39的4個連續(xù)字節(jié)。按照RLP序號放入重排緩沖區(qū)后,連續(xù)字節(jié)的RLP序號從30到40,連續(xù)字節(jié)的數(shù)目為21個,超過了長度門限,則將這21個字節(jié)全部發(fā)送到后續(xù)處理模塊。
步驟304,判斷重排緩沖區(qū)中當前反向數(shù)據(jù)包中的字節(jié)之前是否有字節(jié)缺失,如果有則執(zhí)行步驟305,否則執(zhí)行步驟308。
所謂的字節(jié)缺失,即步驟303所舉的例子中,收到第二個反向數(shù)據(jù)包之前的情況,RLP序號為36到39的字節(jié)就是缺失字節(jié)。
步驟305,BSC將計時器置零后啟動計時器。
計時器的作用在于,字節(jié)缺失有可能是由亂序反向數(shù)據(jù)包造成的,也有可能是反向數(shù)據(jù)包丟失造成的。如果是由亂序反向數(shù)據(jù)包造成的,則在步驟302所計算出的等待時長內(nèi),就應該收到包含缺失字節(jié)的反向數(shù)據(jù)包。如果超過這個時間還沒有收到,則該反向數(shù)據(jù)包在從移動終端到基站的通信路徑上丟失,需要移動終端重新發(fā)送該缺失字節(jié)。
步驟306,BSC判斷計時器是否到達等待時長,如果是則執(zhí)行步驟311,否則執(zhí)行步驟307。
步驟307,BSC判斷是否收到BTS傳來的包含缺失字節(jié)的反向數(shù)據(jù)包,如果收到則執(zhí)行步驟308,否則返回執(zhí)行步驟306。
步驟308,BSC判斷重排緩沖區(qū)中當前反向數(shù)據(jù)包中的字節(jié)所在的一段連續(xù)字節(jié)的長度是否超過長度門限,如果是則執(zhí)行步驟309,否則執(zhí)行步驟310。
步驟309,BSC將重排緩沖區(qū)中當前反向數(shù)據(jù)包中的字節(jié)所在的一段連續(xù)字節(jié)進行后續(xù)處理。
步驟310,BSC準備處理下一個反向數(shù)據(jù)包。
步驟311,認為BTS未能成功解碼缺失字節(jié)所在的反向數(shù)據(jù)包,要求移動終端重發(fā)缺失字節(jié)。
在實施例一中,從步驟302到步驟311,都是由BSC完成的。在實際的移動通信基站系統(tǒng)中,一個BSC往往有很多個BTS,對于每個BTS傳送來的反向數(shù)據(jù)包,BSC都要進行步驟302到步驟311的流程。這樣就占用了BSC的大量處理能力。另一方面,BSC計算等待時長需要BTS在傳送當前反向數(shù)據(jù)包的同時發(fā)送交織信息,這會降低BTS和BSC之間接口的利用效率。例如,三個子包的交織信息大約為3字節(jié),而在基于互聯(lián)網(wǎng)協(xié)議的語音業(yè)務(Voice on Internet Protocol,VoIP)中,一個反向數(shù)據(jù)包的長度才22字節(jié),傳送交織信息使得BTS和BSC之間的接口利用率降低了近10%。
作為實施例一的一種改進,步驟301中,BTS可以先不將解碼后的反向數(shù)據(jù)包以及交織信息傳送給BSC,而是由BTS自身執(zhí)行步驟302,然后將解碼后的反向數(shù)據(jù)包和計算出的等待時長一起傳送給BSC。這樣就可以提高BTS和BSC之間接口的利用效率。同時也分擔了BSC的一部分計算量。
但是,對于反向數(shù)據(jù)包中字節(jié)的處理只能在BSC進行,這樣就使得無法將步驟303到步驟311移到BTS中進行。這樣,BSC的計算量還是很大,并且傳送等待時長還是需要占用BTS和BSC之間接口的資源。
本發(fā)明的實施例二可以解決這個問題。請參考圖4,圖4是本發(fā)明提供的判斷反向數(shù)據(jù)包字節(jié)丟失方法實施例二的流程圖。
為了對反向數(shù)據(jù)包排序,BTS為三個交織各維護一個定時器,每個定時器的初始值都是0。每個定時器還各自對應一個啟動幀序號(Frame SequenceNumber,F(xiàn)SN),表示啟動這個定時器的子包所在反向數(shù)據(jù)包的FSN。FSN是移動終端在發(fā)送反向數(shù)據(jù)包時為每個數(shù)據(jù)包分配的編號,F(xiàn)SN與數(shù)據(jù)包是一一對應的關(guān)系,分配FSN是按照發(fā)送數(shù)據(jù)包的先后順序。BTS還為維護一個反向數(shù)據(jù)包緩存隊列,簡稱包緩存隊列,包緩存隊列中的反向數(shù)據(jù)包FSN由小到大排列。
步驟401,BTS收到子包。
步驟402,BTS判斷是否在當前子包完成當前子包所在反向數(shù)據(jù)包的解碼,如果是則執(zhí)行步驟410,否則執(zhí)行步驟403。
步驟403,判斷當前子包所在交織的定時器是否為0,如果是則執(zhí)行步驟405,否則執(zhí)行步驟404。
步驟404,執(zhí)行步驟420。
步驟405,判斷除當前子包所在的交織外,其他兩個交織的定時器是否都不為0,如果是則執(zhí)行步驟407;如果除當前子包所在的交織外,其他兩個交織的定時器中的任意一個為0則執(zhí)行步驟406。
步驟406,判斷除當前子包所在的交織外,其他兩個交織的定時器是否都為0,如果是則執(zhí)行步驟409;如果除當前子包所在的交織外,其他兩個交織的定時器中有且只有一個為0則執(zhí)行步驟408。
步驟407,比較判斷除當前子包所在的交織外,其他兩個交織的定時器的啟動FSN,將包緩存隊列中,值較小的啟動FSN所對應的反向數(shù)據(jù)包之前的反向數(shù)據(jù)包發(fā)送到BSC,執(zhí)行步驟420。
步驟408,將包緩存隊列中,不為0的定時器的啟動FSN所對應的反向數(shù)據(jù)包之前的反向數(shù)據(jù)包發(fā)送到BSC,執(zhí)行步驟420。
步驟409,將包緩存隊列中的反向數(shù)據(jù)包全部發(fā)送到BSC,執(zhí)行步驟420。
步驟410,將當前子包所在交織的定時器清零,并將當前子包按照FSN的順序插入包緩存隊列。
步驟411,BTS根據(jù)在成功解碼反向數(shù)據(jù)包時獲取的當前子包、當前子包向前第一個子包和當前子包向前第二個子包的交織信息,分別計算出當前子包所在反向數(shù)據(jù)包需要等待當前子包向前第一個子包的等待時長t1,和當前子包所在反向數(shù)據(jù)包需要等待當前子包向前第二個子包的等待時長t2。
步驟412,判斷t1和t2是否均為0,如果是則執(zhí)行步驟414,如果t1和t2中任意一個不為0則執(zhí)行步驟413。
步驟413,判斷t1是否為0,如果是則t2必然不為0,執(zhí)行步驟418,否則執(zhí)行步驟415。
步驟414,返回執(zhí)行步驟405。
步驟415,判斷當前子包向前第一個子包所在交織的定時器是否為0,如果是則執(zhí)行步驟416,否則執(zhí)行步驟417。
步驟416,將當前子包向前第一個子包所在交織的定時器的值設為t1的值,并將當前子包向前第一個子包所在交織的定時器的啟動FSN設為當前子包所在數(shù)據(jù)包的FSN。
步驟417,判斷t2是否為0,如果是則執(zhí)行步驟420,否則執(zhí)行步驟418。
步驟418,判斷當前子包向前第二個子包所在交織的定時器是否為0,如果是則執(zhí)行步驟419,否則執(zhí)行步驟420。
步驟419,將當前子包向前第二個子包所在交織的定時器的值設為t2的值,并將當前子包向前第二個子包所在交織的定時器的啟動FSN設為當前子包所在數(shù)據(jù)包的FSN。
步驟420,將不為0的定時器減1后結(jié)束對當前子包的處理流程,準備處理下一個子包。
這樣,從BTS傳送到BSC的反向數(shù)據(jù)包都是按照發(fā)射端的發(fā)射順序排好的。BSC雖然仍然要執(zhí)行步驟303到步驟310,但是由于反向數(shù)據(jù)包都是經(jīng)過排序的,所以BSC不用對從BTS傳送來的反向數(shù)據(jù)包中的字節(jié)做任何重排緩沖處理,這樣就減少了BSC的計算量,基本上不用BSC進行計算。又由于BTS只需要將數(shù)據(jù)包本身傳送給BSC,這樣就可以進一步提高BTS和BSC接口的利用效率。當然,如果基于其他考慮,也完全可以將對反向數(shù)據(jù)包進行排序的工作放到BSC中進行。在這種情況下,步驟407、步驟408和步驟409中所述將反向數(shù)據(jù)包發(fā)送到BSC則應該為將反向數(shù)據(jù)包從包緩存隊列中發(fā)送到后續(xù)處理模塊。
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,該方法包括步驟A1,確定當前解碼成功的反向數(shù)據(jù)包的等待時長,并判斷在當前反向數(shù)據(jù)包中的字節(jié)之前發(fā)送的反向字節(jié)是否缺失,如果有則執(zhí)行步驟B1;步驟B1,判斷在步驟A1中得到的等待時長之內(nèi),是否收到在當前反向數(shù)據(jù)包中的字節(jié)之前發(fā)送的反向字節(jié),如果沒有收到則認為發(fā)生反向字節(jié)丟失,通知發(fā)送方重發(fā)丟失的反向字節(jié)。
2.根據(jù)權(quán)利要求1所述的判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,步驟A1所述確定當前解碼成功的反向數(shù)據(jù)包的等待時長包括步驟A11,基站收發(fā)信機BTS將當前解碼成功的反向數(shù)據(jù)包,以及當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息傳送給基站控制器BSC;步驟A12,BSC判斷當前反向數(shù)據(jù)包是否提前結(jié)束,如果是則執(zhí)行步驟A13,否則認為等待時長為0;步驟A13,BSC根據(jù)當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息,計算當前反向數(shù)據(jù)包的等待時長。
3.根據(jù)權(quán)利要求1所述的判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,步驟A1所述確定當前解碼成功的反向數(shù)據(jù)包的等待時長包括步驟A21,BTS判斷當前反向數(shù)據(jù)包是否提前結(jié)束,如果是則執(zhí)行步驟A22,否則認為等待時長為0;步驟A22,BTS根據(jù)當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息,計算當前反向數(shù)據(jù)包的等待時長;步驟A23,BTS將解碼成功的反向數(shù)據(jù)包,以及計算出的等待時長傳送給BSC。
4.根據(jù)權(quán)利要求1到3任意一項所述的判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,步驟B1所述判斷在步驟A1中得到的等待時長之內(nèi),是否收到在當前反向數(shù)據(jù)包中的字節(jié)之前發(fā)送的反向字節(jié)由BSC完成。
5.一種判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,設置包緩存隊列,該方法包括步驟A2,確定當前解碼成功的反向數(shù)據(jù)包的等待時長,并將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列,然后開始為當前解碼成功的反向數(shù)據(jù)包計時;步驟B2,在步驟A2中得到的等待時長到達時,將包緩存隊列中,步驟A2中解碼成功的反向數(shù)據(jù)包及其之前的反向數(shù)據(jù)包選出,作為排好序的反向數(shù)據(jù)包;步驟C2,判斷在排好序的反向數(shù)據(jù)包中是否有字節(jié)缺失,如果是則認為發(fā)生反向字節(jié)丟失,通知發(fā)送方重發(fā)丟失的反向字節(jié)。
6.根據(jù)權(quán)利要求5所述的判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,步驟A2所述將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列為根據(jù)當前解碼成功的反向數(shù)據(jù)包所攜帶的幀序號,判斷當前解碼成功的反向數(shù)據(jù)包,與包緩存隊列中已有的反向數(shù)據(jù)包,在發(fā)送時的先后順序,然后將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列。
7.根據(jù)權(quán)利要求5所述的判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,步驟A2所述確定當前解碼成功的反向數(shù)據(jù)包的等待時長包括步驟A31,BTS將當前解碼成功的反向數(shù)據(jù)包,以及當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息傳送給BSC;步驟A32,BSC判斷當前反向數(shù)據(jù)包是否提前結(jié)束,如果是則執(zhí)行步驟A33,否則認為等待時長為0;步驟A33,BSC根據(jù)當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息,計算當前反向數(shù)據(jù)包的等待時長。
8.根據(jù)權(quán)利要求5所述的判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,步驟A2所述確定當前解碼成功的反向數(shù)據(jù)包的等待時長包括步驟A41,BTS判斷當前反向數(shù)據(jù)包是否提前結(jié)束,如果是則執(zhí)行步驟A42,否則認為等待時長為0;步驟A42,BTS根據(jù)當前反向數(shù)據(jù)包解碼成功時產(chǎn)生的交織信息,計算當前反向數(shù)據(jù)包的等待時長。
9.根據(jù)權(quán)利要求8所述的判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,步驟A2所述將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列,然后開始為當前解碼成功的反向數(shù)據(jù)包計時為BTS將解碼成功的反向數(shù)據(jù)包,以及步驟A42中計算出的等待時長傳送給BSC,BSC將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列,然后開始為當前解碼成功的反向數(shù)據(jù)包計時。
10.根據(jù)權(quán)利要求8所述的判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,步驟A2所述將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列,然后開始為當前解碼成功的反向數(shù)據(jù)包計時為BTS根據(jù)將當前解碼成功的反向數(shù)據(jù)包放入包緩存隊列,然后開始為當前解碼成功的反向數(shù)據(jù)包計時;步驟B2所述將包緩存隊列中,步驟A2中解碼成功的反向數(shù)據(jù)包及其之前反向數(shù)據(jù)包選出,作為排好序的反向數(shù)據(jù)包為BTS將包緩存隊列中,步驟A2中解碼成功的反向數(shù)據(jù)包及其之前反向數(shù)據(jù)包選出,作為排好序的反向數(shù)據(jù)包傳送給BSC。
11.根據(jù)權(quán)利要求5到10任意一項所述的判斷反向數(shù)據(jù)包字節(jié)丟失的方法,其特征在于,步驟C2所述判斷在排好序的反向數(shù)據(jù)包中是否有字節(jié)缺失由BSC完成。
全文摘要
本發(fā)明公開了一種判斷反向數(shù)據(jù)包字節(jié)丟失的方法,該方法的一種實現(xiàn)方式為確定當前解碼成功的反向數(shù)據(jù)包的等待時長,并判斷在等待時長之內(nèi),是否收到在當前反向數(shù)據(jù)包中的字節(jié)之前發(fā)送的反向字節(jié),如果沒有收到則認為發(fā)生反向字節(jié)丟失。該方法的另一種實現(xiàn)方式為設置包緩存隊列,包括確定當前解碼成功的反向數(shù)據(jù)包的等待時長,并將該反向數(shù)據(jù)包放入包緩存隊列,在等待時長到達時,將包緩存隊列中,上述解碼成功的反向數(shù)據(jù)包及其之前的反向數(shù)據(jù)包選出,作為排好序的反向數(shù)據(jù)包,并判斷在排好序的反向數(shù)據(jù)包中是否有字節(jié)缺失,如果是則認為發(fā)生反向字節(jié)丟失。采用本發(fā)明提供的技術(shù)方案,可以避免錯誤的將亂序反向數(shù)據(jù)包認定為反向字節(jié)丟失。
文檔編號H04L1/16GK1859072SQ200610005700
公開日2006年11月8日 申請日期2006年1月19日 優(yōu)先權(quán)日2006年1月19日
發(fā)明者敬曉云 申請人:華為技術(shù)有限公司