一种协议层之间通信的内存管理方法及装置与流程

文档序号:17398245发布日期:2019-04-13 00:59阅读:201来源:国知局
一种协议层之间通信的内存管理方法及装置与流程

本发明涉及无线通信领域,尤其涉及一种协议层之间通信的内存管理方法及装置。



背景技术:

长期演进(longtermevolution,lte)协议栈架构中,各协议层实体之间进行通信时,需要通信设备分配内存以传递用于层间交互的数据包。现有技术中,通信设备通过linux系统中的套接字缓冲区(socketbuffer,skb)进行协议层之间通信时,先在内核空间分配一块用于传递数据包的内存,再将这块内存拷贝到用户空间。显然,这种重复拷贝的方法浪费了一定存储空间。

因此,现有技术中通过skb进行协议层之间通信时,内存需要重复拷贝,耗费存储空间的问题亟待解决。



技术实现要素:

本申请实施例提供了一种协议层之间通信的内存管理方法及装置,用以解决现有技术中通过skb进行协议层之间通信时,内存需要重复拷贝,耗费存储空间的问题。

本发明实施例提供一种协议层之间通信的内存管理方法,该方法包括:

通信设备通过长期演进协议栈消息处理机制lte-psmpm结构,分配第一内存空间;所述lte-psmpm结构包括数据域和原语域;所述lte-psmpm结构的数据域用于存放协议层间交互的数据包;所述lte-psmpm结构的原语域用于存放协议层间交互规则的参数;

所述通信设备根据所述lte-psmpm结构的数据域和原语域,将第一协议层实体生成的第一数据包存储在所述第一内存空间;

所述通信设备的第二协议层实体确定需要获取所述第一数据包时,根据所述lte-psmpm结构的数据域和原语域,从所述第一内存空间读取所述第一数据包。

可选的,所述方法包括:

所述第一协议层实体和所述第二协议层实体对应的协议层为物理层phy、多址接入信道层mac、无线链路层控制层rlc、分组数据汇聚协议层pdcp、无线资源控制层rrc、非接入层nas中任意两个不同的协议层。

可选的,所述通信设备将第一协议层实体生成的第一数据包存储在所述第一内存空间之后,所述方法还包括:

所述通信设备通过所述第一协议层实体生成通知消息,并将所述通知消息发送至所述第二协议层实体;所述通知消息包括记录所述第一内存空间的物理位置的索引信息;

所述通信设备的所述第二协议层实体,接收所述通知消息;

所述通信设备的所述第二协议层实体,根据所述索引信息,确定所述第一内存空间的物理位置。

可选的,所述方法还包括:

若所述通信设备的所述第二协议层实体在第一预设时间段内,未接收到所述通知消息,则所述通信设备通过所述第一协议层实体,重新将所述通知消息发送至所述第二协议层实体。

可选的,所述通信设备的第二协议层实体从所述第一内存空间读取所述第一数据包之后,所述方法还包括:

所述通信设备释放所述第一内存空间。

本发明实施例中,通信设备通过lte-psmpm结构进行协议层之间通信时,仅分配一块第一内存空间,通信设备的第二协议层实体通过lte-psmpm结构的数据域,直接从该第一内存空间获取第一数据包,无需重复拷贝第一内存空间,即完成协议层之间数据包的传输,节省了内存空间。

本发明实施例提供一种协议层之间通信的内存管理装置,包括:

处理模块,用于通过长期演进协议栈消息处理机制lte-psmpm结构,分配第一内存空间;所述lte-psmpm结构包括数据域和原语域;所述lte-psmpm结构的数据域用于存放协议层间交互的数据包;所述lte-psmpm结构的原语域用于存放协议层间交互规则的参数;

数据传输模块,用于根据所述lte-psmpm结构的数据域和原语域,将第一协议层实体生成的第一数据包存储在所述第一内存空间;以及用于第二协议层实体确定需要获取所述第一数据包时,根据所述lte-psmpm结构的数据域和原语域,从所述第一内存空间读取所述第一数据包。

可选的,所述装置包括:

所述第一协议层实体和所述第二协议层实体对应的协议层为物理层phy、多址接入信道层mac、无线链路层控制层rlc、分组数据汇聚协议层pdcp、无线资源控制层rrc、非接入层nas中任意两个不同的协议层。

可选的,所述数据传输模块,还用于:

通过所述第一协议层实体生成通知消息,并将所述通知消息发送至所述第二协议层实体;所述通知消息包括记录所述第一内存空间的物理位置的索引信息;接收所述通知消息;所述第二协议层实体,根据所述索引信息,确定所述第一内存空间的物理位置。

可选的,所述数据传输模块,还用于:

若所述第二协议层实体在第一预设时间段内,未接收到所述通知消息,则通过所述第一协议层实体,重新将所述通知消息发送至所述第二协议层实体。

可选的,所述处理模块,还用于:

释放所述第一内存空间。

附图说明

图1为本申请实施例中一种协议层之间通信的内存管理方法对应的lte协议栈中用户平面协议栈的架构图。

图2为本申请实施例中一种协议层之间通信的内存管理方法对应的lte协议栈中控制平面协议栈的架构图。

图3为本申请实施例中一种协议层之间通信的内存管理方法对应步骤的流程图。

图4为本申请实施例中实现一种协议层之间通信的内存管理方法中内存数组的结构示意图。

图5为本申请实施例中一种协议层之间通信的内存管理方法对应步骤的具体流程图。

图6为本申请实施例中一种协议层之间通信的内存管理装置的结构示意图。

具体实施方式

为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互结合。

下面结合说明书附图对本发明实施例作进一步详细描述。

通信设备之间通信时,实际上是通过在各个协议层传递数据包进行的,各个协议层构成了协议栈。其中,为了使数据在通信设备之间完成传输,通信设备的参与方之间必须遵循相同的通信规则,这套规则称为协议。lte协议栈按照传输的消息类型不同,可以分为用户平面协议栈和控制平面协议栈。图1为本申请实施例中一种协议层之间通信的内存管理方法对应的lte协议栈中用户平面协议栈的架构图,图2为本申请实施例中一种协议层之间通信的内存管理方法对应的lte协议栈中控制平面协议栈的架构图。其中,图1用户平面协议栈中包括的通信设备有:用户终端(userequipment,ue)、演进型基站(evolvednodeb,enodeb)、第四代移动电话行动通信标准核心网络(epc)。图2控制平面协议栈中包括的通信设备有:ue、enodeb。具体地,用户平面协议栈包括:物理层phy、多址接入信道层mac、无线链路层控制层rlc、分组数据汇聚协议层pdcp、无线资源控制层rrc、非接入层nas;控制平面协议栈包括:phy、mac、rlc、pdcp、rrc。

各协议层实体之间进行通信时,需要通信设备分配内存以传递用于层间交互的数据包。现有技术中,通信设备先将在内核空间分配一块用于传递数据包的内存,再将这块内存拷贝到用户空间。显然,这种重复拷贝的方法浪费了一定存储空间。本申请实施例中提出了一种协议层之间通信的内存管理方法,该内存管理方法主要有两个特点:(1)数组化管理:根据硬件以及无线资源的不同,协议栈可以计算出最大的用户数,而各个用户业务在协议栈中的所需内存空间不是固定的,可以根据具体业务场景设置,因此协议栈中的内存空间大小可以计算得到。因此,为了便于内存的合理分配,将内存空间以数组的形式管理;其中,在计算器科学中,数组数据结构,简称数组,是由相同类型的元素的集合所组成的数据结构,分配一块连续的内存来存储。(2)统一的全局内存管理:协议栈根据不同的使用场景,需要分配不同大小的内存空间。为了内存管理更加灵活,该方法统一采用以数组为单位的内存分配方法,该方法易于添加删除以及更改。并且,该方法提供了统一的内存管理函数,用于对内存空间进行操作。

本申请实施例中提出了一种协议层之间通信的内存管理方法,对应步骤的流程图如图3所示。

步骤301:通信设备通过长期演进协议栈消息处理机制lte-psmpm结构,分配第一内存空间。

所述lte-psmpm结构包括数据域和原语域;所述lte-psmpm结构的数据域用于存放协议层间交互的数据包;所述lte-psmpm结构的原语域用于存放协议层间交互规则的参数。

步骤302:所述通信设备根据所述lte-psmpm结构的数据域和原语域,将第一协议层实体生成的第一数据包存储在所述第一内存空间。

步骤303:所述通信设备的第二协议层实体确定需要获取所述第一数据包时,根据所述lte-psmpm结构的数据域和原语域,从所述第一内存空间读取所述第一数据包。

步骤301中,通信设备为ue、enodeb、epc中任意一种。

一种可能的实现方式为,通信设备以lte-psmpm结构为单位分配内存,lte-psmpm结构又称为一个内存数组。步骤301中的第一内存空间即为内存数组在内存中的存储空间。其中,每个数组的结构示意图如图4所示。

内存数组包括头部、原语域和数据域。

内存数组的头部是一个结构体,内存数组的头部存储了该内存数组在内存中的位置,以及内存数组中各成员变量的位置指针。其中,结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,每种类型的数据称为一个成员变量。原语域用来存放层间交互的参数信息,数据域用来存放层间交互的数据包,原语域长度默认为64字节,数据域长度可根据具体业务场景设定,举例来说,数据域长度为256字节。

具体地,内存数组头部存储的成员变量包括:

存储位置:标识这块内存在通信设备中整块内存的存储位置,用于实现内存区域的查找、删除、数据更新等操作;

使用标志位:0代表该内存数组未使用,1表示正在使用;

协议层偏移值:表示各个协议层原语域和数据域的存储数据的偏移值,它的存在是为了减少各个协议层之间的内存拷贝,每个层直接从对应层起始位置往数据域方向取协议层偏移值大小的数据,即可得到所需的数据;

存储空间:表示给原语域和数据域的存储数据预留存储空间的大小。

终止位:表示原语域和数据域的存储数据的终止偏移位置;

起始位:表示原语域和数据域的存储数据的起始偏移位置;

起始地址:表示原语域和数据域的存储数据公共的起始地址。

通信设备分配第一内存空间时,具体地,第一内存空间的参数信息,从起始地址开始,向头部方向偏移协议层偏移值中原语域偏移值大小的长度,向数据域方向偏移协议层偏移值中数据域偏移值大小的长度,终止位中记录数据存储的最终偏移位置。需要说明的是,各个协议层实体的内存都有该协议层实体特定的内存管理模块,该内存管理模块维护了多个内存数组,每次需要与其它协议层实体进行数据交互时,就分配一个空闲的内存数组。

步骤302中,所述通信设备将第一协议层实体生成的第一数据包存储在所述第一内存空间。其中,第一协议层实体为具体实现该协议层功能的软件或模块;第一数据包为内存数组的头部、原语域、数据域中的存储数据。

步骤302之后,通信设备的第一协议层实体,根据第一内存空间的存储数据、以及内存数组的物理存储位置,生成通知消息。通知消息至少包括第一内存空间的物理位置的索引信息。其中,索引信息为记录了第一内存空间的物理位置的存储结构。第一内存空间为内存数组在内存中的存储空间。

通信设备的第一协议层实体将通知消息发送至通信设备的第二协议层实体。

通信设备的第二协议层实体接收该通知消息。

通信设备的第二协议层实体,根据通知消息中的索引信息,确定内存数组在内存中的存储空间。

可选的,如果通信设备的所述第二协议层实体在第一预设时间段内,未接收到所述通知消息,则所述通信设备通过所述第一协议层实体,重新将所述通知消息发送至所述第二协议层实体。

举例来说,通信设备中,第一协议层实体为rrc实体,第二协议层实体为mac实体,第一预设时间段为1分钟。mac实体在1分钟内未收到rrc实体发送的通知消息,则rrc实体重新将通知消息发送至mac层实体。

步骤303之后,通信设备的第二协议层实体接收到通知消息后,已经确定了内存数组的物理存储位置。当第二协议层实体确定需要获取所述第一数据包时,如收到读取指令时,从所述第一内存空间读取第一数据包。

步骤303之后,可选的,通信设备释放第一内存空间。

本申请实施例中提出了一种协议层之间通信的内存管理方法,对应步骤的具体流程图如图5所示。

步骤501:通信设备为第一协议层实体申请一个内存数组。

其中,通信设备生成了内存数组的头部。具体地,通过调用该内存数组定义的内存申请函数lte-psmpm_alloc()申请。

步骤502:通信设备在内存数组在原语域开辟头部中存储空间变量中原语域存储空间大小的内存空间,用于存储内存数组的参数信息。

具体地,通过调用该内存数组定义的开辟存储空间的函数lte-psmpm_push()进行。

步骤503:通信设备在内存数组在原语域开辟头部中存储空间变量中数据域存储空间大小的内存空间,用于存储协议层实体间交互的数据包。

具体地,通过调用该内存数组定义的开辟存储空间的函数lte-psmpm_put()进行。

步骤504:通信设备生成接口消息,并把接口消息发送到第二协议层实体。

其中,接口消息包括内存数组存储位置的索引信息。

具体地,通过调用消息发送函数send_un_socket_msg()把接口消息发到第二协议层实体。

步骤505:通信设备的第二协议层实体接收到接口消息后,并对接口消息进行解析。

其中,对接口消息解析后的数据包括索引信息。

步骤506:通信设备的第二协议层实体根据索引信息找到内存数组。

具体地,通过调用该内存数组定义的内存查询函数lte-psmpm_find()进行。

步骤507:通信设备的第二协议层实体获取原语域中存储数据。

具体地,通过调用该内存数组定义的数据获取函数lte-psmpm_pull()进行。

步骤508:通信设备的第二协议层实体根据原语域中存储数据,对数据域中存储数据相应的处理。

具体地,通过调用该内存数组定义的数据处理函数lte-psmpm_get()进行。

步骤509:通信设备释放内存数组。

具体地,通过调用该内存数组定义的内存释放函数lte-psmpm_free()进行。

本发明实施例中,可选的,随着协议栈的用户数量增多、数据容量增大,举例来说,当数据量大于或等于内存的最大承载量,协议栈各层可根据需要灵活扩充该协议层的内存区,此时协议栈各层会申请获得更多的内存数组。如果用户数据量减少,不再需要更多的内存数组,举例来说,当数据量小于内存的最大承载量,各层会查找冗余的内存数组,举例来说,当数据量小于内存的最大承载量时,会保留原先分配的基本内存,不会释放,但除了基本内存外,剩下的内存都会释放。

本发明实施例中,通信设备仅分配一块第一内存空间,通信设备的第二协议层实体直接从该第一内存空间获取第一数据包,无需重复拷贝第一内存空间,即完成协议层之间数据包的传输,节省了内存空间。

如图6所示,为本发明实施例提供的一种协议层之间通信的内存管理装置的结构示意图,该装置包括:

本发明实施例提供一种协议层之间通信的内存管理装置,其特征在于,包括:

处理模块601,用于通过长期演进协议栈消息处理机制lte-psmpm结构,分配第一内存空间;所述lte-psmpm结构包括数据域和原语域;所述lte-psmpm结构的数据域用于存放协议层间交互的数据包;所述lte-psmpm结构的原语域用于存放协议层间交互规则的参数;

数据传输模块602,用于根据所述lte-psmpm结构的数据域和原语域,将第一协议层实体生成的第一数据包存储在所述第一内存空间;以及用于第二协议层实体确定需要获取所述第一数据包时,根据所述lte-psmpm结构的数据域和原语域,从所述第一内存空间读取所述第一数据包。

可选的,所述装置包括:

所述第一协议层实体和所述第二协议层实体对应的协议层为物理层phy、多址接入信道层mac、无线链路层控制层rlc、分组数据汇聚协议层pdcp、无线资源控制层rrc、非接入层nas中任意两个不同的协议层。

可选的,所述数据传输模块602,还用于:

通过所述第一协议层实体生成通知消息,并将所述通知消息发送至所述第二协议层实体;所述通知消息包括记录所述第一内存空间的物理位置的索引信息;接收所述通知消息;所述第二协议层实体,根据所述索引信息,确定所述第一内存空间的物理位置。

可选的,所述数据传输模块602,还用于:

若所述第二协议层实体在第一预设时间段内,未接收到所述通知消息,则通过所述第一协议层实体,重新将所述通知消息发送至所述第二协议层实体。

可选的,所述处理模块601,还用于:

释放所述第一内存空间。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1