无线链路控制层确认传输模式重分片数据存储及整理方法
技术领域
本发明涉及3GPP LTE无线通信系统,具体涉及到一种无线链路控制层确认传输模式重分片数据存储及整理方法。
背景技术
LTE(Long Term Evolution)项目是3G的演进,它改进并增强了3G的空中接入技术,采用正交频分复用OFDM(Orthogonal Frequency Division Multiplexing)和多输入多输出MIMO(Multiple-Input Multiple-Output)作为其无线网络演进的关键技术,为用户提供在20MHz频谱带宽下的下行100Mbit/s与上行50Mbit/s的峰值速率。
在LTE协议栈层次结构中,无线链路控制层RLC层作为Layer 2子层之一,位于LTE协议栈接入层(AS)中的分组数据汇聚协议层PDCP(Packet Data Convergence Protocol)和媒体接入控制层MAC(Medium Access Control)之间,其配置由无线资源控制层RRC(Radio Resource Control)控制,主要提供从传输模式到逻辑信道的映射,保证数据的无差错传输。RLC层主要由5个RLC层实体组成,分别是透明传输TM(Transparent Mode)发送实体、TM接收实体、无应答传输UM(Unacknowledged Mode)发送实体、UM接收实体和确认传输AM(Acknowledged Mode)实体。相应的,为了满足不同业务的服务需求,RLC提供了三种不同特性的数据传输模式:透明传输TM模式、无应答传输UM模式和确认传输AM模式。
TM模式主要是以透明的方式传输数据,不对从 MAC 层接收到的RLC PDU数据做任何处理,直接转发,可对上层传下来的数据RLC SDU提供分段功能,然而,只能按照预先定义好的大小对数据进行分段,常用于实时语音业务。
UM模式能够保证数据按序传递给上层,并且能够对上层数据根据带宽限制进行级联或分段,以最短时延使数据包按序到达对端,常用于VoIP业务等。
AM模式采用自动重传请求ARQ机制来支持无差错传输,保证数据到达接收端。因此,该模式主要适用于要求数据可靠性、对时延比较容忍的非实时业务,如FTP 业务、交互业务等。
AM模式采用ARQ重传机制为RLC层提供高可靠性传输,如果状态报告表明接收失败,发送端将根据新的指示值直接对该PDU 进行重传,不需要封装SDU。如果该重传PDU 长度大于新的复用指示值,则需要对PDU进行重分片且重分片次数没有限制,但是,如果该重传PDU 长度小于指示值,不能进行级联,只发送该重传PDU。
显然,AM模式重分片数据的存储和整理技术是AM模式重传实现的关键技术之一。现有技术确认传输模式重分片数据存储及整理方法首先对重分段数据进行重复检测,对重复数据直接丢弃,完成重复检测后再进行存储,此方法虽节省了重复数据的存储空间,但是需将数据一一对比,工作量大,占用时间长,效率低下,得不偿失。
发明内容
针对现有技术确认传输模式重分片数据存储及整理方法存在的工作量大、占用时间长和效率低下的问题,本发明提出一种无线链路控制层确认传输模式重分片数据存储及整理方法。
本发明无线链路控制层确认传输模式重分片数据存储及整理方法,根据接收的重分片数据与已经存储的重分片数据的偏移地址的大小关系确定是否存储该重分片数据及其存储位置;采用链表对重分片数据进行存储,并根据节点间数据起始偏移地址及数据长度值判断节点间数据的包含关系,进而判断数据是否接收完整,或者数据是否重复,并进行数据整理;其中,所述偏移地址是指确认模式数据单元的重分片数据块AMD PDU Segment的头部信息中分片偏移指示SO域所指示的值,所述节点是指链表中存储数据的基本要素,每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
进一步的,本发明无线链路控制层确认传输模式重分片数据存储及整理方法,包括以下步骤:
S1:定义确认模式数据分组数据单元AMD PDU的格式,包括数据部分和数据前的头部信息;所述头部信息又包括固定部分和扩展部分,其中,固定部分由D/C、RF、P、FI、E和SN六个参数组成,扩展部分由一组或多组LI 和E 组成;不是每个AMD PDU都包括扩展部分,只有包含多个数据域元素的AMD PDU的数据结构的头部信息才包括扩展部分,并且,AMD PDU分片之后形成的确认模式数据的重分片数据块AMD PDU Segment的头部信息中除了前述固定部分外,还增加最后段标识LSF域和分片偏移指示SO域;
S2:定义链表,定义用以存储ARQ重传中为适应指示长度的PDU重分片数据的链表;所述链表是指一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,包括一系列用以存储数据的节点;所述节点是指链表中存储数据的基本要素,每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域;
S3:存储数据,接收的重分片数据包;
S31:判断链表是否为空,是则,直接将接收的重分片数据存储到空链表中,数据存储完毕,转为执行步骤4;否则,顺序执行步骤S32;
S32:判断接收的重分片数据偏移地址是否小于或等于已经存储的重分片数据的偏移地址;是,则执行步骤S33,否则,执行步骤S34;其中,所述接收的重分片数据偏移地址是指确认模式下接收的重分片数据单元参数SO域的值,所述已经存储的重分片数据偏移地址是指确认模式下链表中已经存储的重分片数据参数SO域的值;
S33:链接已经存储的重分片数据到接收的重分片数据,数据存储完毕,转为执行步骤S4;所述链接是指根据链表中一或两个用来指向上一个/或下一个节点的位置的元素所指示的值进行存储的操作;
S34:判断已经存储的重分片数据偏移地址的节点是否是链表末端;是,则执行步骤S35,否则,执行步骤S36;
S35:调用链表中节点插入函数插入节点,数据存储完毕,转为执行步骤S4;
S36:根据链表头指针向后遍历,获取下一个节点,返回步骤S3;
S4:数据处理,获取当前节点重分片数据及下一个节点重分片数据;
S41:判断当前节点的重分片数据偏移地址与下一个节点的重分片数据偏移地址是否相等;是,则执行步骤S42,否则,表示当前节点重分片数据偏移地址小于下一节点重分片数据偏移地址,执行步骤S43;所述当前节点是指保存接收的重分片数据的节点;
S42:将当前节点重分片数据payload_size参数所指示的数据长度与下一个节点重分片数据payload_size参数所指示的数据长度进行对比,判断当前节点重分片数据是否包含下一个节点重分片数据,或者两个重分片数据是否相同;是则执行步骤S44,否则,说明下一个节点重分片数据包含当前节点重分片数据,执行步骤S45;
S43:根据当前节点末尾偏移地址与下一节点末尾偏移地址对比,判断当前节点重分片数据是否包含下一个节点重分片数据;是则执行步骤S44,否则,执行步骤S46;所述末尾偏移地址为参数SO域指示的起始偏移地址加上payload_size参数所指示的数据长度所得的值;
S44:删除下一个节点重分片数据,获取再下一个节点重分片数据偏移地址,将再下一个节点数据赋给下一节点,返回执行步骤S4;
S45:删除当前节点重分片数据,获取下一个节点重分片数据偏移地址和再下一个节点重分片数据偏移地址,将下一节点数据赋给当前节点,将再下一个节点数据赋给下一节点,返回执行步骤S4;
S46:比较当前节点重分片数据末尾偏移地址与下一节点重分片数据起始偏移地址:
若当前节点重分片数据末尾偏移地址小于下一节点重分片数据起始偏移地址,说明当前节点重分片数据与下一个节点重分片数据之间存在数据缺失,返回函数值-1,指示主函数数据整理未结束,返回执行步骤S3,直至主函数指示数据接收整理完成;
若当前节点重分片数据末尾偏移地址等于下一节点重分片数据起始偏移地址,说明当前节点重分片数据与下一个节点重分片数据连续,执行步骤S47;
若当前节点重分片数据末尾偏移地址大于下一节点重分片数据起始偏移地址,说明当前节点重分片数据与下一个节点重分片数据之间存在数据重叠,执行步骤S49;
S47:判断下一个节点是否是LSF节点,是,则执行步骤S48,否则,删除当前节点数据,将下一节点数据赋给当前节点,将再下一个节点数据赋给下一节点,返回执行步骤S4;所述LSF节点为指示该AMD PDU Segment是否是最后一个AMD PDU Segment的标识;
S48:根据表示起始分片存储的start参数判断重分片数据是否存在起始分片,是,则说明重分片数据接收完整,返回函数值1,指示主函数数据整理已完成,数据整理结束;否则,缺少起始分片数据,返回函数值-1,指示主函数数据整理未结束,返回执行步骤S3,直至主函数指示数据接收整理完成;所述start参数表示是否存在重分片数据的偏移地址为0,若存在,start参数置为1,表示起始重分片包已经存储;
S49:保留下一个节点重分片数据不变化,更新当前节点重分片数据及信息,即删除当前节点重分片数据与下一节点重分片数据的重叠部分,将当前节点重分片数据长度更新为当前节点起始偏移地址与下一节点起始偏移地址的差值;改变当前节点的FI 状态,起始RLC SDU状态不变,使结束RLC SDU状态与下一个节点的起始状态相同;获取下一节点,返回执行步骤S47;所述FI 状态为指示AMD PDU的数据部分是否是完整的RLC PDU标识。
本发明的有益技术效果是根据接收的重分片数据与已经存储的重分片数据偏移地址的大小关系判断是否存储及其存储位置,根据节点间数据起始偏移地址及数据长度值判断节点间数据的包含关系并进行数据整理。本发明方法将数据存储与数据整理分步进行,只需分析节点数据,方法简单易行,存储占用空间少,效率高,十分有利于AM 模式ARQ的运行。
附图说明
附图1为本发明确认模式数据分组数据单元AMD PDU格式结构图。
附图2为本发明确认模式数据单元的重分片数据块AMD PDU Segment格式结构图。
附图3为本发明重分片数据储存流程图。
附图4为本发明重分片数据整理方法框图。
下面结合附图对本发明无线链路控制层确认传输模式重分片数据存储及整理方法作进一步的说明。
具体实施方式
显而易见地,下面描述中的附图仅仅是本发明的一些实施例,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
附图1为本发明确认模式数据分组数据单元AMD PDU格式结构图,由图可知,确认模式数据分组数据单元AMD PDU包括数据部分和数据前的头部信息,头部信息又包括固定部分和扩展部分:固定部分由D/C、RF、P、FI、E、SN六个参数组成,扩展部分由一组或多组LI和E 组成,不是每个AMD PDU都包括扩展部分,只有包含多个数据域元素的AMD PDU的数据结构才包含头部信息的扩展部分。
附图2为本发明确认模式数据单元的重分片数据块AMD PDU Segment格式结构图。由图可知,确认模式数据单元的重分片数据块AMD PDU Segment中头部信息除了固定部分外,新增了最后段标识LSF域和 分片偏移指示SO域。
头部信息各参数含义如下:
SN:序列号。
D/C:指示当前RLC PDU为状态PDU还是数据PDU。
RF:指示当前RLC PDU为AMD PDU 还是AMD PDU Segment。
P:指示是否对端RLC实体发送状态报告。
FI:指示AMD PDU的数据部分是否是完整的RLC PDU。
E:指示该标识后是数据部分还是LI和E组成的扩展部分。
LSF:指示该AMD PDU分段是否是最后一个AMD PDU Segment。
SO:指示该AMD PDU分段在原PDU中的偏移量。
LI:指示以字节为单位的对应数据域的长度。
附图3为本发明重分片数据储存流程图,由图可知,重分片数据的储存过程主要根据其偏移地址与已经储存数据单元的偏移地址进行对比来判断是否储存及其储存位置。
附图4为本发明重分片数据整理方法框图,由图可知,数据整理主要根据节点间数据起始偏移地址及数据长度值判断节点间数据的包含关系,进而判断数据是否接收完整,或者数据是否重复,由判断结果进行数据整理。
本发明无线链路控制层确认传输模式重分片数据存储及整理方法,根据接收的重分片数据与已经存储的重分片数据的偏移地址的大小关系确定是否存储该重分片数据及其存储位置;采用链表对重分片数据进行存储,并根据节点间数据起始偏移地址及数据长度值判断节点间数据的包含关系,进而判断数据是否接收完整,或者数据是否重复,并进行数据整理;其中,所述偏移地址是指确认模式数据单元的重分片数据块AMD PDU Segment的头部信息中分片偏移指示SO域所指示的值,所述节点是指链表中存储数据的基本要素,每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
本发明无线链路控制层确认传输模式重分片数据存储及整理方法,包括以下步骤:
S1:定义确认模式数据分组数据单元AMD PDU的格式(参见附图1),包括数据部分和数据前的头部信息;所述头部信息又包括固定部分和扩展部分,其中,固定部分由D/C、RF、P、FI、E和SN六个参数组成,扩展部分由一组或多组LI 和E 组成;不是每个AMD PDU都包括扩展部分,只有包含多个数据域元素的AMD PDU的数据结构的头部信息才包括扩展部分,并且,AMD PDU分片之后形成的确认模式数据的重分片数据块AMD PDU Segment的头部信息中除了前述固定部分外,还增加最后段标识LSF域和分片偏移指示SO域(参见附图2);
S2:定义链表,定义用以存储ARQ重传中为适应指示长度的PDU重分片数据的链表;所述链表是指一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,包括一系列用以存储数据的节点;所述节点是指链表中存储数据的基本要素,每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域;
S3:存储数据,接收的重分片数据包(参见附图3);
S31:判断链表是否为空,是则,直接将接收的重分片数据存储到空链表中,数据存储完毕,转为执行步骤4;否则,顺序执行步骤S32;
S32:判断接收的重分片数据偏移地址是否小于或等于已经存储的重分片数据的偏移地址;是,则执行步骤S33,否则,执行步骤S34;其中,所述接收的重分片数据偏移地址是指确认模式下接收的重分片数据单元参数SO域的值,所述已经存储的重分片数据偏移地址是指确认模式下链表中已经存储的重分片数据参数SO域的值;
S33:链接已经存储的重分片数据到接收的重分片数据,数据存储完毕,转为执行步骤S4;所述链接是指根据链表中一或两个用来指向上一个/或下一个节点的位置的元素所指示的值进行存储的操作;
S34:判断已经存储的重分片数据偏移地址的节点是否是链表末端;是,则执行步骤S35,否则,执行步骤S36;
S35:调用链表中节点插入函数插入节点,数据存储完毕,转为执行步骤S4;
S36:根据链表头指针向后遍历,获取下一个节点,返回步骤S3;
S4:数据处理,获取当前节点重分片数据及下一个节点的重分片数据(参见附图4);
S41:判断当前节点的重分片数据偏移地址与下一个节点的重分片数据偏移地址是否相等;是,则执行步骤S42,否则,表示当前节点重分片数据偏移地址小于下一节点重分片数据偏移地址,执行步骤S43;所述当前节点是指保存接收的重分片数据的节点;
S42:将当前节点重分片数据payload_size参数所指示的数据长度与下一个节点重分片数据payload_size参数所指示的数据长度进行对比,判断当前节点重分片数据是否包含下一个节点重分片数据,或者两个重分片数据是否相同;是则执行步骤S44,否则,说明下一个节点重分片数据包含当前节点重分片数据,执行步骤S45;
S43:根据当前节点末尾偏移地址与下一节点末尾偏移地址对比,判断当前节点重分片数据是否包含下一个节点重分片数据;是则执行步骤S44,否则,执行步骤S46;所述末尾偏移地址为参数SO域指示的起始偏移地址加上payload_size参数所指示的数据长度所得的值;
S44:删除下一个节点重分片数据,获取再下一个节点重分片数据偏移地址,将再下一个节点数据赋给下一节点,返回执行步骤S4;
S45:删除当前节点重分片数据,获取下一个节点重分片数据偏移地址和再下一个节点重分片数据偏移地址,将下一节点数据赋给当前节点,将再下一个节点数据赋给下一节点,返回执行步骤S4;
S46:比较当前节点重分片数据末尾偏移地址与下一节点重分片数据起始偏移地址:
若当前节点重分片数据末尾偏移地址小于下一节点重分片数据起始偏移地址,说明当前节点重分片数据与下一个节点重分片数据之间存在数据缺失,返回函数值-1,指示主函数数据整理未结束,返回执行步骤S3,直至主函数指示数据接收整理完成;
若当前节点重分片数据末尾偏移地址等于下一节点重分片数据起始偏移地址,说明当前节点重分片数据与下一个节点重分片数据连续,执行步骤S47;
若当前节点重分片数据末尾偏移地址大于下一节点重分片数据起始偏移地址,说明当前节点重分片数据与下一个节点重分片数据之间存在数据重叠,执行步骤S49;
S47:判断下一个节点是否是LSF节点,是,则执行步骤S48,否则,删除当前节点数据,将下一节点数据赋给当前节点,将再下一个节点数据赋给下一节点,返回执行步骤S4;所述LSF节点为指示该AMD PDU Segment是否是最后一个AMD PDU Segment的标识;
S48:根据表示起始分片存储的start参数判断重分片数据是否存在起始分片,是,则说明重分片数据接收完整,返回函数值1,指示主函数数据整理已完成,数据整理结束;否则,缺少起始分片数据,返回函数值-1,指示主函数数据整理未结束,返回执行步骤S3,直至主函数指示数据接收整理完成;所述start参数表示是否存在重分片数据的偏移地址为0,若存在,start参数置为1,表示起始重分片包已经存储;
S49:保留下一个节点重分片数据不变化,更新当前节点重分片数据及信息,即删除当前节点重分片数据与下一节点重分片数据的重叠部分,将当前节点重分片数据长度更新为当前节点起始偏移地址与下一节点起始偏移地址的差值;改变当前节点的FI 状态,起始RLC SDU状态不变,使结束RLC SDU状态与下一个节点的起始状态相同;获取下一节点,返回执行步骤S47;所述FI 状态为指示AMD PDU的数据部分是否是完整的RLC PDU标识。
本发明一种适用于RLC AM模式中重分片数据存储及数据整理的方法,根据接收的重分片数据与已经存储的重分片数据偏移地址的大小关系判断是否存储及其存储位置,重分片数据保存完毕后,根据节点间数据起始偏移地址及数据长度值判断节点间数据的包含关系,进而判断数据是否接收完整,或者数据是否重复,进行数据整理。该方法将数据存储与数据整理分步进行,只需分析节点数据,方法简单易行,存储占用空间少,效率高,十分有利于AM 模式ARQ的运行,保证数据的无差错传输。