一種數(shù)據(jù)包的處理方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)包的處理方法和設(shè)備。
【背景技術(shù)】
[0002]在LTE(Long Term Evolut1n,長(zhǎng)期演進(jìn))系統(tǒng)中,隨著上下行速率的大幅提高,特別是隨著載波聚合技術(shù)的引入,ZUC(祖沖之)加解密算法軟件的實(shí)現(xiàn)會(huì)極大的增加CPU (Central Processing Unit,中央處理器)占有率,難以保證系統(tǒng)需要,而針對(duì)ZUC算法的硬件加速器并未普及。因此,ZUC加解密算法由FPGA (Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)實(shí)現(xiàn)的方式比較合理。在這種實(shí)現(xiàn)方式下,對(duì)于HXP(Packet DataConverge Protocol,分組數(shù)據(jù)匯聚協(xié)議)層所在的DSP (digital signal processing,數(shù)字信號(hào)處理)芯片,與FPGA之間的數(shù)據(jù)交換遵循CPRI (Common Public Rad1 Interface,通用公共無(wú)線電接口)協(xié)議的基帶處理單元來(lái)說,一般為數(shù)據(jù)到達(dá)rocp層處理后,通過多條CPRI鏈路傳送到FPGA上,在FPGA上經(jīng)過ZUC算法加解密之后,通過多條CPRI鏈路再次回傳到rocp層,然后rocp層再進(jìn)行后續(xù)處理。
[0003]LTE協(xié)議規(guī)定:在非重建立AM(確認(rèn)模式)模式下,PDCP層收到底層傳來(lái)的數(shù)據(jù)包做如下處理:所有已經(jīng)接收的比當(dāng)前接收到的HXP SDU(Service Data Unit,服務(wù)數(shù)據(jù)單元)C0UNT(計(jì)數(shù))值小的數(shù)據(jù)包按照由低到高的順序遞交給高層;從當(dāng)前接收到的PDCP SDU COUNT開始往后COUNT值連續(xù)的數(shù)據(jù)包按照由低到高的順序遞交給高層;設(shè)置Iastsubmit (最后提交)PDCP SN(序列號(hào))為最后一包遞交給高層的數(shù)據(jù)包的TOCP SN。由上述協(xié)議可知,如果I3DCP層對(duì)從FPGA收到的數(shù)據(jù)包不做重排序的話,對(duì)于AM模式,PDCP按照協(xié)議解包時(shí),可能會(huì)產(chǎn)生rocp層的亂序丟包問題。
[0004]綜上所述,為了滿足業(yè)務(wù)速率的要求采用多硬件鏈路方式,并且FPGA對(duì)長(zhǎng)度不同的單個(gè)數(shù)據(jù)包處理時(shí)間的不同時(shí),會(huì)導(dǎo)致rocp順序遞交給FPGA處理的數(shù)據(jù)經(jīng)過FPGA加解密后返回的順序是亂序的,如果這些數(shù)據(jù)包不經(jīng)過重排序,會(huì)導(dǎo)致rocp層按照協(xié)議處理時(shí)丟包,從而影響正常業(yè)務(wù)的速率。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供一種數(shù)據(jù)包的處理方法和設(shè)備,以對(duì)接收隊(duì)列內(nèi)緩存的接收數(shù)據(jù)包進(jìn)行重新排列,避免rocp層按照協(xié)議處理時(shí)丟包。
[0006]本發(fā)明實(shí)施例提供一種數(shù)據(jù)包的處理方法,所述方法包括以下步驟:
[0007]分組數(shù)據(jù)匯聚協(xié)議rocp實(shí)體獲得待發(fā)送給現(xiàn)場(chǎng)可編程門陣列FPGA芯片的發(fā)送數(shù)據(jù)包,在所述發(fā)送數(shù)據(jù)包中添加發(fā)送序列號(hào),并將攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包發(fā)送給所述FPGA芯片;以使所述FPGA芯片在處理完發(fā)送數(shù)據(jù)包之后,利用所述發(fā)送序列號(hào)得到攜帶接收序列號(hào)的接收數(shù)據(jù)包;
[0008]所述HXP實(shí)體接收來(lái)自所述FPGA芯片的攜帶所述接收序列號(hào)的接收數(shù)據(jù)包,并將所述接收數(shù)據(jù)包緩存到接收隊(duì)列,并利用所述接收數(shù)據(jù)包中攜帶的接收序列號(hào)對(duì)所述接收隊(duì)列內(nèi)緩存的接收數(shù)據(jù)包進(jìn)行重新排列;
[0009]所述PDCP實(shí)體按照所述接收隊(duì)列內(nèi)的重新排列的接收數(shù)據(jù)包,將所述接收隊(duì)列內(nèi)的接收數(shù)據(jù)包發(fā)送給無(wú)線鏈路控制RLC實(shí)體。
[0010]所述方法進(jìn)一步包括:
[0011]所述rocp實(shí)體在將攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包發(fā)送給FPGA芯片時(shí),所述PDCP實(shí)體在指定時(shí)間內(nèi)發(fā)送給所述FPGA芯片的攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包的數(shù)量總和小于預(yù)設(shè)第一數(shù)值,發(fā)送給所述FPGA芯片的攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包的數(shù)據(jù)量總和小于預(yù)設(shè)第二數(shù)值。
[0012]所述方法進(jìn)一步包括:
[0013]所述PDCP實(shí)體在將多個(gè)攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包發(fā)送給FPGA芯片時(shí),所述ToCP實(shí)體將所述多個(gè)攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包均勻分布到多個(gè)通用公共無(wú)線電接口 CPRI通道上,并通過所述多個(gè)CPRI通道將對(duì)應(yīng)的攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包發(fā)送給所述FPGA芯片。
[0014]所述方法進(jìn)一步包括:
[0015]所述rocp實(shí)體在收到攜帶所述接收序列號(hào)的接收數(shù)據(jù)包之后,如果所述接收序列號(hào)大于RLC實(shí)體序列號(hào),并且所述接收序列號(hào)與所述RLC實(shí)體序列號(hào)之差小于預(yù)設(shè)窗長(zhǎng)門限,或者,所述接收序列號(hào)小于所述RLC實(shí)體序列號(hào),并且所述接收序列號(hào)與所述RLC實(shí)體序列號(hào)之差大于所述預(yù)設(shè)窗長(zhǎng)門限,則所述rocp實(shí)體將攜帶所述接收序列號(hào)的接收數(shù)據(jù)包緩存到所述接收隊(duì)列;否則,所述rocp實(shí)體丟棄攜帶所述接收序列號(hào)的接收數(shù)據(jù)包。
[0016]所述TOCP實(shí)體將所述接收隊(duì)列內(nèi)的接收數(shù)據(jù)包發(fā)送給RLC實(shí)體,具體包括:如果所述接收隊(duì)列內(nèi)的第一個(gè)接收數(shù)據(jù)包的接收序列號(hào)等于RLC實(shí)體序列號(hào)加上1,則所述PDCP實(shí)體從所述接收隊(duì)列內(nèi)的第一個(gè)接收數(shù)據(jù)包開始,順序?qū)⒔邮招蛄刑?hào)連續(xù)的接收數(shù)據(jù)包發(fā)送給RLC實(shí)體,直到第一個(gè)接收序列號(hào)不連續(xù)的接收數(shù)據(jù)包為止,停止向RLC實(shí)體發(fā)送接收數(shù)據(jù)包,并更新RLC實(shí)體序列號(hào)為最后一個(gè)發(fā)送給RLC實(shí)體的接收數(shù)據(jù)包的接收序列號(hào)。
[0017]所述rocp實(shí)體將所述接收隊(duì)列內(nèi)的接收數(shù)據(jù)包發(fā)送給RLC實(shí)體的過程,具體包括:如果所述接收隊(duì)列內(nèi)的接收數(shù)據(jù)包的總數(shù)大于等于預(yù)設(shè)第三數(shù)值時(shí),則所述rocp實(shí)體從所述接收隊(duì)列內(nèi)的第一個(gè)接收數(shù)據(jù)包開始,順序?qū)⒔邮招蛄刑?hào)連續(xù)的接收數(shù)據(jù)包發(fā)送給RLC實(shí)體,直到第一個(gè)接收序列號(hào)不連續(xù)的接收數(shù)據(jù)包為止,停止向所述RLC實(shí)體發(fā)送接收數(shù)據(jù)包,并更新RLC實(shí)體序列號(hào)為最后一個(gè)發(fā)送給所述RLC實(shí)體的接收數(shù)據(jù)包的接收序列號(hào)。
[0018]所述PDCP實(shí)體將所述接收隊(duì)列內(nèi)的接收數(shù)據(jù)包發(fā)送給RLC實(shí)體,具體包括:如果在預(yù)設(shè)時(shí)間內(nèi)未收到來(lái)自所述FPGA芯片的接收數(shù)據(jù)包,則所述HXP實(shí)體將所述接收隊(duì)列內(nèi)的所有接收數(shù)據(jù)包發(fā)送給RLC實(shí)體,并更新RLC實(shí)體序列號(hào)為最后一個(gè)發(fā)送給所述RLC實(shí)體的接收數(shù)據(jù)包的接收序列號(hào)。
[0019]本發(fā)明實(shí)施例提供一種分組數(shù)據(jù)匯聚協(xié)議rocp實(shí)體,該rocp實(shí)體包括:獲得模塊,用于獲得待發(fā)送給現(xiàn)場(chǎng)可編程門陣列FPGA芯片的發(fā)送數(shù)據(jù)包,在所述發(fā)送數(shù)據(jù)包中添加發(fā)送序列號(hào),并將攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包發(fā)送給所述FPGA芯片;以使所述FPGA芯片在處理完所述發(fā)送數(shù)據(jù)包之后,利用所述發(fā)送序列號(hào)得到攜帶接收序列號(hào)的接收數(shù)據(jù)包;
[0020]排序模塊,用于接收來(lái)自所述FPGA芯片的攜帶所述接收序列號(hào)的接收數(shù)據(jù)包,并將所述接收數(shù)據(jù)包緩存到接收隊(duì)列,并利用所述接收數(shù)據(jù)包中攜帶的接收序列號(hào)對(duì)所述接收隊(duì)列內(nèi)緩存的接收數(shù)據(jù)包進(jìn)行重新排列;
[0021]發(fā)送模塊,用于按照所述接收隊(duì)列內(nèi)的重新排列的接收數(shù)據(jù)包,將所述接收隊(duì)列內(nèi)的接收數(shù)據(jù)包發(fā)送給無(wú)線鏈路控制RLC實(shí)體。
[0022]所述獲得模塊,進(jìn)一步用于在將攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包發(fā)送給FPGA芯片時(shí),在指定時(shí)間內(nèi)發(fā)送給所述FPGA芯片的攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包的數(shù)量總和小于預(yù)設(shè)第一數(shù)值,發(fā)送給所述FPGA芯片的攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包的數(shù)據(jù)量總和小于預(yù)設(shè)第二數(shù)值。
[0023]所述獲得模塊,進(jìn)一步用于在將多個(gè)攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包發(fā)送給FPGA芯片時(shí),將所述多個(gè)攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包均勻分布到多個(gè)通用公共無(wú)線電接口 CPRI通道上,并通過所述多個(gè)CPRI通道將對(duì)應(yīng)的攜帶所述發(fā)送序列號(hào)的發(fā)送數(shù)據(jù)包發(fā)送給所述FPGA芯片。
[0024]所述排序模塊,進(jìn)一步用于在接收到攜帶所述接收序列號(hào)的接收數(shù)據(jù)包之后,如果所述接收序列號(hào)大于RLC實(shí)體序列號(hào),并且所述接收序列號(hào)與所述RLC實(shí)體序列號(hào)之差小于預(yù)設(shè)窗長(zhǎng)門限,或者,所述接收序列號(hào)小于所述RLC實(shí)體序列號(hào),并且所述接收序列號(hào)與所述RLC實(shí)體序列號(hào)之差大于所述預(yù)設(shè)窗長(zhǎng)門限,則將攜帶所述接收序列號(hào)的接收數(shù)據(jù)包緩存到所述接收隊(duì)列;否則,丟棄攜帶所述接收序列號(hào)的接收數(shù)據(jù)包。
[0025]所述發(fā)送模塊,具體用于在將所述接收隊(duì)列內(nèi)的接收數(shù)據(jù)包發(fā)送給RLC實(shí)體的過程中,如果所述接收隊(duì)列內(nèi)的第一個(gè)接收數(shù)據(jù)包的接收序列號(hào)等于RLC實(shí)體序列號(hào)加上1,則從所述接收隊(duì)列內(nèi)的第一個(gè)接收數(shù)據(jù)包開始,順序?qū)⒔邮招蛄刑?hào)連續(xù)的接收數(shù)據(jù)包發(fā)送