发明内容
有鉴于此,本发明实施例的目的在于提供一种数据通信方法和存储介质,可以减小数据内存的占用,减少数据重传的时间。
第一方面,本发明实施例提供了一种数据通信方法,所述方法包括:
接收分组数据汇聚协议层服务数据单元PDCP SDU,所述PDCP SDU包括PDCP SDU协议头内容和PDCP SDU数据载荷;
对所述PDCP SDU进行处理以获取分组数据汇聚协议层协议数据单元PDCP PDU,所述PDCP PDU包括PDCP PDU协议头内容、加密的压缩头内容和PDCP PDU数据载荷;
将所述PDCP PDU和PDCP SDU协议头内容保存在第一内存区,并生成PDCP PDU内存指针;
保存PDCP PDU信息,所述PDCU PDU信息包括PDCP PDU标识、PDCP PDU内存指针、PDCP SDU协议头长度、PDCP SDU协议头内容、压缩头长度和加密计数值,;以及
将所述PDCP PDU内存指针和PDCP PDU标识发送至无线链路控制层RLC以使得所述RLC从所述第一内存区获取PDCP PDU。
优选地,对所述PDCP SDU进行处理以获取分组数据汇聚协议层协议数据单元PDCPPDU包括:
获取PDCP SDU中的PDCP SDU协议头内容;
对所述PDCP SDU协议头内容进行压缩处理以获取压缩头内容并记录压缩头长度;
对PDCP SDU数据载荷和所述压缩头内容进行加密处理以获取PDCP PDU数据载荷和加密的压缩头内容;
生成PDCP PDU协议头内容,PDCP PDU协议头内容包括PDCP PDU序列号;以及
根据所述PDCP PDU协议头内容、加密的压缩头内容和PDCP PDU数据载荷生成所述PDCP PDU。
优选地,所述方法还包括:
接收状态报告或重传信令;以及
根据所述状态报告或重传信令获取重传的PDCP PDU。
优选地,根据所述状态报告或重传信令获取重传的PDCP PDU包括:
根据所述状态报告或重传信令获取需要重传的PDCP PDU的PDCP PDU序列号;
根据所述PDCP PDU序列号获取PDCP PDU信息、PDCP PDU和PDCP SDU协议头内容;
根据所述PDCP PDU信息获取PDCP PDU协议头长度;
根据所述PDCP PDU协议头长度去除所述PDCP PDU的PDCP PDU协议头内容以获取PDCP PDU数据载荷和加密的压缩头内容;
根据所述计数值对所述加密的压缩头内容和所述PDCP PDU数据载荷进行解密以获取压缩头内容和PDCP SDU数据载荷;
根据所述压缩头长度去除所述压缩头内容;
将PDCP SDU数据载荷和PDCP SDU头内容组合以获取PDCP SDU;以及
对所述PDCP SDU进行处理以获取重传的PDCP PDU。
优选地,获取PDCP SDU中的PDCP SDU协议头内容包括:
接收并解析PDCP SDU;
根据解析结果确定所述PDCP SDU的版本号;
根据所述版本号确定固定头部分的内容和长度;
解析扩展头部分获取扩展头部分的内容和长度;
根据所述固定头部分的长度和扩展头部分的长度确定所述PDCP SDU协议头的长度;以及
根据所述PDCP SDU协议头的长度确定PDCP SDU协议头内容。
优选地,所述方法还包括:
接收RLC发送的已成功接收的PDCP PDU的PDCP PDU标识;以及
根据所述PDCP PDU标识释放已成功接收的PDCP PDU的内存。
第二方面,本发明实施例提供了一种数据通信方法,所述方法包括:
接收分组数据汇聚协议PDCP发送的分组数据汇聚协议协议数据单元PDCP PDU内存指针和PDCP PDU标识;
根据所述PDCP PDU内存指针在第一内存区获取PDCP PDU;
根据上行调度大小和获取到的PDCP PDU确定无线链路控制协议数据单元RLCPDU,所述RLC PDU包括RLC PDU协议头;
将所述RLC PDU协议头内容保存在第二内存区;以及
发送所述RLC PDU。
优选地,所述方法还包括:
接收状态报告,所述状态报告包括已成功接收的RLC PDU的RLC PDU序列号;
根据所述RLC PDU序列号获取对应的PDCP PDU标识;以及
将所述PDCP PDU标识发送至PDCP。
优选地,所述方法还包括:
接收状态报告,所述状态报告包括需要重传的RLC PDU的RLC PDU序列号;
根据所述RLC PDU序列号在第一内存区获取对应的PDCP PDU;以及
将获取到的PDCP PDU进行重组以获取重传的RLC PDU。
第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面和第二方面所述的方法。
本发明实施例的技术方案通过对接收到的PDCP SDU进行处理以获取PDCP PDU,将PDCP PDU和PDCP SDU协议头内容保存在第一内存区,并生成PDCP PDU内存指针和PDCP PDU标识发送至无线链路控制层RLC。由此,可以使得RLC与PDCP共用第一内存区,从第一内存区获取PDCP PDU,不需要另外分配内存区存储PDCP PDU,减小数据内存的占用,同时在进行数据重传时可以直接使用PDCP SDU协议头内容,不需要进行解压缩,减少数据重传的时间。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则在说明书的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
用户平面协议栈(User-Plane Protocol Stack)由3个子层组成,从高到低依次为:分组数据汇聚协议(Packet Data Convergence Protocol,PDCP)层、无线链路控制(Radio Link Control,RLC)层和媒体接入控制(Media Access Control)层。在发送端,从高层接收服务数据单元(Service Data Unit,SDU),为该层提供业务,并向低层输出协议数据单元(Protocol Data Unit,PDU)。例如:RLC层接收来自PDCP的分组(packet)。这些分组对PDCP层来说是PDCP PDU,但对RLC层来说是RLC SDU。在接收端,该过程是相反的,每层向上层发送SDU,上层作为PDU接收。PDCP PDU和RLC SDU具有相同的序列号(sequencenumber,SN),同时,RLC PDU有RLC序列号。PDCP序列号和RLC序列号可循环利用。当PDCP序列号达到最大值时,新的PDCP PDU又从最小值开始编号,但对应的超帧号(Hyper FrameNumber,HFN)增加1。PDCP序列号和超帧号组成的加密计数值COUNT唯一标识一个PDCP PDU。
每个基站(NodeB或eNB)和每个用户设备(UE),PDCP层的主要目的是发送或接收对端PDCP实体的分组数据。PDCP层主要完成以下几方面的功能:IP包头压缩与解压缩、数据与信令的加密和解密,以及信令的完整性保护和验证。PDCP将收到的上行数据包进行头压缩、加密、添加PDCP头操作等,然后将PDCP PDU发送给RLC层。RLC层的功能通过RLC实体来实现,RLC实体可配置为三种数据传输模式之一:透明模式(Transparent Mode,TM)、确认模式(Acknowledged Mode,AM)和非确认模式(Unacknowledged Mode,UM)。在AM和UM模式下,RLC实体负责RLC SDU的按序发送和接收。具体地,在RLC发送方,基站或用户设备中的RLC实体将来自PDCP实体的RLC SDU按照MAC层指示的大小依次重新进行分段(segmentation)并添加RLC报头(Header)形成RLC PDU并依次发送,RLC报头中包含为所述RLC PDU分配的RLCSN。在RLC接收方,RLC实体从下层接收RLC PDU,将这些RLC PDU按照RLC SN升序重排序和重组,并将重组后的RLC SDU按照从小到大的顺序依次递交给PDCP层。
在LTE系统切换,以及在NB-IOT系统重建立流程中,在AM下的未被确认成功发送的数据,PDCP需要进行数据重传,而重传需要使用当前流程中新的ROHC和安全配置来进行数据处理,之后添加新的PDCP协议头再发给RLC层。同时,AM下的RLC层有ARQ功能需求,需要对收到的RLC状态包中指示非确认的RLC PDU进行重传。现有技术中有两种方案进行数据重传。
第一种方案:PDCP层保存PDCP SDU,RLC保存发送的RLC PDU。PDCP层在进行数据重传时,将保存的PDCP SDU进行头压缩和加密之后生成新的PDCP PDU后发送至RLC层。RLC层在进行数据重传时直接获取保存的RLC PDU。但是,PDCP SDU和RLC PDU数据量较大,同时保存PDCP SDU和RLC PDU会占用较大的内存。
第二种方案:PDCP层保存PDCP PDU,同时与RLC层共用这部分数据内存,RLC层另外保存RLC PDU协议头内容。PDCP层进行重传的时候需要先进行解密、解压缩、去除PDCP协议头的操作,获取PDCP SDU,然后才能进行重传。解密一般是通过硬件来做,速度比较快。但是这种方案虽然可以减小内存,但是ROHC一般是通过软件实现,解压缩过程会占用较多的时间。
由此,本发明实施例提供了一种针对用户平面的LTE和NB-IoT的PDCP层和RLC层的数据通信方法,既可以减小内存的占用,又可以减少数据重传的时间。
图1是本发明实施例的发送侧的PDCP层的功能示意图。如图1所示,上行数据传输过程中,发送(UE)侧的PDCP层的提供的服务包括设置序列号(Sequence numbering)、头压缩(header Compression)、完整性保护(Integrity Protection)、加密(Ciphering)、添加协议头(Add PDCP header)和保存PDCP PDU。
在本实施例中,PDCP层接收PDCP SDU,设置一个序列号(SN),以使得可以按序发送PDCP PDU,同时,也可以使得接收侧可以按序接收PDCP PDU。
在本实施例中,对于用户平面,PDCP层对PDCP SDU协议头内容进行头压缩以获取压缩头内容。
在本实施例中,PDCP层对PDCP SDU的数据载荷(paylaod)和压缩头内容进行加密。
在本实施例中,PDCP层添加PDCP PDU协议头内容。由此,可以生成对应的PDCPPDU,所述PDCP PDU包括加密的压缩头内容、PDCP PDU数据载荷和PDCP PDU协议头内容。
本实施例以用户平面的数据通信为例进行说明,PDCP层数据通信方法可参照图2,包括如下步骤:
步骤S100、接收分组数据汇聚协议层服务数据单元PDCP SDU。
在本实施例中,PDCP层接收分组数据汇聚协议层服务数据单元PDCP SDU,所述PDCP SDU包括PDCP SDU协议头内容和PDCP SDU数据载荷。
步骤S200、对所述PDCP SDU进行处理以获取分组数据汇聚协议层协议数据单元PDCP PDU。
在本实施例中,PDCP层对所述PDCP SDU进行处理以获取PDCP PDU,所述PDCP PDU包括PDCP PDU协议头内容、加密的压缩头内容和PDCP PDU数据载荷。
具体地,PDCP层获取PDCP PDU的步骤如图3所示,数据转换过程可如图4所示,包括如下步骤:
步骤S210、获取PDCP SDU中的PDCP SDU协议头内容。
在本实施例中,PDCP层解析获取到的原始数据,获取PDCP SDU协议头内容。
具体地,以原始数据为UDP(User Datagram Protocol,用户数据报协议)为例进行说明,PDCP层获取PDCP SDU协议头内容如图5所示,包括如下步骤:
步骤S211、接收并解析PDCP SDU。
在本实施例中,PDCP层接收原始IP(Internet Protocol,网际互连协议)数据(也即PDCP SDU),获取PDCP SDU的固定头部分的内容。
进一步地,PDCP SDU的固定头部分的内容包括版本(Version)字段和扩展头字段。
进一步地,版本(Version)字段用于标识PDCP SDU的版本号,所述版本号包括IPv4(Internet Protocol version 4,网际协议版本4)和IPv6(Internet Protocol version6,网际协议版本6)。IPv4的版本字段为4位,IPv6的版本字段为6位。
进一步地,扩展头字段用于标识扩展头。根据扩展头字段获取扩展头的长度。
步骤S212、判断PDCP SDU的IP版本号是否是IPv4。
在本实施例中,PDCP层根据上述解析结果获取PDCP SDU的IP版本号,检测IP版本号是否是IPv4。
具体地,IPv4的固定头部分的长度为20字节,IPv6的固定头部分的长度为40字节。
步骤S213、如果IP版本号为IPv4,确定固定头部分的长度为20字节。
步骤S214、如果IP版本号为IPv6,确定固定头部分的长度为40字节。
步骤S215、解析扩展头部分,获取扩展头部分的长度。
在本实施例中,PDCP层解析扩展头部分,获取扩展头部分的长度。
进一步地,以IPV6为例进行说明,扩展头字段为Next Header,作用是标识IPv6的扩展头部,目前IPv6定义了7种扩展头部,每一种扩展头部都有一个数值来标识,比如基本头部中的Next Header中的值为44时,表示基本头部后面紧跟一个分段扩展头部。扩展头部的第一字节也是Next Header,作用同基本头部中的Next Header,IPv6除了基本头部之外可以带多个扩展头部,如果带有扩展头部则基本头部中的Next Header指示第一个扩展头部类型,否则指示传输层的协议类型;如果带有多个扩展头部,则扩展头部中的NextHeader依次指示下一个扩展头部类型,最后一个扩展头部的Next Header指示传输层的协议类型。由此,即可确定扩展头的长度。
步骤S216、判断紧接着是否是UDP协议头。
在本实施例中,PDCP层判断紧接着是否是扩展头部分。
步骤S217、其它数据。
在本实施例中,如果紧接着不是UDP协议头,说明是其它数据,例如TCP(Transmission Control Protocol,传输控制协议)或ESP(Encapsulate SecurityPayload,封装安全载荷)等。
步骤S218、固定头部分8个字节,解析获取扩展头长度。
在本实施例中,如果紧接着是UDP协议头,解析UDP协议头,根据解析结果获取扩展头部分的长度。
步骤S219、保存PDCP SDU协议头的内容和长度。
在本实施例中,如果将根据上述步骤S213或S214获取固定头部分的长度和内容记为第一固定头部分的长度和内容,根据步骤S215获取扩展头部分的长度和内容记为第一扩展头部分的长度和内容,根据步骤S218获取固定头部分的长度和内容记为第二固定头部分的长度和内容,根据步骤S218获取扩展头部分的长度和内容记为第二扩展头部分的长度和内容,则PDCP SDU的协议头的长度为第一固定头部分的长度、第二固定头部分的长度、第一扩展头部分的长度和第二扩展头部分的长度之和。PDCP层记录PDCP SDU协议头的内容和长度。
由此,即可获取PDCP SDU中的PDCP SDU协议头内容。
步骤S220、对所述PDCP SDU协议头内容进行压缩处理以获取压缩头内容。
在本实施例中,PDCP层对所述PDCP SDU协议头内容进行压缩处理以获取压缩头内容并记录压缩头长度。
进一步地,PDCP层通过ROHC(Robust Header Compression,健壮性包头压缩)算法进行头压缩。一个数据流中的IP头的许多部分在传输中是静态(static)的并且从不改变,ROHC就是利用这些不同IP包中的固定性,不必每次都传输这些冗余信息,在压缩至解码的过程中把它们存储为关联信息(context)。ROHC利用基于包序列号的线性函数得到报头动态变化的部分。
进一步地,ROHC协议定义了3种压缩、解压状态,以便ROHC在不同无线链路状态下对IP分组信头进行压缩和解压,保持压缩和解压数据流同步,保证ROHC协议健壮性。
具体地,三种压缩状态包括:IR(initiation and refresh state初始化和重置状态),用于初始、更新文景中静态域和动态域信息。在此状态下,压缩方连续发送全部IP信头信息和流关联标识符(PID和CID)。FO(first order,一级压缩状态),此时压缩方仅仪需要传递完整的动态信头域信息。SO(second order,二级压缩状态),SO状态是最高级压缩状态,这时压缩方根据动态域变化规律,仅传递动态域的压缩值,此时压缩方发送最高压缩率的ROHC压缩分组。
三种解压状态包括:NC(no context,无文景状态),NC状态主要足在数据流刚开始传递时解压方所处的状态,解压方没有IP信义静态和动态域信息,需要压缩方在IR状态发送包含完整信头的分组。SC(static context,静态文景状态),SC解压状态指解压方获得了足够的静态域信息,与压缩方的FO状态相对应,希望接收到包含完整动态信头的ROHC压缩分组。FC(full context)全文景状态,FC解压状态指解压方获得了足够的静态域信息和动态域的变化规律信息时所处的状态,与压缩方SO状态相对应,能够接收压缩方在SO状态所发送的ROHC压缩分组。
步骤S230、对PDCP SDU数据载荷和所述压缩头内容进行加密处理以获取PDCP PDU数据载荷和加密的压缩头内容。
在本实施例中,对PDCP SDU数据载荷和所述压缩头内容进行加密处理以获取PDCPPDU数据载荷(PDU Payload)和加密的压缩头内容。
进一步地,PDCP实体所使用的加密算法和密钥(KEY)由高层协议配置。一旦激活安全功能,加密功能即被高层激活,该功能应用于高层指示的所有PDCP PDU。PDCP用于加密的参数包括COUNT(计数值)和DIRECTION(传输的方向)。具体地,加密是通过对消息和加密流做异或(XOR)运算来实现的,这里加密流是由基于接入层(AS)导出密钥、无线承载ID、传输方向(上行或下行)以及COUNT值的加密算法所生成的。
步骤S240、生成PDCP PDU协议头内容,PDCP PDU协议头内容包括PDCP PDU序列号。
在本实施例中,PDCP层生成PDCP PDU协议头内容,PDCP PDU协议头内容包括PDCPPDU序列号,以使得PDCP PDU能够按序发送和接收。
步骤S250、根据所述PDCP PDU协议头内容、加密的压缩头内容和PDCP PDU数据载荷生成所述PDCP PDU。
在本实施例中,PDCP层根据所述PDCP PDU协议头内容、加密的压缩头内容和PDCPPDU数据载荷生成所述PDCP PDU,具体如图4所示,生成的PDCP PDU包括PDCP PDU协议头内容、加密的压缩头内容和PDCP PDU数据载荷。
由此,即可获取PDCP PDU。
步骤S300、将所述PDCP PDU和PDCP SDU协议头内容保存在第一内存区,并生成PDCP PDU内存指针。
在本实施例中,PDCP层将所述PDCP PDU和PDCP SDU协议头内容保存在第一内存区,并生成PDCP PDU内存指针,以使得通过内存指针从第一内存区获取PDCP PDU和PDCPSDU协议头内容。
进一步地,所述第一内存区为PDCP层和RLC层共用的内存区。
步骤S400、保存PDCP PDU信息,所述PDCU PDU信息包括PDCP PDU标识、PDCP PDU内存指针、PDCP SDU协议头长度、PDCP SDU协议头内容、压缩头长度和计数值。
在本实施例中,PDCP层包括PDCP PDU信息。具体地,PDCP PDU信息的数据结构可参照图6。如图6所示,PDCP PDU信息包括PDCP PDU标识(SduId)、PDCP SDU协议头长度(OriHdrLen)、PDCP SDU协议头内容的内存指针(pOriHdr)、压缩头长度(CompHdrLen)和计数值(Count)。
进一步地,应理解,图6仅示出了PDCP PDU信息的部分的数据结构,PDCP PDU信息还包括其它信息,例如PDCP PDU内存指针、PDCP PDU序列号等。
步骤S500、将所述PDCP PDU内存指针和PDCP PDU标识发送至无线链路控制层RLC以使得所述RLC从所述第一内存区获取PDCP PDU。
在本实施例中,PDCP层将所述PDCP PDU内存指针和PDCP PDU标识发送至无线链路控制层RLC以使得所述RLC从所述第一内存区获取PDCP PDU。
进一步地,RLC层在接收到PDCP PDU内存指针后,可以根据内存指针在第一内存区获取PDCP PDU,由此,RLC层不需要分配内存保存PDCP PDU,减小内存的占用。
进一步地,RLC层根据接收到的PDCP PDU(或RLC SDU)生成RLC PDU并发送,具体可参照图7,包括如下步骤:
步骤S600、接收分组数据汇聚协议PDCP层发送的分组数据汇聚协议协议数据单元PDCP PDU内存指针和PDCP PDU标识。
在本实施例中,RLC层接收PDCP层发送的PDCP PDU内存指针和PDCP PDU标识。
步骤S700、根据所述PDCP PDU内存指针在第一内存区获取PDCP PDU。
在本实施例中,RLC层根据所述PDCP PDU内存指针在第一内存区获取PDCP PDU。
步骤S800、根据上行调度大小和获取到的PDCP PDU确定无线链路控制协议数据单元RLC PDU。
在本实施例中,RLC层根据上行调度大小和获取到的PDCP PDU确定无线链路控制协议数据单元RLC PDU。
进一步地,RLC PDU包括RLC协议头以及1个或多个完整的PDCP PDU或PDCP PDU分段。
步骤S900、将所述RLC PDU协议头内容保存在第二内存区。
步骤S1000、发送所述RLC PDU。
具体地,RLC层位于PDCP层和MAC(Media Access Control,媒体访问控制)层之间,通过SAP(Service Access Point)与PDCP层进行通信,并通过逻辑信道与MAC层进行通信。每个UE的每个逻辑信道都有一个RLC实体(RLC entity)。RLC实体从PDCP层接收到的数据,或发往PDCP层的数据被称作RLC SDU(或PDCP PDU)。RLC实体从MAC层接收到的数据,或发往MAC层的数据被称作RLC PDU(或MAC SDU)。RLC层的功能是由RLC实体来实现的。一个RLC实体可以配置成以下3种模式之一:
TM(Transparent Mode,透传模式),对应TM RLC实体,简称TM实体。该模式可以认为是空的RLC,因为这种模式下只提供数据的透传(pass through)功能。
UM(Unacknowledged Mode,非确认模式):对应UM RLC实体,简称UM实体。该模式提供除重传和重分段外的所有RLC功能,因此提供了一种不可靠的传输服务。
AM(Acknowledged Mode,确认模式)对应AM RLC实体,简称AM实体。通过出错检测和重传,AM模式提供了一种可靠的传输服务。该模式提供了所有的RLC功能。
RLC层主要功能包括:
分段/串联和重组RLC SDU(concatenation/segmentation/reassembly,只适用于UM和AM模式)。RLC PDU的大小是由MAC层指定的,其大小通常并不等于RLC SDU的大小,所以在发送端需要分段/串联RLCSDU以便其匹配MAC层指定的大小。相应地,在接收端需要对之前分段的RLC SDU进行重组,以便恢复出原来的RLC SDU并按序递送(in-sequencedelivery)给上层。
在AM模式下,通过ARQ(Automatic Repeat-reQuest,自动重传请求)来进行纠错,MAC层的HARQ(Hybrid Automatic Repeat reQuest,混合自动重传请求)机制的目标在于实现非常快速的重传,RLC层的重传处理能够进一步降低反馈出错率。在UM和AM模式下,对RLCdata PDU进行重排序(reordering),MAC层的HARQ操作可能导致到达RLC层的报文是乱序的,所以需要RLC层对数据进行重排序。重排序是根据序列号的先后顺序对RLC data PDU进行排序的。
在UM和AM模式下,进行复包检重测(duplicate detection),出现重复包的最大可能性为发送端反馈了HARQ ACK,但接收端错误地将其解释为NACK,从而导致了不必要的MACPDU重传。
在AM模式下,对RLC data PDU进行重分段(resegmentation),当RLC data PDU需要重传时,可能需要进行重分段。例如,当MAC层指定的大小小于需要重传的原始RLC dataPDU的大小时,就需要对原始RLC data PDU进行重分段。
由此,RLC层可以根据接收到的PDCP PDU(或RLC SDU)生成RLC PDU并发送。
上述步骤S100-S1000为上行数据在第一次发送时的流程,通过上述步骤可以实现数据发送。
进一步地,在AM模式下,接收侧将已经成功接收的RLC PDU通过状态报告发送至发送侧的RLC层,使得发送侧的RLC层获取发送成功的消息,具体地,发送侧的RLC层的处理流程可参照图8,包括如下步骤:
步骤S1100、接收状态报告。
在本实施例中,所述状态报告包括已成功接收的RLC PDU的RLC PDU序列号。
步骤S1200、根据所述RLC PDU序列号获取对应的PDCP PDU标识。
在本实施例中,RLC层根据所述RLC PDU序列号获取对应的PDCP PDU标识。
进一步地,RLC层释放保存的RLC PDU协议头。
步骤S1300、将所述PDCP PDU标识发送至PDCP。
在本实施例中,RLC层将所述PDCP PDU标识发送至PDCP。
例如,假设RLC层在上行发送时,得到的RLC PDU中PDCP PDU都是完整的PDCP PDU,则表示该RLC PDU中的所有的PDCP PDU都发送成功。RLC层获取该RLC PDU中所有的PDCPPDU标识,发送至PDCP层。
又例如,假设RLC层在上行发送时,得到的RLC PDU包括一个或多个完整的PDCPPDU和一个不完整的PDCP PDU,则表示该RLC PDU中的完整的PDCP PDU发送成功。RLC层获取该RLC PDU中完整的PDCP PDU标识,发送至PDCP层。
进一步地,PDCP层根据接收到的已成功接收的PDCP PDU的PDCP PDU标识释放对应的内存,具体如图9所示,包括如下步骤:
步骤S1400、接收RLC发送的已成功接收的PDCP PDU的PDCP PDU标识。
在本实施例中,PDCP层接收RLC发送的已成功接收的PDCP PDU的PDCP PDU标识。
步骤S1500、根据所述PDCP PDU标识释放已成功接收的PDCP PDU的内存。
在本实施例中,PDCP根据PDCP PDU标识获取对应的PDCP PDU信息,将根据所述PDCP PDU标识释放已成功接收的PDCP PDU的内存。
进一步地,在LTE系统切换或者重建立流程中,或者,在NB-IOT系统的重建立流程中,或者,在AM下的未被确认成功发送的数据,PDCP需要进行数据重传。
图10是本发明实施例的PDCP层的数据重传的流程图。如图10所示,本发明实施例的PDCP层的数据重传包括如下步骤:
步骤S1600、接收状态报告或重传信令。
步骤S1700、根据所述状态报告或重传信令获取重传的PDCP PDU。
具体地,根据所述状态报告或重传信令获取重传的PDCP PDU如图11所示,包括如下步骤:
步骤S1710、根据所述状态报告或重传信令获取需要重传的PDCP PDU的PDCP PDU序列号。
在一个实施例中,PDCP层获取接收侧返回的状态报告,所述状态报告包括接收侧未成功接收的PDCP PDU序列号,PDCP层解析所述状态报告即可获取需要重传的PDCP PDU的PDCP PDU序列号。
在另一个实施例中,在小区切换或系统重建时,PDCP层接收上层发送的重建立指示,PDCP层将所有的未确认成功接收的PDCP PDU确定为需要重传的PDCP PDU,获取对应的PDCP PDU序列号。
步骤S1720、根据所述PDCP PDU序列号获取PDCP PDU信息、PDCP PDU和PDCP SDU协议头内容。
在本实施例中,PDCP层根据PDCP PDU序列号获取对应的PDCP PDU信息、PDCP PDU和PDCP SDU协议头内容。所述PDCP PDU信息包括PDCP PDU标识、PDCP SDU协议头长度、PDCPSDU协议头内容的内存指针、压缩头长度和计数值等。
步骤S1730、根据所述PDCP PDU信息获取PDCP PDU协议头长度。
在本实施例中,PDCP层根据PDCP PDU信息获取PDCP PDU协议头长度。
步骤S1740、根据所述PDCP PDU协议头长度去除所述PDCP PDU的PDCP PDU协议头内容以获取PDCP PDU数据载荷和加密的压缩头内容。
进一步地,获取PDCP SDU的数据转换过程可参照图12。
在本实施例中,PDCP层根据保存的PDCP PDU协议头长度去除所述PDCP PDU的PDCPPDU协议头内容,此时剩余的数据包括PDCP PDU数据载荷和加密的压缩头内容。
步骤S1750、根据所述计数值对所述加密的压缩头内容和所述PDCP PDU数据载荷进行解密以获取压缩头内容和PDCP SDU数据载荷。
在本实施例中,PDCP层根据保存的count值对所述加密的压缩头内容和所述PDCPPDU数据载荷进行解密,此时的数据包括压缩头内容和PDCP SDU数据载荷。
步骤S1760、根据所述压缩头长度去除所述压缩头内容。
在本实施例中,PDCP层根据保存的压缩头长度去除所述压缩头内容,此时剩余的数据包括PDCP SDU数据载荷。
步骤S1770、将PDCP SDU数据载荷和PDCP SDU头内容组合以获取PDCP SDU。
在本实施例中,PDCP层获取保存的PDCP SDU的协议头内容,将PDCP SDU数据载荷和PDCP SDU头内容组合,由此,即可获取原始的PDCP SDU,进而使得既可以不需要保存原始的PDCP SDU,又能够在不进行解压缩即可获取原始的PDCP SDU。
步骤S1780、对所述PDCP SDU进行处理以获取重传的PDCP PDU。
在本实施例中,PDCP层对所述PDCP SDU进行处理以获取重传的PDCP PDU可参照上述步骤S210-S250,在此不再赘述。
本实施例通过对接收到的PDCP SDU进行处理以获取PDCP PDU,将PDCP PDU和PDCPSDU协议头内容保存在第一内存区,并生成PDCP PDU内存指针和PDCP PDU标识发送至无线链路控制层RLC。由此,可以使得RLC与PDCP共用第一内存区,从第一内存区获取PDCP PDU,不需要另外分配内存区存储PDCP PDU,减小数据内存的占用,同时在进行数据重传时可以直接使用PDCP SDU协议头内容,不需要进行解压缩,减少数据重传的时间。
进一步地,对于RLC层的数据重传,可如图13所示,包括如下步骤:
步骤S1800、接收状态报告。
在本实施例中,RLC层获取接收侧发送的状态报告,所述状态报告包括未成功接收的RLC PDU的RLC PDU序列号。
步骤S1900、根据所述RLC PDU序列号在第一内存区获取对应的PDCP PDU。
在本实施例中,RLC层根据所述RLC PDU序列号获取该RLC PDU包括的PDCP PDU的PDCP PDU序列号,根据所述PDCP PDU序列号获取对应的PDCP PDU内存指针,根据所述PDCPPDU内存指针在第一内存区获取对应的PDCP PDU。
步骤S2000、将获取到的PDCP PDU进行重组以获取重传的RLC PDU。
具体地,RLC层将获取到的PDCP PDU进行重组以获取重传的RLC PDU可参照上述步骤S800,在此不再赘述。
由此,通过PDCP层保存PDCP SDU协议头内容和PDCP PDU,并与RLC层共用内存,通过RLC层保存RLC协议头,可以减小数据内存的占用,减少数据重传的时间。
本发明实施例通过对接收到的PDCP SDU进行处理以获取PDCP PDU,将PDCP PDU和PDCP SDU协议头内容保存在第一内存区,并生成PDCP PDU内存指针和PDCP PDU标识发送至无线链路控制层RLC。由此,可以使得RLC与PDCP共用第一内存区,从第一内存区获取PDCPPDU,不需要另外分配内存区存储PDCP PDU,减小数据内存的占用,同时在进行数据重传时可以直接使用PDCP SDU协议头内容,不需要进行解压缩,减少数据重传的时间。
图14是本发明实施例的电子设备的示意图。图14所示的电子设备为通用数据处理装置,其包括通用的计算机硬件结构,其至少包括处理器141和存储器142。处理器141和存储器142通过总线143连接。存储器142适于存储处理器141可执行的指令或程序。处理器141可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器141通过执行存储器142所存储的指令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其它装置的控制。总线143将上述多个组件连接在一起,同时将上述组件连接到显示控制器144和显示装置以及输入/输出(I/O)装置145。输入/输出(I/O)装置145可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出装置145通过输入/输出(I/O)控制器146与系统相连。
本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品。
本发明是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图来描述的。应理解可由计算机程序指令实现流程图中的每一流程。
这些计算机程序指令可以存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现流程图一个流程或多个流程中指定的功能。
也可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程中指定的功能的装置。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。