杨顺风,王茜竹,王爱军
(重庆邮电大学 通信与信息工程学院,重庆 400065)
LTE 是3GPP 主导的UMTS 技术的长期演进。LTE 系统以正交频分复用和多输入多输出技术为基础,并在移动通信系统中全面采用和优化分组数据传输。
LTE 的目标是开发出一套满足更低传输时延、提供更高用户传输速率、增加容量和覆盖、减少运营费用、优化网络架构、采用更大载波带宽的系统[1]。因此数据传输的快速、高效与否将直接影响到LTE 系统的传输速率等系统性能参数。
如图1 所示,LTE 业务数据处理涉及RABM 模块、PDCP模块、RLC 模块、MAC 模块[2],而信令数据主要涉及NAS、RRC、PDCP、RLC 及MAC 模块。其中,数据处理过程主要在PDCP、RLC、MAC 模块进行。下面将着重介绍PDCP 以及RLC 模块的功能:
PDCP 模块的主要功能有[3]:
1)用户平面和控制平面数据的传输;
2)用户平面的报头压缩和解压缩;
3)用户和控制平面数据的加密和解密,控制平面数据的校验和完整性保护;
4)数据包的丢弃。
RLC 模块的功能由RLC 实体执行,主要功能有[4]:
1)高层PDU 的传输以及对高层PDU 的按序递交;
2)对RLC SDU 的级联、分段和重组(UM 和AM);
3)对RLC SDU 的重复检错以及丢弃(UM 和AM);
4)对RLC 数据PDU 的重分段(AM)。
图1 数据传输模块图
LTE 系统中的数据传输模式分为TM(Transparent Mode,透明模式)、UM(Unacknowledged Mode,非确认模式)、AM(Acknowledged Mode),由于透明模式下PDCP 和RLC 模块只是单纯的对数据进行递交操作,并没有其他对数据的处理操作,而UM 模式下对于数据的处理操作流程可以使用和AM 相同的方案,所以只针对AM 模式下的上行数据传输流程进行设计研究,图2 为AM 模式下上行数据传输的详细流程设计。
图2 AM 模式上行数据发送流程图
1)RRC 向PDCP 发送一条CPDCP_CONFIG_REQ 请求配置原语,PDCP 收到该原语后保存相关参数;
2)RRC 向RLC 发送一条CRLC_CONFIG_REQ 请求配置原语,RLC 收到该原语后,保存相关参数,RLC 模块由空状态(NUL)进入到AM 数据传输状态(AMT);
3)当RABM 子层收到需要发送的上行数据时,不对数据做任何处理,将上行数据通过原语PDCP_DATA_REQ 发送给对应的PDCP 实例,PDCP 在收到发送数据请求原语后,将从RABM 收到的上行数据全部进行添加PDCP SN、头压缩、加密等处理,然后保存在PDCP PDU 缓存中;
4)PDCP 使用RLC_AM_DATA_REQ 原语将数据传递给对应的AM-RLC 实例,收到该原语后,RLC 将收到的RLC SDU 存储在上行缓存中,并更新RLC SDU 待发送的数据量[5];
5)MAC 子层在收到可用的上行总资源授权之后,将通过MAC_STATUS_IND 原语来给RLC 分配可用的上行发送资源;
6)RLC 在收到资源分配指示之后,将根据分配的资源对RLC PDU 进行分段或级联,并按照AMD PDU 的格式加上序列号(SN)、轮询比特(P)以及负载的SUD 长度信息(LI)等头信息[6];
7)至此,上行数据在PDCP 和RLC 的数据处理全部完成,RRC 通过CRLC_DEACT_REQ 以及CPDCP_DEACT_REQ来释放对应的AM-RLC 以及PDCP 实例,使PDCP 和RLC回到空状态(NUL)。
按照协议要求,数据在上行数据发送过程中,首先将数据从RABM 模块搬移到PDCP 模块,此时PDCP 模块申请新的内存块存储收到的数据,发送完成后,释放RABM 模块中占用的内存块,然后在PDCP 模块申请新的内存块存储收到的数据,发送完成后,释放RABM 模块中占用的内存块,然后在PDCP 模块进行添加PDCP SN、头压缩、加密等操作之后将新的数据搬移到RLC 模块申请的内存块,同时释放在PDCP 中的缓存数据,RLC 模块收到数据之后根据MAC 收到的授权资源的大小信息,来分段/级联RLC SDU 并且添加RLC 固定头以及扩展头,处理完成之后发送给MAC 模块,最后由MAC 模块处理之后将数据搬移到PUSCH 内存块中来完成数据的无线发送。
现有的上行数据传输方案是由上层在收到上行IP 包数据时进行内存申请,并通过指针传递的方式来完成模块间的数据传输,但是,由于在PDCP、RLC 和MAC 模块存在对数据的处理操作,所以必然的就存在对数据的搬移。通常在PDCP 模块、RLC 模块和MAC 模块都存在一次对数据的搬移,本文将设计一种可以减少在上行传输过程中的数据搬移的传输方案。
首先,由于PDCP 模块对于数据的操作没有级联/分段,只是添加PDCP 头,所以上行在申请上行IP 包内存时,预留出PDCP 头的内存[7],这样在PDCP 模块的时候就可以在IP包源地址中写IP 包内存添加PDCP 头,这样就可以省去在PDCP 模块的一次搬移。定义结构T_ComPduLte,该结构主要用于记录上行数据的地址、长度以及PDCP 头等信息,用于各个模块之间传输。T_ComPduLte 结构如下所述:
图3 PDCP PDU 缓存示意图
如图3 所示,PDCP PDU 需要三个指针来维护,分别为pFirstPdu、pCurrentPdu、pLastPdu,pFirstPdu 指向目前缓存的PDCP PDU 链表的第一个节点的地址,pCurrentPdu 指向链表中下一个需要RLC 处理的PDCP PDU 节点的地址,pLastPdu指向的是整个PDCP PDU 链表的位地址,由于AM 模式在收到对等层的状态报告之后才能对数据进行释放处理,所以pFirstPdu~pCurrentPdu 之间的节点其实就是已经发送给网络端但是未收到状态报告的PDCP PDU,而pCurrentPdu~pLastPdu 指的就是PDCP PDU 缓存中还未发送的数据,用v_totalSduLen 来记录PDCP 还未发送的数据。当PDCP 收到RABM 的数据之后,将PDCP SDU 进行头压缩、加密、添加PDCP SN 等处理后添加到pFirstPdu 链表中;如果pFirstPdu为NULL,则将收到的已处理的结构单元指针赋给pFirstPdu(pLastPdu);如果pFirstPdu 中有数据,则将收到的数据直接链接到pLastPdu- >next 位置;然后更新pLastPdu。而pCurrentPdu 只想的是链表中正在传递给RLC 模块的PDU。
RLC 将会扫描PDCP PDU 的缓存情况,如果pFirstPdu~pCurrentPdu 之间的SDU 个数大于等于2048 时,即等到接收状态报告的RLC SDU 大于等于2048,由于AM 模式在T_RLC_UlPduInfo 的结构信息,然后通过MAC_DATA_REQ 将多个PDU 信息结构体发送到MAC 层。
MAC 收到从RLC 模块发过来的RLC PDU 组装信息之后,将MAC PDU 数据搬移到PUSCH 内存块中最后来完成数据的无线发送。而MAC PDU 的组装就是在这次搬移的时候完成的,在搬移的时候首先回调RLC 函数根据T_RLC_UlPduInfo 的结构体信息来填写RLC 头,然后将不同的RLC 下接收窗口长度为2048,所以不能够发送新的SDU 数据,只允许发送状态PDU 或重传数据。
在RLC 模块,由于RLC PDU 的长度不是固定的,为了避免动态分配内存以及数据的搬移,设计了T_RLC_UlPduInfo结构体。该结构体用于RLC 模块向MAC 发送RLC PDU 的头内容、包含的SDU 的个数、头长度以及MAC PDU 头长度、RLC SDU 数据指针等信息。T_RLC_UlPduInfo 结构体如下所述:
在收到MAC_STATUS_IND 后,需要根据资源情况将RLC SDU 分段或级联。PDU 的组装信息包括PDU 头长度、PDU 头内容、包含的SDU 个数以及PDU 总长度等信息包含PDU 复用到MAC PDU 中并填写MAC PDU 头信息,最后将处理完成之后的数据搬移到PUSCH 内存块中完成数据无线发送。
根据LTE 对于传输速率的高要求[8],本文主要研究了数据传输的架构以及各个模块功能,设计了AM 模式下上行数据传输的流程设计,并提出了一种模块间内存共享的方案,通过对该方案的分析,不难看出该方案在整个数据上行传输过程中仅仅只对数据进行了一次搬移处理,不仅节约了内存的使用,而且减少了上行数据传输过程中的数据处理使用的时间,满足了LTE 系统对数据传输提出的高速要求。
[1]Rapporteur L T E.Text Proposal for TS 36.300 (Stage 2 TS) [S]//3GPP TSG RAN WG1 Meeting.2011,48:R1-071251.
[2]Access E U T R.Medium Access Control (MAC) Protocol Specification (Release 8),”3GPP TS 36.321[S].V8..0 (2010-06),
[3]Protocol,Packet Data Convergence." Specification”,3GPP TS[S].36.323 V9.0.0 (Rel’9) ." (2009-12) .
[4]Access E U T R.Radio Link Control (RLC) Protocol Specification (Release 9) ”,3GPP TS 36.322[S].V9.2.0,(2010-06) .
[5]孙远欣,杭小飞,张雪梅.LTE 系统中PDCP 子层功能研究[J].现代电子技术,2011,34(7) :44-48.
[6]李责勇,赵国会.LTE 协议栈RLC 层的研究与实现[J].数字通信,2012 (1) :48-51.
[7]殷人昆,耿国华.数据结构:C 语言描述[M].西安:西安电子科技大学出版社,2002.
[8]赵训威,林辉,张明,等.3GPP 长期演进(LTE) 系统架构与技术规范[M].北京:人民邮电出版社,2010.