本发明涉及通信,具体提供一种网元中的数据处理方法、卫星网络数据处理系统。
背景技术:
1、卫星网络数据平面数据流量大,功能逻辑复杂,系统对数据实时性要求高。
2、现有技术中,在针对卫星网络数据进行处理的过程中,存在因通量低、高延迟、后期维护困难而导致的数据转发效率低下的问题,并且传统的通信网络中间件数据接收/发送描述符队列位于内核空间,接收/发送数据需要内核空间与用户空间之间的内存拷贝,需处理数据时中断控制器产生硬中断,等待cpu处理该中断。大量内存拷贝与中断,不利于大流量网络通信。
3、相应地,本领域需要一种网元中的数据处理方法、卫星网络数据处理系统的方案来解决上述问题。
技术实现思路
1、为了克服上述缺陷中的至少之一,提出了本发明,以提供解决或至少部分地解决现有技术中卫星网络数据处理效率低下的技术问题的一种网元中的数据处理方法、卫星网络数据处理系统。
2、在第一方面,本发明提供一种网元中的数据处理方法,所述网元包括第一网卡适配器、第二网卡适配器、第一中间件、第二中间件以及n个数据处理模块,其中n≥2,
3、所述方法包括:
4、第一网卡适配器经由所述第一中间件将数据流顺序发送至所述n个数据处理模块中的各个数据处理模块,以使得所述数据流在被当前数据处理模块进行数据处理后发送至下一数据处理模块;
5、所述多个数据处理模块中的最后一个数据处理模块将数据流处理后经由所述第二中间件发送至所述第二网卡适配器。
6、在上述方法的一个技术方案中,
7、所述第一网卡适配器和第二网卡适配器为同一网卡适配器;和/或
8、所述第一中间件和第二中间件为同一中间件。
9、在上述方法的一个技术方案中,所述方法还包括:
10、启动1个主线程和n个子线程,其中所述1个主线程和n个子线程分别占用单独的cpu核,所述n个子线程与所述n个数据处理模块一一对应;
11、当所述n个数据处理模块中任一数据处理模块对数据流进行数据处理时,使用n个子线程中对应的子线程执行所述数据处理;
12、使用所述主线程控制所述n个子线程。
13、在上述方法的一个技术方案中,
14、所述第一中间件和/或第二中间件设置于所述n个数据处理模块所在的应用层。
15、在上述方法的一个技术方案中,所述第一网卡适配器经由所述第一中间件将数据流顺序发送至所述n个数据处理模块中的各个数据处理模块,包括:
16、第一网卡适配器的dma控制器检测所述第一中间件的接收描述符队列中是否存在硬件可写内存;
17、若存在,所述dma控制器将所述数据流写入所述硬件可写内存并将所述硬件可写内存设置为用户可读状态;
18、所述n个数据处理模块中的第一数据处理模块逐个扫描接收描述符队列,当存在用户可读状态数据时,取走所述数据,将空内存放置于已取走数据位置,并将所述空内存设置为硬件可写状态。
19、在上述方法的一个技术方案中,所述多个数据处理模块中的最后一个数据处理模块将数据流处理后经由所述第二中间件发送至所述第二网卡适配器,包括:
20、所述n个数据处理模块中的最后一个数据处理模块检测所述第二中间件的发送描述符队列中是否存在用户可写内存;
21、若存在,所述最后一个数据处理模块将处理后的数据置于所述用户可写内存,并将所述用户可写内存设置为硬件可读状态;
22、第二网卡适配器的dma控制器逐个扫描发送描述符队列,当存在硬件可读状态数据时,取走所述数据,并将发送描述符队列中该数据设置为用户可写状态。
23、在上述方法的一个技术方案中,所述方法还包括:
24、以无锁环形队列作为所述各个数据处理模块的输入输出。
25、在上述方法的一个技术方案中,所述方法还包括:
26、创建内存池,其中所述内存池包括n+1个内存缓存数组、多个内存块以及存放可用内存块指针的无锁环形队列,并且所述n+1个内存缓存数组与所述n+1个cpu内核一一对应;
27、当任一数据处理模块进行数据处理时,对应的cpu核从与其对应的内存缓存数组内申请内存;
28、当所述对应的内存缓存数组中内存块数量满足申请需求时,直接从数组中取出;
29、当所述对应的内存缓存数组中内存块数量不满足申请需求时,从无锁环形队列中一次性申请能够填满该对应的内存缓存数组数量的内存块,放置于缓存数组中,供所述数据处理使用;和/或
30、当任一数据处理模块进行数据处理后对应的cpu核释放内存时,将内存放入与该cpu核对应的内存缓存数组中,当所述对应的内存缓存数组满时,将不能再放入的内存指针,放入所述无锁环形队列。
31、在上述方法的一个技术方案中,其特征在于,
32、所述网元为ip网关,并且所述子线程包括数据接收线程、pep线程、路由线程以及用户数据调度与发送线程;或
33、所述网元为前向二层网关,并且所述子线程包括:数据接收线程、流控线程、modcod调度线程、gse/bbframe封装线程以及数据发送线程。
34、在第二方面,本发明提供一种卫星网络数据处理系统,包括ip网关、前向二层网关、调制解调器、星上处理单元以及用户终端,在上述方法的任意一个技术方案中,所述网元作为所述ip网关、前向二层网关、调制解调器、星上处理单元以及用户终端中的一个或多个。
35、本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
36、本发明所提供的技术方案,利用流水线的方式在网元内部进行数据流的处理,降低了各数据处理模块间的耦合性,逻辑清晰易于修改,方便数据处理模块的增删,利用本发明所提供的技术方案,增强了网元的鲁棒性。
37、进一步地,本发明所提供的技术方案,将线程与cpu核进行绑定,运行各数据处理模块的线程不在各cpu核之间切换,节省性能的同时及时对数据流进行处理以提升数据处理吞吐量。
38、进一步地,本发明所提供的技术方案,将中间件置于应用层,当数据经由中间件进行传输时,避免了应用层与内核层之间的数据拷贝,数据收发过程中不产生中断,降低数据收发响应时间,提升数据收发速率。
39、进一步地,本发明所提供的技术方案,利用无锁环形队列作为各线程间数据交互的媒介,线程之间具备相同的数据交互媒介,保障数据安全的前提下提升数据访问效率,并且方便了数据处理模块的增删。
40、进一步地,本发明所提供的技术方案,利用内存池作为数据处理时所需的内存,通过内存池中的内存缓存数组,降低多线程竞争几率,进一步提升内存申请和释放效率,提高内存申请和释放效率,满足大流量网络通信的需求。
1.一种网元中的数据处理方法,其特征在于,
2.根据权利要求1所述的方法,其特征在于,
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1或2所述的方法,其特征在于,所述第一中间件和/或第二中间件设置于所述n个数据处理模块所在的应用层。
5.根据权利要求4所述的方法,其特征在于,所述第一网卡适配器经由所述第一中间件将数据流顺序发送至所述n个数据处理模块中的各个数据处理模块,包括:
6.根据权利要求4所述的方法,其特征在于,所述多个数据处理模块中的最后一个数据处理模块将数据流处理后经由所述第二中间件发送至所述第二网卡适配器,包括:
7.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
8.根据权利要求3所述的方法,其特征在于,所述方法还包括:
9.根据权利要求3所述的方法,其特征在于,
10.一种卫星网络数据处理系统,包括ip网关、前向二层网关、调制解调器、星上处理单元以及用户终端,