一种多线程跨层式信息处理平台架构及信息处理方法转让专利

申请号 : CN201911175047.0

文献号 : CN110958143B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈惠芳谢磊何皓琛

申请人 : 浙江大学

摘要 :

本发明公开了一种多线程跨层式信息处理平台架构及信息处理方法。现有的网络节点内的数据包处理机制遵循严格分层的协议栈架构,数据通过严格的协议层间接口进行传输,增加了开发过程中协议层之间耦合性,并掩盖了跨层设计优势。本发明提出的平台架构,各协议层实例被组织成为相互独立的进程,并通过统一的套接字接口连接到一个核心处理模块,以此提供灵活性、安全性。本发明中的多线程机制允许每一个协议层同时运行多个协议模块实例,将每个协议层看做一个具有特定功能性的协议池,大幅增加平台架构的功能性和可扩展性。不同传统分层设计中协议层只能与其相邻层交互,本发明允许一个协议层与其他层进行直接通信,以此增加协议层之间的跨层增益。

权利要求 :

1.一种多线程跨层式信息处理平台架构,包括协议模块、核心处理模块和modem驱动模块;其特征在于:所述的协议模块是基于分层的协议架构,按其功能性分为媒体接入控制层、网络层、传输层和应用层;协议模块中每个协议层中的一个具体协议作为一个协议模块实例;各协议层同时存在一个或多个协议模块实例,协议栈中每个协议模块实例通过UNIX域套接字与核心处理模块相连;

所述的核心处理模块接受来自协议模块和modem驱动模块的客户连接请求,核心处理模块接收来自所有与其相连的协议模块实例的消息,并转发到所要求的协议模块实例或者是modem驱动模块;

核心处理模块存在两种交互的信息流:外部信息流和内部信息流;所述的外部信息流由各协议模块实例产生,包括应用层产生的数据包、其它协议层产生的控制包,根据协议模块实例的连接顺序,外部信息流通过核心处理模块向下层转发,并最终传送到modem驱动模块,发送至其他网络节点;所述的内部信息流包括各协议模块实例产生的控制信息或输出的状态信息,始终在通信节点内部的协议层之间传送,用于实现跨层通信,不会被modem驱动模块发送出去;

所述的modem驱动模块为物理层接口,连接硬件设备,进行数据帧的发送和接收,协议模块与硬件设备通过modem驱动模块分离,使得协议栈运行于不同的硬件之上。

2.如权利要求1所述的一种多线程跨层式信息处理平台架构,其特征在于:所述的平台架构将每个具体的协议模块实例组织成相互独立的进程,使得每个具体的协议模块实例能够相对独立地进行改变或重新启动。

3.如权利要求1所述的一种多线程跨层式信息处理平台架构,其特征在于:所述的平台架构使用Linux操作系统平台进行开发,进程的调度及存储资源环境管理依赖于操作系统实现。

4.一种多线程跨层式信息处理平台架构的信息处理方法,基于权利要求1~3任一所述的一种多线程跨层式信息处理平台架构,包括发送端信息处理方法和接收端信息处理方法,其特征在于:所述的发送端信息处理方法具体是:

步骤(1).核心处理模块初始化:包括搭建服务器套接字,并侦听各协议模块实例的连接请求;初始化连接表中的状态信息;初始化共享内存区域,各协议模块产生的数据存放在核心处理模块开辟的共享内存区域中,并由核心处理模块进行统一管理;

步骤(2).各协议模块实例与核心处理模块建立连接:各协议模块通过UNIX域套接字的形式与核心处理模块建立连接,高层协议模块实例指定其需要连接的低层协议模块实例,并允许某一层协议模块实例为空;

步骤(3).产生数据包:数据从某个协议模块实例中产生,向核心处理模块申请共享区空间,并将产生的数据放入一个通用的数据包结构体中,数据包结构体中除了需要传送的数据之外还包括- 包控制字段,其中控制字段必须包含“方向”字段和“协议模块ID”字段;

最终数据包结构体通过套接字接口将数据发送至核心处理模块等待处理;

步骤(4).核心处理模块从相应的套接字接口接收到数据包结构体,并根据数据包结构体中控制字段中的“方向”字段和“协议模块ID”字段,在连接表中查找数据需要流向的下一个协议模块实例,核心处理模块根据当前状态修改数据包结构体中- 控制字段信息后,将数据包结构体发送至下层协议模块实例:若下层协议模块实例不是modem驱动模块,则进行步骤(5);若下层协议模块实例为modem驱动模块,则进行步骤(6);

步骤(5).下层协议模块实例接收到来自核心处理模块的数据包结构体,根据数据包结构体的控制字段,当前的协议模块实例做出相应的功能性处理,处理完成之后将数据包通过与核心处理模块的套接字接口发送至核心处理模块,并进行步骤(4);

步骤(6).modem驱动模块收到来自核心处理模块的数据包结构体,将数据包结构体中需要传送的数据部分打包封装成帧,送到发送队列中等待发送;

所述的接收端信息处理方法具体是:

步骤(a).核心处理模块初始化:包括搭建服务器套接字,并侦听各协议实例客户的连接请求;初始化连接表中的状态信息;初始化共享内存区域,各协议模块产生的数据存放在核心处理模块开辟的共享内存区域中,并由核心处理模块进行统一管理;

步骤(b).各协议模块实例与核心处理模块建立连接:各协议模块通过UNIX域套接字的形式与核心处理模块建立连接,高层协议模块实例指定其需要连接的低层协议模块实例,并允许某一层协议模块实例为空;

步骤(c).modem驱动模块及其硬件设备从信道接收到数据帧,向核心处理模块申请共享区空间,将数据帧放入通用的数据包结构体中,并设置相应的控制字段,其中控制字段必须包含“方向”字段和“协议模块ID”字段;将数据包结构体通过套接字接口发送至核心处理模块;

步骤(d).核心处理模块通过相应的套接字接口收到数据包结构体,根据数据包结构体的控制字段中的“方向”字段和“协议模块ID”字段,以及连接表中状态信息解析出数据需要流向的下一个协议模块实例,并根据当前状态修改数据包结构体中的控制字段,将数据包结构体发送至解析出来的目的协议模块实例;

步骤(e).目的协议模块实例接收到来自核心处理模块的数据包结构体,根据数据包结构体中的控制字段判断自身是否为此数据包结构体的最终目的协议模块实例:若数据包结构体的终点为此协议模块实例,并且该协议模块实例属于应用层模块,则表示成功接收到来自发送节点的数据包;

若数据包结构体的终点为此协议模块实例,但该协议模块实例不是应用层模块,则表示成功接收到来自发送节点的属于该协议模块实例协议层的控制包,并根据自身协议具体的功能性对控制包进行处理;

若数据包结构体的终点并非此协议模块实例,则根据控制字段指示的信息以及自身协议模块具体的功能性,进行处理后将数据包结构体通过套接字接口发送至核心处理模块,并跳至步骤(d)。

说明书 :

一种多线程跨层式信息处理平台架构及信息处理方法

技术领域

[0001] 本发明属于水声通信网络技术领域,具体是水声通信网络节点内协议栈数据信息处理领域,涉及一种多线程跨层式信息处理平台架构及信息处理方法。

背景技术

[0002] 水声通信网络近年来是一个热门的研究领域,对很多水下应用的开发有着及其重大的影响,比如海洋环境的检测、海洋石油开采的远程控制、水下二氧化碳的安全存储以及预测海底地震及海底火山喷发等等。
[0003] 相比于陆地无线通信网络,水声通信网络有自己的特殊性,比如有限的带宽、比较恶劣的传输环境、较大的传输时延以及较高的误码率等等。另一方面,水声通信网络开发面临的另外一个重大的挑战是,研发人员想要部署基于水下环境的海洋应用,或者在真实的水下场景做相关实验是一件非常耗费人力物力的事情,故开发并设计一个良好的仿真和实验平台对于开发水声通信网络是一件十分有意义的工作。平台的设计应该同时考虑软硬件的成本效益、是否支持仿真工具、协议框架设计和传感器特性等等。通过利用合适的平台进行仿真或实验,研究人员可以降低实验验证的成本,方便调试和测试自己开发的水下通信协议,同时缩短协议开发的周期。
[0004] 尽管开发一个试验平台是一件及其复杂和困难的事情,但是由于强大的市场和应用需求,近年来已经有很多研究者开发出了许多优秀的水声通信网络的仿真实验平台,它们都具有各自不同的特点,可以迎合不同的应用实验需求。其中最具有代表性的为意大利罗马大学水声网络研究实验室开发的SUNSET平台、美国康涅狄格大学水下通信网络实验室开发的Sealinx平台以及新加坡国立大学声学研究实验室开发的UnetStack平台。
[0005] SUNSET是基于网络仿真工具NS2和NS2-Miracle所开发的一个开源的水下试验平台。SUNSET支持三种工作模式:软件仿真模式、硬件仿真模式和实测模式。通过对代码的复用,SUNSET能够在三种工作模式当中进行无缝转换而不需重新设计代码。但是,SUNSET从NS2继承而来的基于事件驱动的模式以及它只能支持单线程的实时调度的特点,使得其很难保证所有事件发生的同步性和事件处理的实时性。Sealinx是一个运行于实时系统的仿真工具,其事件调度机制依赖于底层的操作系统,故Sealinx的代码块能够从仿真模式直接转换到实测模式而不需要修改任何代码;并且Sealinx支持多进程多线程的工作模式,使得其具有更高的时间准确性,能满足更高的实时性要求,适合于对时间敏感的协议设计。但Sealinx的缺点是由于其依赖于其底层操作系统的实时调度,可能导致其工作效率低下。UnetStack是一种基于软件代理机制的以服务为导向的平台架构,能够在仿真和实测阶段灵活地实现跨层设计。UnetStack中存在JVM组件,使得在仿真阶段已经编译好的二进制代码能够直接与编译好的调制解调器模块连接并用于实测阶段,具有较高的代码复用率。
UnetStack的缺点在于其是基于JAVA平台开发,需要包含JVM组件,内存消耗较大,执行速度较低。
[0006] 在前人研究的基础上,本发明公开了一种多线程跨层式信息处理平台架构及信息处理方法。在所述的平台架构中各协议层实例被组织成为相互独立的进程,并通过统一的套接字接口连接到一个核心处理模块,以此提供灵活性、安全性。本发明中的多线程机制允许每一个协议层同时运行多个协议模块实例,将每个协议层看做为一个具有特定功能性的协议池,大幅增加平台架构的功能性和可扩展性。不同于传统分层设计中协议层只能与其相邻层进行交互,本发明提供一个良好的跨层设计平台,允许一个协议层与其他层进行直接通信,以此增加协议层之间的跨层增益。

发明内容

[0007] 本发明的目的是提供一种基于核心管理的多线程跨层式信息处理平台架构,该架构基于一种核心模块管理技术、多线程组织形式以及协议栈跨层设计技术,用以完成通信节点内对数据包的信息处理相关方法,提高整个协议栈系统的整体性能。
[0008] 为实现发明目的,本发明的信息处理平台架构包括:协议模块、核心处理模块以及modem驱动模块。其中:
[0009] 所述的协议模块是基于分层的协议架构,按其功能性分为媒体接入控制(MAC,Media Access Control)层、网络层、传输层和应用层。协议模块中每个协议层中的一个具体协议作为一个协议模块实例。各协议层同时存在一个或多个协议模块实例,协议栈中每个协议模块实例通过UNIX域套接字与核心处理模块相连。可以把每个协议层看成是一个具有相同功能模块的协议池,比如说,MAC层模块是一群具有媒体接入控制功能的协议群。
[0010] 所述的核心处理模块充当一个服务器的角色,接受来自协议模块和modem驱动模块的客户连接请求,这种组织方式使得一个协议层能够共存多个协议模块实例,以此能够实现多套协议栈连接,扩展平台的功能性。核心处理模块接收来自所有与其相连的协议模块实例的消息,并转发到所要求的协议模块实例或者是modem驱动模块。
[0011] 核心处理模块存在两种交互的信息流:外部信息流和内部信息流;所述的外部信息流由各协议模块实例产生,包括应用层产生的数据包、其它协议层产生的控制包,根据协议模块实例的连接顺序,外部信息流通过核心处理模块向下层转发,并最终传送到modem驱动模块,发送至其他网络节点;所述的内部信息流包括各协议模块实例产生的控制信息或输出的状态信息,始终在通信节点内部的协议层之间传送,用于实现跨层通信,不会被modem驱动模块发送出去。
[0012] 所述的modem驱动模块为物理层接口,连接硬件设备,进行数据帧的发送和接收;modem驱动模块将所述的协议模块与硬件设备相分离,使得协议栈可运行于不同的硬件之上,而不需要修改代码。
[0013] 平台架构把每个具体的协议模块实例组织成相互独立的进程,使得每个具体的协议模块实例能够相对独立地进行改变或重新启动。这种组织形式使得一旦某个协议层的协议实例不能够正常工作时,对协议的协议层的影响能够降到最小。
[0014] 本发明使用Linux操作系统平台进行开发,进程的调度及相应的存储资源环境管理依赖于操作系统实现,故本发明的平台架构能够不局限于用在仿真阶段,相同的代码能够完整地移植到相应的使用Linux平台的硬件环境,具有很高的代码复用率。
[0015] 基于上述通信节点内数据包信息处理平台架构,本发明还提供一种对于通信实体间的信息处理方法,包括发送端信息处理方法和接收端信息处理方法。
[0016] 发送端信息处理方法:
[0017] 步骤(1).核心处理模块初始化:包括搭建服务器套接字,并侦听各协议模块实例的连接请求;初始化连接表中的状态信息;初始化共享内存区域,各协议模块产生的数据存放在核心处理模块开辟的共享内存区域中,并由核心处理模块进行统一管理;
[0018] 步骤(2).各协议模块实例与核心处理模块建立连接:各协议模块通过UNIX域套接字的形式与核心处理模块建立连接,在建立连接的过程中完善连接表中的状态信息,高层协议模块实例指定其需要连接的低层协议模块实例,并允许某一层协议模块实例为空;
[0019] 步骤(3).产生数据包:数据从某个协议模块实例中产生,向核心处理模块申请共享区空间,并将产生的数据放入一个通用的数据包结构体中,数据包结构体中除了需要传送的数据之外还包括必要的包控制字段,其中控制字段必须包含“方向”字段和“协议模块ID”字段;最终数据包结构体通过套接字接口将数据发送至核心处理模块等待处理;
[0020] 步骤(4).核心处理模块从相应的套接字接口接收到数据包结构体,并根据数据包结构体中控制字段中的“方向”字段和“协议模块ID”字段,在连接表中查找数据需要流向的下一个协议模块实例,核心处理模块根据当前状态修改数据包结构体中一些必要的控制字段信息后,将数据包结构体发送至下层协议模块实例:若下层协议模块实例不是modem驱动模块,则进行步骤(5);若下层协议模块实例为modem驱动模块,则进行步骤(6);
[0021] 步骤(5).下层协议模块实例接收到来自核心处理模块的数据包结构体,根据数据包结构体的控制字段,当前的协议模块实例做出相应的功能性处理,处理完成之后将数据包通过与核心处理模块的套接字接口发送至核心处理模块,并进行步骤(4);
[0022] 步骤(6).modem驱动模块收到来自核心处理模块的数据包结构体,将数据包结构体中需要传送的数据部分打包封装成帧,送到发送队列中等待发送。
[0023] 接收端信息处理方法:
[0024] 步骤(a).核心处理模块初始化:包括搭建服务器套接字,并侦听各协议实例客户的连接请求;初始化连接表中的状态信息;初始化共享内存区域,各协议模块产生的数据存放在核心处理模块开辟的共享内存区域中,并由核心处理模块进行统一管理;
[0025] 步骤(b).各协议模块实例与核心处理模块建立连接:各协议模块通过UNIX域套接字的形式与核心处理模块建立连接,在建立连接的过程中完善连接表中的状态信息,高层协议模块实例指定其需要连接的低层协议模块实例,并允许某一层协议模块实例为空;
[0026] 步骤(c).modem驱动模块及其硬件设备从信道接收到数据帧,向核心处理模块申请共享区空间,将数据帧放入通用的数据包结构体中,并设置相应的控制字段,其中控制字段必须包含“方向”字段和“协议模块ID”字段;将数据包结构体通过套接字接口发送至核心处理模块;
[0027] 步骤(d).核心处理模块通过相应的套接字接口收到数据包结构体,根据数据包结构体的控制字段中的“方向”字段和“协议模块ID”字段,以及连接表中状态信息解析出数据需要流向的下一个协议模块实例,并根据当前状态修改数据包结构体中的控制字段,将数据包结构体发送至解析出来的目的协议模块实例;
[0028] 步骤(e).目的协议模块实例接收到来自核心处理模块的数据包结构体,根据数据包结构体中的控制字段判断自身是否为此数据包结构体的最终目的协议模块实例:若数据包结构体的终点为此协议模块实例,并且该协议模块实例属于应用层模块,则表示成功接收到来自发送节点的数据包;若数据包结构体的终点为此协议模块实例,但该协议模块实例不是应用层模块,则表示成功接收到来自发送节点的属于该协议模块实例协议层的控制包,并根据自身协议具体的功能性对控制包进行处理。否则,若数据包结构体的终点并非此协议模块实例,则根据控制字段指示的信息以及自身协议模块具体的功能性,进行相应处理后将数据包结构体通过套接字接口发送至核心处理模块,并跳至步骤(d)。
[0029] 本发明提出的一种基于核心管理的多线程跨层式信息处理平台架构能够允许在一个协议层中同时运行多个协议模块实例,这使得通信设备能够得到最大化的效用,开拓平台的功能性。本发明能够支持多线程和多进程,使得对于时钟敏感的协议能够达到更高的时间准确性。另外,本发明为跨层设计提供了一个良好的开发平台,以增加整个网络的效用。

附图说明

[0030] 图1为本发明的信息处理平台整体架构;
[0031] 图2为本发明平台架构中各层协议实例的一种连接情况;
[0032] 图3为本发明中外部数据包结构的基本内容;
[0033] 图4为本发明实施例中的步骤流图。

具体实施方式

[0034] 以下结合附图并举实施例对本发明作进一步详细说明。
[0035] 本发明提供一种基于核心管理的多线程跨层式信息处理平台架构,该架构基于一种核心模块管理技术、多线程组织形式以及协议栈跨层设计技术,用以完成通信节点内对数据包的信息处理相关方法,提高整个协议栈系统的整体性能。本发明的信息处理平台架构包括:协议模块、核心处理模块以及modem驱动模块,如图1所示。
[0036] 所述的协议模块是基于分层的协议架构,按其功能性分为MAC层、网络层、传输层和应用层。协议模块中每个协议层的一个具体协议作为一个协议模块实例。各协议层可同时存在多个协议模块实例,协议栈中每个协议模块实例通过UNIX域套接字与核心处理模块相连。基于协议层的这种组织形式,一个协议模块实例在初始化时必须明确指出需要与之连接的低层协议模块实例,并允许某一层协议模块实例为空。如图2所示,各协议模块实例与核心处理模块通过UNIX域套接字接口建立连接,通过初始化后形成多条协议栈链。其中协议模块实例8、9、10共存于应用层协议模块;协议模块实例6和7共存于传输层协议模块;协议模块实例1和2共存于MAC层协议模块。高层协议模块实例可以与在初始化时指定的低层协议模块实例直接进行通信,如应用层协议模块实例8绕过了传输层直接与网络层协议模块实例3进行通信。本发明的平台架构允许多个协议栈共同工作,使得底层硬件设备能够得到更充分的应用,如协议模块实例8→3→1→0,协议模块实例9→6→3→1→0和协议模块实例10→7→2→0分别组成了三条完整的协议栈链。
[0037] 如图3展示了本发明中使用的通用数据包结构体,作为协议栈内数据传输的载体。数据包结构体分为公共属性和pdu缓存两个部分。
[0038] 公共属性部分作为数据包结构体的控制字段,各字段含义如下:
[0039] 1)“类型”字段(Type):指示数据包结构体存储的数据类型。
[0040] TYPE_DATA表示此数据包结构为外部数据类型,需通过物理信道传送至其他节点;
[0041] TYPE_CTRL表示此数据包结构为内部数据类型,只需在节点内部进行通信;
[0042] 2)“方向”字段(Direction):指示数据包在协议栈内的传输方向。
[0043] SP_DIRECTION_UP表示为接收端的上行数据包;
[0044] SP_DIRECTION_DOWN表示为发送端的下行数据包;
[0045] 3)“长度”字段(DataLength):指示数据包结构体的总长度;
[0046] 4)“协议模块ID”字段(ModuleId):指示此数据包结构体当前所处的协议模块实例的ID号;
[0047] Pdu缓存部分作为外部数据的主体结构,各字段含义如下:
[0048] 1)“物理参数”字段(PhyParams):指示数据包的物理参数信息。此字段供协议实例内部使用,并不传送至物理信道;
[0049] 2)“包状态”字段(pkt_state):指示数据包当前所处的协议状态信息。此字段供协议实例内部使用,并不传送至物理信道;
[0050] 3)“包类型”字段(pkt_type):指示数据包的类型。此字段供协议实例内部使用,并不传送至物理信道;
[0051] 4)“数据长度”字段(msg_len):指示数据包的净负荷长度;
[0052] 5)“MAC包头”字段(Mac_header):指示数据包的MAC层包头结构;
[0053] 6)“网络层包头”字段(Net_header):指示数据包的网络层包头结构;
[0054] 7)“传输层包头”字段(Tra_header):指示数据包的传输层包头结构;
[0055] 8)“净负荷”字段(pkt_data):指示数据包的净负荷内容。
[0056] 如图4所示,本发明具体通过以下步骤实现:
[0057] 发送端信息处理方法:
[0058] 步骤(1).核心处理模块初始化;包括搭建服务器套接字,并侦听各协议模块实例的连接请求;初始化连接表中的状态信息;初始化共享内存区域,各协议模块产生的数据皆存放在核心处理模块开辟的共享内存区域中,并由核心处理模块进行统一管理;
[0059] 步骤(2).各协议模块实例与核心处理模块建立连接;各协议模块通过UNIX域套接字的形式与核心处理模块建立连接,在建立连接的过程中完善连接表中的状态信息,高层协议模块实例必须指定其需要连接的低层协议模块实例,并允许某一层协议模块实例为空。连接建立完成后,生成如图2所示的连接状态树,各节点存储必要的连接状态信息,其中连接状态信息必须包括低层的“协议模块ID”字段和“存储区ID”字段用于确定协议模块实例间的连接关系和内存位置关系。下列步骤按图2中箭头所指的一条协议栈进行说明;
[0060] 步骤(3).产生数据包;应用层协议模块实例8产生数据包,根据连接表中的“存储区ID”字段向核心处理模块申请存储空间,并将产生的数据放入如图3所指的数据包结构体中pdu缓存中的pkt_data字段作为净负荷,并根据净负荷的长度设置msg_len字段。应用层在pdu缓存部分设置其所需要设置的包头字段;在数据包结构体的公共属性部分设置其type类型为TYPE_DATA、Direction为SP_DIRECTION_DOWN、ModuleId为当前协议模块实例ID号“8”;DataLength为Pdu缓存部分的总长度。将设置好的数据包结构体通过连接建立好的套接字接口传送至核心处理模块;
[0061] 步骤(4).核心处理模块通过套接字接口收到来自应用层协议模块实例8的数据包结构体。通过数据包结构体的公共属性中的“Direction”和“Type”字段感知到此数据包为下行的外部数据包,并根据“ModuleId”字段和已经建立好的连接表找到协议模块实例8的下层协议模块实例ID号,即为网络层协议模块实例3,故将数据包结构体从套接字接口转发至网络层协议模块实例3;
[0062] 步骤(5).网络层协议模块实例3通过与核心处理模块连接的套接字接口收到来自核心处理模块的数据包结构体,通过数据包结构体的公共属性中的“Direction”和“Type”字段感知到包结构为下行的外部数据包,根据自身协议实现的功能以及数据包的状态对数据包进行处理,并将ModuleId字段修改为自身协议模块实例的ID号“3”;处理完成后将数据包结构体通过套接字接口发送至核心处理模块;
[0063] 步骤(6).核心处理模块通过套接字接口收到来自网络层协议模块实例3的数据包结构体。通过数据包结构体的公共属性中的“Direction”和“Type”字段感知到此数据包为下行的外部数据包,并根据“ModuleId”字段和已经建立好的连接表找到协议模块实例3的下层协议模块实例ID号,即为MAC层协议模块实例1,故将数据包结构体从套接字接口转发至MAC层协议模块实例1;
[0064] 步骤(7).MAC层协议模块实例1通过与核心处理模块连接的套接字接口收到来自核心处理模块的数据包结构体,通过数据包结构体的公共属性中的“Direction”和“Type”字段感知到包结构为下行的外部数据包,根据自身协议实现的功能以及数据包的状态对数据包结构体进行相应处理,并将ModuleId字段修改至自身协议模块实例的ID号“1”;处理完成后将数据包结构体通过套接字接口发送至核心处理模块;
[0065] 步骤(8).核心处理模块通过套接字接口收到来自MAC层协议模块实例1的数据包结构体。通过数据包结构体的公共属性中的“Direction”和“Type”字段感知到此数据包为下行的外部数据包,并根据“ModuleId”字段和已经建立好的连接表找到协议模块实例1的下层模块为物理层,故将数据包结构从套接字接口转发至modem驱动模块;
[0066] 步骤(9).modem驱动模块收到来自核心处理模块的数据包结构体。通过数据包结构体的公共属性中的“Direction”和“Type”字段感知到此数据包为下行的外部数据包,通过pdu缓存中的phyPrams字段配置相关环境,将msg_len、Mac_Header、Net_Header、Tra_Header以及msg_data字段依次打包封装成帧,排到物理层的队列中去,等待发送。
[0067] 接收端信息处理方法:
[0068] 步骤(a).核心处理模块初始化;包括搭建服务器套接字,并侦听各协议模块实例的连接请求;初始化连接表中的状态信息;初始化共享内存区域,各协议模块产生的数据皆存放在核心处理模块开辟的共享内存区域中,并由核心处理模块进行统一管理;
[0069] 步骤(b).各协议模块实例与核心处理模块建立连接;各协议模块通过UNIX域套接字的形式与核心处理模块建立连接,在建立连接的过程中完善连接表中的状态信息,高层协议模块实例必须指定其需要连接的低层协议模块实例,并允许某一层协议模块实例为空。连接建立完成后,生成如图2所示的连接状态树,各节点存储必要的连接状态信息,其中连接状态信息必须包括低层的“协议模块ID”字段和“存储区ID”字段用于确定协议模块实例间的连接关系和内存位置关系。下列步骤按图2中箭头所指的一条协议栈进行说明;
[0070] 步骤(c).modem驱动模块及其硬件设备从信道接收到数据帧,从数据帧中先解析到msg_len字段。根据msg_len的大小向核心处理模块申请相应共享区空间,接收到的数据以图3表示的数据包结构体的形式进行存储,将msg_len填充到相应字段,并将剩余的数据帧放入数据包结构体中pdu缓存中的pkt_data字段。在数据包结构体的公共属性字段中,设置包类型type为TYPE_DATA,Direction为SP_DIRECTION_UP,ModuleId为modem驱动模块ID号“0”;DataLength为Pdu缓存部分的总长度。并将整个数据包结构通过套接字接口发送至核心处理模块;
[0071] 步骤(d).核心处理模块收到来自modem驱动模块的数据包结构体,并根据数据包结构体的公共属性中的“Direction”和“Type”字段感知到此数据包为上行的外部数据包,则从包结构中的msg_data字段中按ModuleId所占空间长度解析到高层协议模块实例的ModuleId号为“1”,根据解析出来的ModuleId号查找连接表得到相应ModuleId对应的协议层为MAC层,故按照MAC层包头的格式继续解析数据包,并将解析的结果放入Mac_header字段。将解析完毕的数据包结构体通过套接字接口传送到MAC层协议模块实例1中去;
[0072] 步骤(e).MAC层协议模块实例1收到来自核心处理模块的数据包结构体,并根据数据包结构体的公共属性中的“Direction”和“Type”字段感知到此数据包为上行的外部数据包,根据数据包类型和模块自身的功能和状态对数据包做出相应处理,将数据包结构体中的ModuleId字段改成自身的协议模块实例ID号“1”,并通过套接字接口将处理好的数据包结构体发送至核心处理模块;
[0073] 步骤(f).核心处理模块收到来自MAC层协议模块实例1的数据包结构体,并根据数据包结构体的公共属性中的“Direction”和“Type”字段感知到此数据包为上行的外部数据包,则从包结构中的msg_data字段中按ModuleId所占空间长度解析到高层协议模块实例的ModuleId号为“3”,根据解析出来的ModuleId号查找连接表得到相应ModuleId对应的协议层为网络层,故按照网络层包头的格式继续解析数据包,并将解析的结果放入Net_header字段。将解析完毕的数据包结构体通过套接字接口传送到网络层协议模块实例3中去;
[0074] 步骤(g).网络层协议模块实例3收到来自核心处理模块的数据包结构体,并根据数据包结构体的公共属性中的“Direction”和“Type”字段感知到此数据包为上行的外部数据包,根据数据包类型和模块自身的功能和状态对数据包做出相应处理,将数据包结构体中的ModuleId字段改成自身的协议模块实例ID号“3”,并通过套接字接口将处理好的数据包结构体发送至核心处理模块;
[0075] 步骤(h).核心处理模块收到来自网络层协议模块实例3的数据包结构体,并根据数据包结构体的公共属性中的“Direction”和“Type”字段感知到此数据包为上行的外部数据包,则从包结构中的msg_data字段中按ModuleId所占空间长度解析到高层协议模块实例的ModuleId号为“8”,根据解析出来的ModuleId号查找连接表得到相应ModuleId对应的协议层为应用层。将数据包结构体通过套接字接口传送到应用层协议模块实例8中去;
[0076] 步骤(i).应用层协议模块实例8收到来自核心处理模块的数据包结构体,并根据数据包结构体的公共属性中的“Direction”和“Type”字段感知到此数据包为上行的外部数据包,根据数据包类型和模块自身的功能和状态对数据包结构体做出相关处理。接收完毕。
[0077] 上述实施例所述的内容仅仅是对本发明实现形式的列举,本发明的保护范围不应限于实施例所陈述的具体形式,本发明的保护范围也应包含在本发明基础上所构思的同类发明方法。