本案是申請號為201610116326.x、申請日為2016年03月01日、發明名稱為“一種數據包處理方法和裝置”的專利申請的分案申請。
本發明涉及增強型多媒體廣播/多播業務(embms,ehancedmultimediabroadcast/multicastservice),尤其涉及一種數據包處理方法和裝置。
背景技術:
embms也被稱為長期演進(lte,longtermevolution)廣播/多播,是一種先進的移動數據傳輸技術,可以使運營商顯著降低在lte網絡上同一時間向多個用戶提供諸如視頻、音頻等高帶寬內容的成本。embms采用lte制式的非確認模式(um,unacknowledgedmode)無線鏈路控制(rlc,radiolinkcontrol)層傳輸方式,該種方式不需要接收方確認,發送方不重傳數據,適用于實時性高的場景;因此保證傳輸成功率是非常重要的。
rlc層是用來完成服務數據單元(sdu,servicedataunit)的組包或協議數據單元(pdu,protocoldataunit)解包工作。embms業務中rlc層是um模式,基站側將sdu組包成pdu,并按序將序列號(sn,serialnumber)和sdu分段信息(fi,framinginfo)寫入rlc子頭;終端側根據rlc子頭信息從pdu中解出sdu數據,并將完整的sdu提交高層。
對于終端側,sn的連續性很重要,連續的sn能保證sdu數據的連續性、完整性;如果sn發生跳躍,則意味著可能會發生sdu丟包;一般sn發生跳躍的原因是空口丟包,這種情況下,丟失的sdu或sdu分段就無法還原。
但是,在embms業務中,sn的跳躍不一定是因為空口丟包;這種場景下,是有可能保證sdu數據的連續性和完整性的。embms相關協議規定,在 多播控制信道(mcch,multicastcontrolchannel)修改周期點或者多播信道調度信息(msi,multicastchannelschedulinginformation)周期點,基站側要將sn復位為0;這樣,對于終端側來說,終端側接收的sn很可能是不連續的;sn的不連續意味著中間丟包,這種情況下,作為接收方的終端側會將之前保存的sdu分段信息丟掉;并且,如果sn等于0的pdu中,第一個sdu不是完整的,即為sdu分段,則該sdu也會被丟棄。
如何避免在mcch修改周期點或msi周期點這種場景下丟包,是亟待解決的問題。
技術實現要素:
有鑒于此,本發明實施例期望提供一種數據包處理方法和裝置,能避免在mcch修改周期點和/或msi周期點的場景下丟包,提高傳輸成功率。
為達到上述目的,本發明的技術方案是這樣實現的:
本發明實施例提供了一種數據包處理方法,所述方法包括:
獲取當前多播/組播單頻網絡(mbsfn,multimediabroadcastmulticastservicesinglefrequencynetwork)子幀信息和rlc組包sn復位時間點;
根據mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu組包。
上述方案中,所述采用不同方式進行pdu組包,包括:
所述mbsfn子幀為所述sn復位時間點,且有上一次pdu組包剩余sdu分段組入時,將所述sdu分段所屬sdu重新組包到pdu中;和/或,所述mbsfn子幀為所述sn復位時間點的前一個mbsfn子幀,且有sdu不能完全組入當前pdu中,需要進行分段時,放棄將所述sdu組入當前pdu中。
上述方案中,所述sn復位時間點,包括:mcch修改周期點、和/或msi周期點。
本發明實施例還提供了一種數據包處理方法,所述方法包括:
獲取當前pdu對應的第一sn、前一個pdu對應的第二sn、當前mbsfn 子幀、和rlc組包sn復位時間點;
比較所述第一sn和所述第二sn,當所述第一sn和第二sn不連續時,根據所述第一sn、以及所述當前mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu解包。
上述方案中,所述采用不同方式進行pdu解包,包括:
如果所述第一sn為0,所述當前mbsfn子幀為所述sn復位時間點,且保存的sdu分段和當前pdu之間沒有丟失過數據,則將之前保存的sdu分段和當前pdu中的第一個sdu分段合并出完整的sdu;
如果所述第一sn不為0,則丟棄之前保存的sdu分段和當前pdu中的第一個sdu分段。
上述方案中,確定所述保存的sdu和當前pdu之間沒有丟失過數據的方法,包括:
如果所述保存的sdu分段是在所述當前pdu前一個連續的mbsfn子幀被更新過,且所述當前pdu前一個連續的mbsfn子幀和當前pdu的mbsfn子幀為配置給同一終端的mbsfn子幀,則確定保存的sdu分段和當前pdu之間沒有丟失過數據。
上述方案中,所述rlc組包sn復位時間點,包括:mcch修改周期點、和/或msi周期點。
本發明實施例還提供了一種數據包處理裝置,所述裝置包括:第一獲取模塊、組包模塊;其中,
所述第一獲取模塊,用于獲取當前mbsfn子幀信息和rlc組包sn復位時間點;
所述組包模塊,用于根據mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu組包。
上述方案中,所述組包模塊,具體用于:
所述mbsfn子幀為所述sn復位時間點,且有上一次pdu組包剩余sdu分段組入時,將所述sdu分段所屬sdu重新組包到pdu中;和/或,所述 mbsfn子幀為所述sn復位時間點的前一個mbsfn子幀,且有sdu不能完全組入當前pdu中,需要進行分段時,放棄將所述sdu組入當前pdu中。
上述方案中,所述sn復位時間點,包括:mcch修改周期點、和/或msi周期點。
本發明實施例還提供了一種數據包處理裝置,所述裝置包括:第二獲取模塊、解包模塊;其中,
所述第二獲取模塊,用于獲取當前pdu對應的第一sn、前一個pdu對應的第二sn、當前mbsfn子幀、和rlc組包sn復位時間點信息;
所述解包模塊,用于比較所述第一sn和所述第二sn,當所述第一sn和第二sn不連續時,根據所述第一sn、以及所述當前mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu解包。
上述方案中,所述解包模塊,具體用于:
如果所述第一sn為0,所述當前mbsfn子幀為所述sn復位時間點,且保存的sdu分段和當前pdu之間沒有丟失過數據,則將之前保存的sdu分段和當前pdu中的第一個sdu分段合并出完整的sdu;
如果所述第一sn不為0,則丟棄之前保存的sdu分段和當前pdu中的第一個sdu分段。
上述方案中,所述解包模塊,還用于:
如果所述保存的sdu分段是在所述當前pdu前一個連續的mbsfn子幀被更新過,且所述當前pdu前一個連續的mbsfn子幀和當前pdu的mbsfn子幀為配置給同一終端的mbsfn子幀,則確定保存的sdu分段和當前pdu之間沒有丟失過數據。
上述方案中,所述rlc組sn復位時間點,包括:mcch修改周期點、和/或msi周期點。
本發明實施例所提供的數據包處理方法和裝置,在基站側,獲取當前mbsfn子幀信息和rlc組包sn復位時間點;根據所述mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu組包;在終端側,獲取當前 pdu對應的第一sn、前一個pdu對應的第二sn、當前mbsfn子幀、和rlc組包sn復位時間點;比較所述第一sn和所述第二sn,當所述第一sn和第二sn不連續時,根據所述第一sn、以及所述當前mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu解包。如此,rlc組包sn復位時間點,如mcch修改周期點、和/或msi周期點的場景下,能避免基站側發送sn不連續的pdu,終端能對sn不連續的sdu進行合并;避免在mcch修改周期點和/或msi周期點的場景中丟包,從而提高傳輸成功率。
附圖說明
圖1為本發明實施例基站側數據包處理方法的流程示意圖;
圖2為本發明實施例第一種pdu組包方法的流程示意圖;
圖3為本發明實施例第二種pdu組包方法的流程示意圖;
圖4為本發明實施例終端側數據包處理方法的流程示意圖;
圖5為本發明實施例終端側pdu解包方法的流程示意圖;
圖6為本發明實施例基站側數據包處理裝置的結構示意圖;
圖7為本發明實施例終端側數據包處理裝置的結構示意圖。
具體實施方式
本發明實施例中,所述方法包括:在基站側,獲取當前mbsfn子幀信息和rlc組包sn復位時間點;根據所述mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu組包;在終端側,獲取當前pdu對應的第一sn、前一個pdu對應的第二sn、當前mbsfn子幀、和rlc組包sn復位時間點;比較所述第一sn和所述第二sn,當所述第一sn和第二sn不連續時,根據所述第一sn、以及所述當前mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu解包。
下面結合實施例對本發明再作進一步詳細的說明。
本發明實施例提供的數據包處理方法,所述方法應用于基站側,如圖1所 示,包括:
步驟101:獲取當前mbsfn子幀信息和rlc組包sn復位時間點;
這里,所述rlc組包sn復位時間點包括:mcch修改周期、和/或msi周期;
通常,基站pdu組包在mbsfn子幀內完成,所述mbsfn子幀可以理解為一個時間單位,每個mbsfn子幀有一個mbsfn子幀號;mcch修改周期、和/或msi周期為一個時間長度,多個mbsfn子幀組成一個mcch修改周期、和/或msi周期;因此一個周期內的最后一個mbsfn子幀為mcch修改周期點或msi周期點,最后一個mbsfn子幀可以根據子幀號來確定;如設定1024個mbsfn子幀為一個mcch修改周期、和/或msi周期,子幀號從1到1024,則子幀號為1024的mbsfn子幀為mcch修改周期點或msi周期點。可以在pdu組包的時,獲取當前mbsfn子幀的信息。
步驟102:根據mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu組包;
這里,所述rlc組包sn復位時間點包括:mcch修改周期、和/或msi周期;根據當前pdu組包的mbsfn子幀與mcch修改周期點、和/或msi周期點的關系,可以采用兩種方法來避免sdu分段的產生。
如圖2所示,第一種方法包括:
步驟201:判斷所述mbsfn子幀是否為mcch修改周期、和/或msi周期;如果是,則表明sn會被復位為0,可能產生sn不連續的情況,執行步驟202;否則,按正常組pdu流程進行,直至組包接送,并發送完成組包的pdu;
步驟202:判斷上一次組pdu時,是否有上一次pdu組包剩余sdu分段組入時;如果有,則表明當前組包中會產生一個sn不連續的sdu分段,進行步驟203;否則,按正常組pdu流程進行,直至組包接送,并發送完成組包的pdu;
步驟203:重新組包sdu分段所對應的整個sdu,從該sdu第一個字節 開始重新組包到pdu中;
如此,避免在mcch修改周期點、和/或msi周期點sn不連續的sdu分段的產生。
如圖3所示,第二種方法包括:
步驟301:判斷當前mbsfn子幀是否為mcch修改周期點、和/或msi周期點前一個配置的mbsfn子幀;如果是,則進行步驟302;否則,按正常組pdu流程進行,直至組包接送,并發送完成組包的pdu;
步驟302:判斷在當前pdu組包時,確定是否有sdu不能完全組入當前pdu中,需要進行分段;如果需要分段,則表明下一個mbsfn子幀組包中會產生不連續sn的sdu分段,執行步驟303;否則,按正常組pdu流程進行;
步驟303:放棄將所述當前sdu組入當前pdu;以確保只將完整的sdu組入當前pdu,或確保當前組入的sdu分段已經是最后一個分段,能和之前pdu中的sdu分段組成一個完整的sdu。
這里,在基站中,所述第一種方法和第二種方法可以只采用其中的一種,也可以同時采用兩種。
本發明實施例提供的數據包處理方法,所述方法應用于終端側,如圖4所示,包括:
步驟401:獲取當前pdu對應的第一sn、前一個pdu對應的第二sn、當前mbsfn子幀、和rlc組包sn復位時間點;
具體的,在每個配置給終端的mbsfn子幀,接收基站側發來的rlc層pdu;獲取當前接收的pdu對應的的sn、mbsfn子幀信息、和rlc組包sn復位時間點;其中,所述rlc組包sn復位時間點包括:mcch修改周期、和/或msi周期;
步驟402:比較所述第一sn和所述第二sn,當所述第一sn和第二sn不連續時,根據所述第一sn、以及所述當前mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu解包;
具體的,所述rlc組包sn復位時間點包括:mcch修改周期、和/或msi 周期;如圖5所示,具體解包方法包括:
步驟501:判斷當前接收的pdu的sn是否和上一個不連續,如果是,則可能發生了空口丟包,或sn在所述mcch修改周期點、和/或msi周期點被復位,需要進行進一步判斷,如此,執行步驟502;否則,按正常組pdu流程進行;
步驟502:判斷當前接收的pdu的sn是否等于0,如果是,則表明所述當前pdu對應的sn可能在所述mcch修改周期點、和/或msi周期點被復位,需執行步驟503做進一步判斷;否則,表明發生了空口丟包,前一個pdu和當前pdu中未合并的的sdu分段無法合并,因此,丟棄之前保存的sdu分段,同時也丟棄當前pdu中的第一個sdu分段;
步驟503:判斷當前mbsfn子幀是否為mcch修改周期、和/或msi周期,如果是,則表明當前pdu對應的sn可能在所述mcch修改周期點、和/或msi周期點被復位,執行步驟504做進一步處理;否則,表明發生了空口丟包,因此,丟棄之前保存的sdu分段,同時也丟棄當前pdu中的第一個sdu分段;
步驟504:判斷之前保存的sdu分段是否在上一個連續的、配置給該終端的mbsfn子幀被更新過,如此,可以確定保存的sdu分段和當前pdu之間沒有丟失過數據;如果是,則執行步驟505;否則,表明保存的sdu分段和當前sdu分段并不連續,不能合并成完整的sdu,因此,丟棄之前保存的sdu分段,同時也丟棄當前pdu中的第一個sdu分段;
步驟505:將之前保存的sdu分段和當前接收的pdu中的第一個sdu分段合并出完整的sdu;如此,在mcch修改周期點或msi周期點這種場景中,sn雖然不連續,但是,終端側之前保留的sdu分段和當前接收的sn等于0的pdu中的第一個sdu分段,可以合并出一個完整sdu。
在實際應用中,由于基站廠家和終端廠家的不同等原因,本發明實施例基站側的技術方案可能不適于應用到所有基站,本發明實施例終端側的技術方案可能不適于應用到所有終端;因此,可以考慮同時在基站側和終端側采用本發 明實施例的技術方案,以保證提升本發明實施例所提供技術方案的效果。
本發明實施例提供的數據包處理裝置,如圖6所示,所述裝置包括:第一獲取模塊61、組包模塊62;其中,
所述第一獲取模塊61,用于獲取當前mbsfn子幀信息和rlc組包sn復位時間點;
這里,所述rlc組包sn復位時間點包括:mcch修改周期、和/或msi周期;
通常,基站pdu組包在mbsfn子幀內完成,所述mbsfn子幀可以理解為一個時間單位,每個mbsfn子幀有一個mbsfn子幀號;mcch修改周期、和/或msi周期為一個時間長度,多個mbsfn子幀組成一個mcch修改周期、和/或msi周期;因此一個周期內的最后一個mbsfn子幀為mcch修改周期點或msi周期點,最后一個mbsfn子幀可以根據子幀號來確定;如設定1024個mbsfn子幀為一個mcch修改周期、和/或msi周期,子幀號從1到1024,則子幀號為1024的mbsfn子幀為mcch修改周期點或msi周期點。可以在pdu組包時,獲取當前mbsfn子幀的信息;
所述組包模塊62,用于根據mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu組包;
具體的,所述rlc組包sn復位時間點包括:mcch修改周期、和/或msi周期;根據當前pdu組包的mbsfn子幀與mcch修改周期點、和/或msi周期點的關系,所述組包模塊62可以采用兩種方法進行組包:
所述組包模塊62采用第一種方法組包,包括:
判斷所述mbsfn子幀是否為mcch修改周期、和/或msi周期;如果是,則表明sn會被復位為0,可能產生sn不連續的情況,需進行下一步處理;否則,按正常組pdu流程進行,直至組包接送,并發送完成組包的pdu;
判斷上一次組pdu時,是否有上一次pdu組包剩余sdu分段組入時;如果有,則表明當前組包中會產生一個sn不連續的sdu分段,進行下一步的組包處理;否則,按正常組pdu流程進行,直至組包接送,并發送完成組包的 pdu;
重新組包sdu分段所對應的整個sdu,從該sdu第一個字節開始重新組包到pdu中;
如此,避免在mcch修改周期點、和/或msi周期點sn不連續的sdu分段的產生。
所述組包模塊62采用第二種方法組包,包括:
判斷當前mbsfn子幀是否為mcch修改周期點、和/或msi周期點前一個配置的mbsfn子幀;如果是,則進行下一步的判斷;否則,按正常組pdu流程進行,直至組包接送,并發送完成組包的pdu;
判斷在當前pdu組包時,確定是否有sdu不能完全組入當前pdu中,需要進行分段;如果需要分段,則表明下一個mbsfn子幀組包中會產生不連續sn的sdu分段,進行下一步的處理;否則,按正常組pdu流程進行;
放棄將所述當前sdu組入當前pdu;以確保只將完整的sdu組入當前pdu,或確保當前組入的sdu分段已經是最后一個分段,能和之前pdu中的sdu分段組成一個完整的sdu;
在實際應用中,所述第一獲取模塊61、組包模塊62,均可由位于基站中的中央處理器(cpu)、微處理器(mpu)、數字信號處理器(dsp)、或現場可編程門陣列(fpga)等實現。
本發明實施例提供的數據包處理裝置,如圖7所示,所述裝置包括:第二獲取模塊71、解包模塊72;其中,
所述第二獲取模塊71,用于獲取當前pdu對應的第一sn、前一個pdu對應的第二sn、當前mbsfn子幀、和rlc組包sn復位時間點;
具體的,在每個配置給終端的mbsfn子幀,接收基站側發來的rlc層pdu;獲取當前接收的pdu對應的的sn、mbsfn子幀信息、和rlc組包sn復位時間點;其中,所述rlc組包sn復位時間點包括:mcch修改周期、和/或msi周期;
所述解包模塊72,比較所述第一sn和所述第二sn,當所述第一sn和第 二sn不連續時,根據所述第一sn、以及所述當前mbsfn子幀與所述sn復位時間點的關系,采用不同方式進行pdu解包;
具體的,所述rlc組包sn復位時間點包括:mcch修改周期、和/或msi周期;所述解包模塊72采用不同方式進行pdu解包,包括:
判斷當前接收的pdu的sn是否和上一個不連續,如果是,則可能發生了空口丟包,或sn在所述mcch修改周期點、和/或msi周期點被復位,需要進行進一步判斷,如此,進行下一步判斷;否則,按正常組pdu流程進行;
判斷當前接收的pdu的sn是否等于0,如果是,則表明所述當前pdu對應的sn可能在所述mcch修改周期點、和/或msi周期點被復位,需進行下一步判斷;否則,表明發生了空口丟包,前一個pdu和當前pdu中未合并的的sdu分段無法合并,因此,丟棄之前保存的sdu分段,同時也丟棄當前pdu中的第一個sdu分段;
判斷當前mbsfn子幀是否為mcch修改周期、和/或msi周期,如果是,則表明當前pdu對應的sn可能在所述mcch修改周期點、和/或msi周期點被復位,需做進一步的判斷;否則,表明發生了空口丟包,因此丟棄之前保存的sdu分段,同時也丟棄當前pdu中的第一個sdu分段;
判斷之前保存的sdu分段是否在上一個連續的,配置給該終端的mbsfn子幀被更新過,如此,可以確定保存的sdu分段和當前pdu之間沒有丟失過數據;如果是,則按照下一步的處理方法進行處理;否則,表明保存的sdu分段和當前sdu分段并不連續,不能合并成完整的sdu,因此,丟棄之前保存的sdu分段,同時也丟棄當前pdu中的第一個sdu分段;
將之前保存的sdu分段和當前接收的pdu中的第一個sdu分段合并出完整的sdu;如此,在mcch修改周期點或msi周期點這種場景中,sn雖然不連續,但是終端側之前保留的sdu分段和當前接收的sn等于0的pdu中的第一個sdu分段,可以合并出一個完整sdu。
在實際應用中,由于基站廠家和終端廠家的不同等原因,本發明實施例基站側的技術方案可能不適于應用到所有基站,本發明實施例終端側的技術方案 可能不適于應用到所有終端;因此,可以考慮同時在基站側和終端側采用本發明實施例的技術方案,以保證提升本發明實施例所提供技術方案的效果。
在實際應用中,所述第二獲取模塊71、解包模塊72,均可由位于終端中的中央處理器(cpu)、微處理器(mpu)、數字信號處理器(dsp)、或現場可編程門陣列(fpga)等實現。
以上所述,僅為本發明的佳實施例而已,并非用于限定本發明的保護范圍,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。