生成用于建立协议栈软件的配置文件的方法与流程

文档序号:17924514发布日期:2019-06-15 00:19阅读:216来源:国知局
生成用于建立协议栈软件的配置文件的方法与流程

本发明涉及网络通信,尤其涉及建立用于通信协议的协议栈软件。



背景技术:

协议栈(protocolstack),又称协议堆叠,是计算机网络协议套件的一个具体的软件实现。传统的协议栈软件是针对一种制式设计一种专用软件,对于不同的通信协议(例如gsm、td-scdma、wcdma、td-lte、fdd-lte)需要分别设置不同的协议栈软件。当产生了一种新的制式时,需要重新研发与该协议匹配的软件。不同制式之间存在相似之处也存在差异性,针对每种协议分别开发协议栈软件增加了研发的工作量、人工成本、研发周期,不能适应当前快速研发的市场要求,尤其是面对现如今5g网络的实验阶段以及诸如双链接、车联网、物联网等新型网络技术快速发展的需求。



技术实现要素:

因此,本发明的目的在于克服上述现有技术的缺陷,提供一种生成用于建立协议栈软件的配置文件的方法,其中,用于实现各个通信协议的各个功能模块以程序组件的方式存储,所述方法包括:

1)根据要建立的所述协议栈软件的通信协议确定所需的各个程序组件;

2)基于所确定的程序组件在通信协议流程中执行的顺序编写配置文件的各行字段。

优选地,根据所述方法,其中所述各个通信协议的所述程序组件被设置为具有统一的接口且彼此采用总线方式通信。

优选地,根据所述方法,其中所述各个通信协议的所述程序组件的接口被设置为包含:指向一个数据流的首地址的指针msg_p,其中所述数据流包含结构体和待处理数据。

优选地,根据所述方法,其中所述各个通信协议的所述程序组件按照以下方式存储:在一个功能库中存储用于实现同一类功能的程序组件,各个功能库分别与通信协议流程中的一个阶段对应;其中,

步骤1)包括:根据所述协议栈软件的通信协议,针对所述通信协议流程中的各个阶段分别确定相应的功能库;以及

步骤2)包括:编写配置文件的各行字段,使得每行字段分别对应于一个功能库,并且使得所述字段中的参数对应于所述功能库中的相应程序组件。

优选地,根据所述方法,其中所述各个功能库分别与所述通信协议体系结构的一个协议层对应。

一种生成协议栈软件的方法,其中,用于实现各个通信协议的各个功能以程序组件的方式存储,所述方法包括:

1)确定针对所述协议栈软件的配置文件,其中所述配置文件的各行字段与相应的程序组件在所述协议栈软件的通信协议流程中执行的先后顺序对应;

2)顺序获取所述配置文件的各行字段,调取与之对应的程序组件,生成所述协议栈软件。

优选地,根据所述方法,其中所述各个通信协议的所述程序组件被设置为具有统一的接口且彼此采用总线方式通信。

优选地,根据所述方法,其中所述各个通信协议的所述程序组件按照以下方式存储:在一个功能库中存储用于实现同一类功能的程序组件,各个功能库分别与通信协议流程中的一个阶段对应;并且

所述配置文件每行字段分别对应于一个功能库,并且所述字段中的参数对应于相应功能库中的相应程序组件;并且

步骤2)包括:根据每一行字段从相应的功能库中调取与所述参数匹配的程序组件。

优选地,根据所述方法,其中所述各个功能库分别与所述通信协议体系结构的一个协议层对应。

一种计算机可读存储介质,其中存储有计算机程序,所述计算机程序在被执行时用于实现上述任意一项所述的方法。

与现有技术相比,本发明的实施例具有以下优点:

采用配置文件来设计通信协议栈软件,其将实现各种通信协议的各个功能通过程序组件的形式实现,各个程序组件之间采用总线式的通信方式来保证协议流程串通,由此协议软件中的功能块之间不存在强耦合关系,可以灵活并且简单地通过修改配置文件来产生新的协议软件。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1是现有技术建立一个完整的协议栈软件的流程图;

图2(a)是根据本发明的一个实施例针对lte协议的配置文件示意图;

图2(b)是根据本发明的一个实施例针对5g协议的配置文件示意图;

图3是一个典型的lte无线接入协议体系结构示意图;

图4示出根据本发明的一个实施例按照功能类别划分的程序组件库;

图5是根据本发明的一个实施例在分别运行如图2(a)和图2(b)所示出的配置文件时所得到的协议栈软件的程序组件切换示意图。

具体实施方式

发明人通过研究发现现有技术都是针对一种通信协议建立一个协议栈软件,对于每一个软件都需要执行如图1所示出的预编译、编译、汇编、链接操作。不同的通信协议之间存在差异性,然而它们彼此在功能和业务处理流程上存在类似性,例如控制面的无线资源管理、rrc消息处理、接入控制等功能,业务面的分段重组、完整性保护、加密、调度、复用/解复用等功能。若是沿用传统方式,则需要执行许多重复操作,这不仅会增加人工成本还会拉长研发周期。

对此,本发明提出了一种基于配置文件和用于实现协议功能的程序组件来建立协议栈软件的方案。针对各个通信协议的各个功能分别编写程序组件,使得一个程序组件对应于通信协议处理过程中的一项功能,并存储这些程序组件。在生成用于建立协议栈软件的配置文件时,根据各功能通信协议流程中执行的先后顺序来编写配置文件的各行字段,使得在运行该配置文件时基于每一行字段调取与该通信协议匹配的程序组件从而实现相应的功能。

下面结合附图和具体实施方式对本发明作详细说明。

图2(a)示出了根据本发明的一个实施例的配置文件,其中一行字符串相当于一行代码,每一行字符串对应于通信协议流程中的一个阶段。例如,图2(a)中的第一行字符串为“libpdcprohc:yes”,其中字段名“libpdcprohc”对应于是否在分组数据会聚协议层(pdcp)执行头压缩功能,“:”用于分割字符串中的字段名和参数,参数“yes”表示需要执行头压缩功能。在运行到所述配置文件的第一行字符串时,基于该字符串调取用于执行头压缩功能的程序组件,这里的程序组件可以通过预先编程得到,该程序组件可以与上述字段名相匹配,例如libpdcprohc.so,由此方便快速地检索并调取对应的程序组件。在完成了针对第一行字符串的操作后,继续执行第二行字符串的操作。

本发明所述的配置文件既可以用于在运行该配置文件后提供包含各个程序组件的一个完整的协议栈软件,也可以用于在运行该配置文件时实时地调用各个程序组件以完成协议栈软件的各项功能。

根据本发明的一个实施例,在上述配置文件中各行字符串的先后顺序按照执行所述功能的先后进行排列。由此,在运行所述配置文件时,可以按照各行字符串的先后顺序执行,并且使得各程序组件之间采用总线方式通信,即将一个程序组件的输出提供给下一个程序组件以作为其输入,由此确保整个协议流程的串通。

在本发明的一个实施例中,程序组件类似于可供程序调取的库函数,其为根据各种通信协议所需实现的各种功能通过预先编程得到,每一个程序组件用于实现一项功能。针对同一种通信协议的各个程序组件具有统一的接口,以方便各程序组件之间采用总线方式通信。在一个优选实施例中,将全部各个程序组件设置为具有统一的接口,使得接口中包含与标签域(tag)、长度域(length)、内容域(value)对应的内容。根据本发明的一个实施例,将函数接口参数能统一为(int*msg_p,intlen)的形式,其中“int”表示参数类型为整数型,“*msg_p”为一个指针,其指向数据流首地址,“len”用于表示该数据流的长度。其中,数据流里包含结构体和待处理数据,结构体里包含函数处理所需参数和待处理数据长度信息,即包含标签域。在函数处理时,解析结构体里包含的参数进行处理。基于这样的接口可以使得不同的程序组件之间可以直接相互配合。

根据本发明的一个实施例,在编写配置文件时,使得配置文件中的每一行字符串对应于一个程序组件,并且各行字符串按照程序组件在通信协议流程中被执行的先后顺序排列。

在本发明的又一个实施例中,按照以下方式存储所述各个通信协议的所述程序组件:在一个功能库中存储用于实现同一类功能的程序组件,各个功能库分别与通信协议流程中的一个阶段对应;在编写配置文件时,使得配置文件中的每行字段分别对应于一个功能库,并且使得所述字段中的参数对应于所述功能库中的相应程序组件。这样的方式使得配置文件中的一行字符串对应于一个功能库,通过配置参数来确定调取该功能库中的哪些功能组件,这样可以大大降低配置文件的大小,且便于快速地检索并调取相应的程序组件。在一个实施例中,所述各个功能库分别与所述通信协议体系结构的一个协议层对应。

下面以lte和5g协议为例介绍如何基于通信协议体系结构确定功能库以及确定每个功能库中的程序组件。

图3示出了一个典型的lte无线接入协议体系结构,可以看到,该协议体系结构分为多个协议层,包括:物理层(phy)、媒体接入控制层(mac)、无线链路控制层(rlc)、分组数据会聚协议层(pdcp)、无线资源控制层(rrc)。其中,mac层主要实现与调度和harq相关的功能,具体包括:随机接入、harq、调度、sr及bsr上报、pdu构造等功能;rlc层主要实现与arq相关功能,具体包括:lte主要包含三种模式(am\um\tm)的数据传输、分段、重组、重排序、构造pdu等功能;pdcp层主要实现头/解压缩、加/解密、完整性保护/验证、pdu构造等功能;rrc层负责广播、测量、小区选择等功能。

与之相对地,5g协议标准目前正在建立过程中,基于已有的协议其与lte存在以下区别,包括:在mac层上具有不同的harq时序、pdu格式,在rlc层上设置了重排序功能并且具有不同的pdu格式,在pdcp层上引入了双连接技术、增加了路由和重排序功能并且具有不同的pdu格式。

可以看出,lte协议和5g协议的共性在于具有类似的协议层结构,并且在所实现的功能上也存在相似之处。考虑到在根据通信协议进行相应处理时基于协议层结构逐层处理,其与配置文件逐行执行字符串的特点相吻合,因而可以基于它们之间的共性来确定与每行字符串对应的功能类别,并基于每个功能建立程序组件。

图4示出了根据本发明的一个实施例按照功能类别划分的程序组件库。可以看到,图4按照lte协议和5g协议在通信协议体系结构上的共性划分了多个功能库以及确定了每个功能库中的程序组件。所述功能库基于通信协议体系结构中的协议层而划分,包括例如macpdu功能库、rlc重排序功能库、rlc处理功能库等。每个功能库中包括用于与其对应的协议层实现具体功能的程序组件,例如在rlc重排序功能库中包括有rlc重排序组件和rlc无重排序组件。采用功能库的方式存储程序组件,不仅可以方便管理组件,还便于在运行配置文件时能够快速地检索到与其当前字符串的参数匹配的程序组件。并且这样的存储方式使得在生成配置文件时无需针对每个程序组件分别撰写一行字符串,可以使得一行字符串对应于一个功能库,通过配置参数来确定调取该功能库中的哪些功能组件,这样可以大大降低配置文件的大小。

图4提供了针对功能库的一种实施方式,在本发明中还可以参考图3所提供的协议体系结构来划分功能库,例如使得功能库包括:分别针对mac层、rlc层、pdcp层、rrc层的功能库;在针对mac层的功能库中包括:随机接入组件、harq组件、调度组件、sr及bsr上报组件、pdu构造组件;在针对rlc层的功能库中包括:数据传输组件、分段组件、重组组件、重排序组件、pdu构造组件;针对pdcp层的功能库中包括:头压缩/解压缩组件、加/解密组件、完整性保护/验证组件、pdu构造组件;针对rrc层的功能库中包括:广播组件、测量组件、小区选择组件。

下面以pdcp层为例,介绍如何通过对一个已有的针对lte协议的配置文件进行修改以得到用于5g协议的协议栈软件。

假设,基于现有的lte协议已开发出了针对头压缩/解压缩功能库,包括:头压缩/解压缩程序组件库中用于执行头压缩和解压缩的程序组件libpdcpcompress.so和libpdcpdecompress.so,用于执行无头压缩和解压缩的程序组件libpdcpnocompre.so和libpdcpnodecompre.so;针对加/解密功能库,包括用于执行不同加密和解密算法的程序组件libeea0.so、libeea1.so、libeea2.so;针对完整性保护/验证功能库,包括用于执行不同完整性保护/验证算法的程序组件libeia0.so、libeia1.so、libeia2.so;针对pdcppdu构造/解析功能库,包括libaddlteheader.so、libcutlteheader.so。

通过研究5g与lte的区别,新构造了用于5g的一部分程序组件,包括:在原有的pdcppdu构造/解析功能库中增加用于5g的pdu构造/解析的程序组件libadd5gheader.so、libcut5gheader.so;针对重排序功能库的用于5g中执行有无重排序功能的程序组件libreorder.so、libnoreorder.so;针对路由功能库的用于5g执行是否包含路由功能的程序组件librouter.so、libnorouter.so。

在构造上述程序组件时,通过编写程序代码使得程序组件之间采用统一接口,各程序组件之间采用总线式的通信方式,即将上一功能库的输出,传入下一功能库的输入,以此将整个协议流程串通,并保证各组件库的低耦合性,然后将各功能组件库相应实现代码编译为动态库,通过gcc、*.c、-fpic、-shared、-o、lib、*.so实现。“-o”后面代表的是生成的动态库的名字,在编译时使得动态库的名字可以与组件名相匹配。

在完成了上述准备工作后,读取当前的配置文件,例如图2(a)所示出的内容。根据5g协议,对当前与lte协议匹配的配置文件中的各行字符串的参数进行修改。对于默认的配置文件是lte协议的情况,需对5g与lte的区别的部分作出修改,其他配置可以不做改变。

图2(b)示出了修改后的配置文件的内容,通过将其与图2(a)进行比较可以发现,其将第四行字符串从“libaddheader:lte”修改为“libaddheader:5g”,通过这一设置使得在运行配置文件时将原本调取的相应程序组件从“libaddheader.so”修改为“libadd5gheader.so”,将“libcutheader.so”修改为“libcut5gheader.so”。将第五行字符串从“librouter:no”修改为“librouter:yes”,通过这一设置使得在运行配置文件时将原本调取的相应程序组件从“libnorouter.so”替换为“librouter.so”,以实现路由功能。类似地,根据5g协议标准的需要对第六和七行字符串进行修改,以在运行配置文件时适应性地调取可以实现相应功能的程序组件。

在运行该经过修改的配置文件时,程序运行时会去链接与修改后的配置文件对应的功能库及程序组件,综合链接的各个程序组件以输入的数据或前一程序组件的输出作为其输入,从而完成协议处理流程,由此可以得到与该配置文件匹配的协议栈软件。

图5示出了在分别运行如图2(a)和图2(b)所示出的配置文件时所得到的协议栈软件的示意图。可以看到,各个程序组件以总线通信,初始地从头压缩功能库中调取用于执行有头和无头压缩的程序组件,该头压缩程序组件的输出作为下一个从加密功能库中调取的加密程序组件的输入,加密程序组件的输出被用于下一个从完整性保护功能库中调取的验证算法的程序组件的输入,依次类推。若是配置文件的相应设置为lte则继续lte流程,若是相应设置为5g则继续5g流程。

本发明提供的采用配置文件来设计通信协议栈软件,其将实现通信协议的各个功能通过程序组件的形式实现,各个程序组件之间采用总线式的通信方式来保证协议流程串通,由此协议软件中的功能块之间不存在强耦合关系,可以灵活并且简单地通过修改配置文件来产生新的协议软件。例如,在尚未提出5g协议之前,针对lte的配置文件中可以仅包含图2(a)中的第1~4、7~10行字符串;在提出5g协议后发现其需要能够支持路由和重排序功能,因而根据这样的功能在配置文件中增加第5、6行字符串,并且新构造5g与4g不同的一部分程序组件。由此运行修改后的配置文件便可实现建立针对5g的协议栈软件。

需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

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