网络应用数据转发方法及装置与流程
未命名
10-09
阅读:140
评论:0
1.本技术涉及数据处理技术领域,尤其涉及网络应用数据转发方法及装置。
背景技术:
2.网络应用是一种用于进行网络数据处理且较为传统的应用程序,负责网络报文流量收发和数据分析并处理的网络应用程序系统,包括不限于当前的开源网络处理应用(nginx、envoy、suricata等)和各企业等自行研发的网络流量模型应用,以对数据流量进行收发、分析、代理及管控等业务处理。而随着软件技术的发展,尤其是云计算、大数据等业务的出现,使得大量的网络数据处在实时传输的过程中。对于主机上的网络应用来说,要对这些海量的网络数据进行报文处理,通常需要基于内核协议栈来实现,而内核协议栈在大流量场景下需要消耗如60%等极高比例的cpu资源去处理报文触发的中断、报文从内核态到用户态的拷贝等,这对于传统的网络应用来说是一个很大的消耗,需要其满足极高的处理性能要求。因此,如果将大流量场景下消耗的cpu资源节省下来用于应用处理报文来提高网络应用的数据处理效率,是当前研究的重点之一。
3.目前,可以采用修改网络应用的代码适配到如dpdk等协议栈的网络应用数据转发方式来提升网络应用进行数据处理的效率及可靠性,比如nginx、envoy、suricata等网络应用都通过修改代码来适配协议栈。然而,这种方式不但需要修改大量的代码才能做到硬兼容,耗费大量的时间及人力成本,且不便于网络应用的后期维护。因此,当前亟需设计一种能够在保证网络应用进行数据处理的效率及可靠性上,还能够有效提高维护便捷性的网络应用数据转发方式。
技术实现要素:
4.鉴于此,本技术实施例提供了网络应用数据转发方法及装置,以消除或改善现有技术中存在的一个或更多个缺陷。
5.本技术的一个方面提供了一种网络应用数据转发方法,包括:
6.自网络应用外拦截该网络应用发出的数据请求,其中,该数据请求中包括其在所述网络应用中所属的平面类型;
7.将所述数据请求转发至该数据请求所属的平面类型对应的目标协议栈;
8.若接收到所述目标协议栈返回的针对所述数据请求的回复数据,则根据所述数据请求所属的平面类型将该回复数据转发至所述网络应用中对应的平面。
9.所述将所述数据请求转发至该数据请求所属的平面类型对应的目标协议栈,包括:
10.基于预设的各个平面类型和各个协议栈之间的对应关系,确定所述数据请求所属的平面类型对应的协议栈以作为当前的目标协议栈,其中,各个所述协议栈包括:内核协议栈和所述dpdk网络协议栈。
11.在本技术的一些实施例中,在所述将所述数据请求转发至该数据请求所属的平面
类型对应的目标协议栈之前,还包括:
12.接收并存储用户自定义的各个所述平面类型和各个所述协议栈之间的对应关系,或者,根据获取到的所述网络应用中的各个平面类型自动生成各个所述平面类型和各个所述协议栈之间的对应关系。
13.在本技术的一些实施例中,若所述网络应用中的各个平面类型包括管理面、控制面和数据面,则各个所述平面类型和各个所述协议栈之间的对应关系包括:所述管理面和控制面分别与所述内核协议栈之间的调用关系相对应,以及,所述数据面与dpdk网络协议栈之间的调用关系相对应。
14.在本技术的一些实施例中,所述若接收到所述目标协议栈返回的针对所述数据请求的回复数据,则根据所述数据请求所属的平面类型将该回复数据转发至所述网络应用中对应的平面,包括:
15.若接收到所述dpdk网络协议栈返回的针对所述数据请求的回复数据,则将该恢复数据对应的目标地址加入至本地的无锁通信队列中以等待上送;
16.对所述无锁通信队列中的所述目标地址进行出队操作,根据所述数据请求所属的平面类型,将所述目标地址对应的针对所述数据请求的回复数据上送至所述网络应用中对应的平面。
17.在本技术的一些实施例中,在所述将该恢复数据对应的目标地址加入至本地的无锁通信队列中以等待上送之前,还包括:
18.接收内存池规格配置参数;
19.基于所述内存池规格配置参数申请内存空间,并基于内存池对所述内容空间进行预分配处理;
20.根据预分配处理后的内存空间封装通信队列,并基于原子操作对该通信队列进行无锁化处理,以得到无锁通信队列。
21.在本技术的一些实施例中,所述自网络应用外拦截该网络应用发出的数据请求,包括:
22.基于第一数据接口自网络应用外拦截该网络应用发出的数据请求,其中,所述第一数据接口为预先封装在本地且与所述网络应用的发送数据接口相同的接口;
23.相对应的,所述将所述目标地址对应的针对所述数据请求的回复数据上送至所述网络应用中对应的平面,包括:
24.基于第二数据接口将所述目标地址对应的针对所述数据请求的回复数据上送至所述网络应用中对应的平面,其中,所述第二数据接口为预先封装在本地且与所述网络应用的接收数据接口相同的接口。
25.本技术的另一个方面提供了一种网络应用数据转发装置,包括:
26.请求拦截模块,用于自网络应用外拦截该网络应用发出的数据请求,其中,该数据请求中包括其在所述网络应用中所属的平面类型;
27.数据转发模块,用于将所述数据请求转发至该数据请求所属的平面类型对应的目标协议栈;
28.数据上送模块,用于若接收到所述目标协议栈返回的针对所述数据请求的回复数据,则根据所述数据请求所属的平面类型将该回复数据转发至所述网络应用中对应的平
面。
29.本技术的第三个方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的网络应用数据转发方法。
30.本技术的第四个方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的网络应用数据转发方法。
31.本技术提供的网络应用数据转发方法,自网络应用外拦截该网络应用发出的数据请求,其中,该数据请求中包括其在所述网络应用中所属的平面类型;将所述数据请求转发至该数据请求所属的平面类型对应的目标协议栈;若接收到所述目标协议栈返回的针对所述数据请求的回复数据,则根据所述数据请求所属的平面类型将该回复数据转发至所述网络应用中对应的平面,能够在不需要对网络应用进行单独开发来适配协议栈的基础上,有效提高网络应用进行数据处理的效率及可靠性,能够有效节省时间及人力成本,并提高网络应用的后期维护的便捷性。
32.本技术的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本技术的实践而获知。本技术的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
33.本领域技术人员将会理解的是,能够用本技术实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本技术能够实现的上述和其他目的。
附图说明
34.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,并不构成对本技术的限定。附图中的部件不是成比例绘制的,而只是为了示出本技术的原理。为了便于示出和描述本技术的一些部分,附图中对应部分可能被放大,即,相对于依据本技术实际制造的示例性装置中的其它部件可能变得更大。在附图中:
35.图1为本技术一实施例中的网络应用数据转发方法的总流程示意图。
36.图2为本技术一实施例中的网络应用数据转发方法的一种具体流程示意图。
37.图3为本技术一举例中的envoy架构的示意图。
38.图4为现有的网络应用envoy适配dpdk协议栈的举例架构示意图。
39.图5为本技术一实施例中的各个所述平面类型和各个所述协议栈之间的对应关系的优选示意图。
40.图6为本技术一实施例中的网络应用数据转发方法的另一种具体流程示意图。
41.图7为本技术一实施例中的网络应用数据转发装置的结构示意图。
42.图8为本技术一应用实例的dcl库的结构示意图。
43.图9为本技术一应用实例的dcl库与网络应用和协议栈之间的结构关系示意图。
具体实施方式
44.为使本技术的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本技术做进一步详细说明。在此,本技术的示意性实施方式及其说明用于解释本技术,但并
不作为对本技术的限定。
45.在此,还需要说明的是,为了避免因不必要的细节而模糊了本技术,在附图中仅仅示出了与根据本技术的方案密切相关的结构和/或处理步骤,而省略了与本技术关系不大的其他细节。
46.应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
47.在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
48.在下文中,将参考附图描述本技术的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
49.为了解决现有的网络应用数据转发方式因采用修改网络应用的代码适配到如dpdk等协议栈虽然能够保证升网络应用进行数据处理的效率及可靠性,但存在需要修改大量的代码才能做到硬兼容,耗费大量的时间及人力成本,且不便于网络应用的后期维护等问题,本技术实施例分别提供一种网络应用数据转发方法、用于执行该网络应用数据转发方法的网络应用数据转发装置、实体设备和计算机可读存储介质,不需要更改任何代码就可以实现协议栈的调度,可以适用于所有的网络应用,能够避免不同网络应用都需要单独适配开发一套适配协议栈的问题,且通过调用拦截处理操作的设计,能够有效避免大量修改网络应用的代码来适配协议栈,进而能够解决后期升级维护困难的问题,节省大量的人力即时间成本。
50.具体通过下述实施例进行详细说明。
51.基于此,本技术实施例提供一种可由网络应用数据转发装置实现的网络应用数据转发方法,参见图1,所述网络应用数据转发方法具体包含有如下内容:
52.步骤100:自网络应用外拦截该网络应用发出的数据请求,其中,该数据请求中包括其在所述网络应用中所属的平面类型。
53.在步骤100中,网络应用数据转发装置可以采用接口、过滤器等拦截器方式进行针对网络应用的数据请求的拦截,可以理解的是,本技术的一个或多个实施例中提及的数据请求,均是指网络应用的各个平面中的任一个发送的数据调用、查询或存储请求,网络应用数据转发装置针对网络应用中的每一个平面都进行实时监控和拦截。
54.其中,数据请求中包括的其在所述网络应用中所属的平面类型是指在网络应用中发出该数据请求的平面对应的类型。
55.由于本技术提供的网络应用数据转发方法是一种通用的、独立于网络应用之外且无需对网络应用进行代码适配修改的方法,因此适用于各类网络应用,如nginx、envoy、suricata等等。
56.基于此,本技术提供的网络应用数据转发方法同样适用于不同平面类型划分方式的网络应用,即,不论网络应用划分为二个、三个、四个甚至超过四个类型的平面,均适用于本技术提供的网络应用数据转发方法。
57.步骤200:将所述数据请求转发至该数据请求所属的平面类型对应的目标协议栈。
58.在本技术的一个或多个实施例中,协议栈具体是指网络中各层协议的总和,用于反映一个网络中文件传输的过程。
59.在步骤200中,所述数据请求所属的平面类型对应的目标协议栈可以为用户预先自定义且可变更的协议栈,也可以为固定协议栈。
60.另外需要说明的是,网络应用数据转发装置在网络应用外部拦截到其数据请求,再将数据请求在该网络应用外部转发到协议栈,也就是说,协议栈显然不需要与网络应用集成设置,这能够更进一步提高网络应用数据转发的便捷性和适用广泛性。
61.在网络应用数据转发装置执行步骤200之后,根据其当前转发的数据请求的类型可能出现两种情况:
62.情况一为:若数据请求为数据存储或应答请求等,则并不需要自协议栈获取回复数据,因此在这种情况下,网络应用数据转发装置不会收到针对该数据请求的回复数据。
63.情况二则相反:若数据为数据查询或调用请求等,则需要协议栈返回回复数据,那么网络应用数据转发装置可能接收到该回复数据,进而执行下述步骤300。
64.步骤300:若接收到所述目标协议栈返回的针对所述数据请求的回复数据,则根据所述数据请求所属的平面类型将该回复数据转发至所述网络应用中对应的平面。
65.在步骤300中,所述网络应用数据转发装置同样在所述网络应用的外部将所述回复数据转发至所述网络应用中对应的平面,具体转发可采用接口等方式。
66.从上述描述可知,本技术实施例提供的网络应用数据转发方法,可以适用于各种类型的网络应用,能够避免不同网络数据处理应用都需要单独适配开发一套适配dpdk的工作,通过调用拦截处理操作,能够避免大量修改适配网络数据处理应用的代码来适配dpdk,能够解决后期升级维护困难的问题,能够节省大量的人力成本,有效提高网络应用进行数据处理的效率及可靠性。
67.为了进一步提高网络应用数据转发的灵活性和效率,在本技术提供的网络应用数据转发方法的一个实施例中,参见图2,所述网络应用数据转发方法中的步骤200具体包含有如下内容:
68.步骤210:基于预设的各个平面类型和各个协议栈之间的对应关系,确定所述数据请求所属的平面类型对应的协议栈以作为当前的目标协议栈,其中,各个所述协议栈包括:内核协议栈和所述dpdk网络协议栈。
69.在步骤210之前可以预先设置各个平面类型和各个协议栈之间的对应关系以提高选取目标协议栈的灵活性。
70.在步骤210中,网络应用数据转发装置通过预先设置多个协议栈并进行择一选取,使得不同类型的平面发出的数据请求可以不从同一个协议栈中进行处理,不但能够降低该协议栈进行数据处理的资源占用率,还能够提高数据转发及调用的效率。能够网络应用适配协议栈,多个平面同时走同一个协议栈现象,避免后期系统出现流量大导致网络数据处理应用配置接收处理超时等不稳定的问题。
71.可以理解的是,所述dpdk(data plane development kit)网络协议栈是一个开源的软件开发套件,用于加速数据包处理和packet forwarding应用程序的开发。它提供了一组高性能的用户态库和驱动,可以使网络应用程序在intel x86架构的通用服务器上以非常高的速度运行。
72.步骤210中,各个所述协议栈至少可以包含有内核协议栈(即:kernel栈)和所述dpdk网络协议栈,还可以包含有其他类型的协议栈,具体可以根据实际应用情形进行设置。
73.为了进一步提高网络应用数据转发的灵活性和效率,在本技术提供的网络应用数据转发方法的一个实施例中,参见图2,所述网络应用数据转发方法中的步骤200之前具体包含有如下内容:
74.步骤010:接收并存储用户自定义的各个所述平面类型和各个所述协议栈之间的对应关系,或者,根据获取到的所述网络应用中的各个平面类型自动生成各个所述平面类型和各个所述协议栈之间的对应关系。
75.具体来说,获取各个所述平面类型和各个所述协议栈之间的对应关系的方式有两种:
76.其一为:网络应用数据转发装置直接接收并存储用户自定义的各个所述平面类型和各个所述协议栈之间的对应关系,该种方式的优点为能够实现用户自定义,用户可基于自身场景的需要来自定义网络数据处理各个平面的协议栈的技术,可以选择dpdk协议栈或者kernel栈。
77.其二为:网络应用数据转发装置接受待转发处理的网络应用中的各个平面类型,然后根据自动生成这些平面类型和各个所述协议栈之间的对应关系,该种方式的优点为:即使用户不够了解不同协议栈的特点和优势,仅需给出网络应用中的各个平面类型,也能够实现针对平面类型和各个所述协议栈之间的对应关系的配置。
78.在此基础上,网络应用数据转发装置可以基于预设的优选配置逻辑实现配置,以提高非业务请求的响应效率,具体在下一个实施例中进行详细说明。
79.为了进一步提高网络应用数据转发的灵活性和效率,在本技术提供的网络应用数据转发方法的一个实施例中,若所述网络应用中的各个平面类型包括管理面、控制面和数据面,则各个所述平面类型和各个所述协议栈之间的对应关系包括:所述管理面和控制面分别与所述内核协议栈之间的调用关系相对应,以及,所述数据面与dpdk网络协议栈之间的调用关系相对应。其中,举例来说,管理面下发的数据请求可以为信息查看请求,可以查看存储在应用程序的内存里的当前下发流量的规格(当前内存信息),用于通过内核栈去内存查找统计信息。控制面下发的数据请求可以为流程配置控制请求,用于通过内核栈进行配置信息的控制管理。数据面下发的数据请求即为业务处理请求,用于通过dpdk协议栈去调取业务处理请求对应的回复数据。
80.以envoy作为网络应用的一种举例进行说明,其中,envoy是一种开源的高性能代理,它通常用作服务网格的数据面,负责实际的请求转发和处理。envoy架构上分为数据面、管理面、控制面,其中控制面用于对流量路由和转发相关的策略和配置进行管理;管理面通过标准api获取最新的流量配置信息;数据面的流量转发是基于控制面下发的配置规则进行。具体来说,控制面用于对流量路由和转发相关的策略和配置进行管理;管理面通过标准api获取最新的流量配置信息;数据面的流量转发是基于控制面下发的配置规则进行,envoy架构参见图3。
81.若网络应用适配dpdk后导致数据面、控制面、管理面所有业务都走dpdk协议栈,参见图4,则会导致dpdk协议栈在业务量较大的场景下导致网络数据处理应用接收管理面和控制面配置缓慢甚至超时中断的问题,这样就违背了数据面和控制面、管理面互相独立的理念,这样只达到了提升网络数据处理应用系统的性能而降低了系统的可靠性。
82.基于此,在本技术的实施例中,当网络应用的框架分为三平面时则所述网络应用
数据转发装置将各个所述平面类型和各个所述协议栈之间的对应关系配置为:所述管理面和控制面分别与所述内核协议栈之间的调用关系相对应,以及,所述数据面与dpdk网络协议栈之间的调用关系相对应,如图5所示,能够避免网络数据处理应用适配dpdk后控制面和管理面同时走dpdk协议栈的现象,避免后期系统出现流量大导致网络数据处理应用配置接收处理超时等不稳定的问题。
83.为了通过无锁化的方式避免数据传输中由于队列加锁出现的阻塞,提高队列的性能,进而提升应用业务处理的整体性能,在本技术提供的网络应用数据转发方法的一个实施例中,参见图2,所述网络应用数据转发方法中的步骤300具体包含有如下内容:
84.步骤310:若接收到所述dpdk网络协议栈返回的针对所述数据请求的回复数据,则将该恢复数据对应的目标地址加入至本地的无锁通信队列中以等待上送。
85.步骤320:对所述无锁通信队列中的所述目标地址进行出队操作,根据所述数据请求所属的平面类型,将所述目标地址对应的针对所述数据请求的回复数据上送至所述网络应用中对应的平面。
86.为了避免在数据处理中动态申请内存带来的消耗并提高无锁队列的应用可靠性,在本技术提供的网络应用数据转发方法的一个实施例中,参见图2,所述网络应用数据转发方法中的步骤300之前还具体包含有如下内容:
87.步骤020:接收内存池规格配置参数。
88.步骤030:基于所述内存池规格配置参数申请内存空间,并基于内存池对所述内容空间进行预分配处理。
89.步骤040:根据预分配处理后的内存空间封装通信队列,并基于原子操作对该通信队列进行无锁化处理,以得到无锁通信队列。
90.为了实现无感知拦截及转发,在本技术提供的网络应用数据转发方法的一个实施例中,参见图6,所述网络应用数据转发方法中的步骤100还具体包含有如下内容:
91.步骤110:基于第一数据接口自网络应用外拦截该网络应用发出的数据请求,其中,所述第一数据接口为预先封装在本地且与所述网络应用的发送数据接口相同的接口。
92.相对应的,参见图6,所述网络应用数据转发方法中的步骤320还具体包含有如下内容:
93.步骤321:对所述无锁通信队列中的所述目标地址进行出队操作,基于第二数据接口将所述目标地址对应的针对所述数据请求的回复数据上送至所述网络应用中对应的平面,其中,所述第二数据接口为预先封装在本地且与所述网络应用的接收数据接口相同的接口。
94.具体来说,网络应用数据转发装置通过封装一套和网络应用使用的c库(libc)套接字(socket)完全一致的处理接口,通过调用接口实现网络应用无感知的从网络应用数据转发装置收发数据,也就是网络应用需要收数据并处理数据时调用的是网络应用数据转发装置的收数据接口,网络应用发送数据时调用的是网络应用数据转发装置的数据发送接口,这样就能做到网络应用感知不到中间件,即网络应用数据转发装置和dpdk协议栈等的存在,这样就不需要任何适配修改网络数据处理应用的代码,进而能够提高网络数据处理应用系统的可维护性,适用于技术新颖、更新频繁需要维护升级的业务场景,方便后期的升级和维护,节省升级、维护成本并提高数据处理效率。
95.从软件层面来说,本技术还提供一种用于执行所述网络应用数据转发方法中全部或部分内的网络应用数据转发装置,参见图7,所述网络应用数据转发装置具体包含有如下内容:
96.请求拦截模块10,用于自网络应用外拦截该网络应用发出的数据请求,其中,该数据请求中包括其在所述网络应用中所属的平面类型;
97.数据转发模块20,用于将所述数据请求转发至该数据请求所属的平面类型对应的目标协议栈;
98.数据上送模块30,用于若接收到所述目标协议栈返回的针对所述数据请求的回复数据,则根据所述数据请求所属的平面类型将该回复数据转发至所述网络应用中对应的平面。
99.本技术提供的网络应用数据转发装置的实施例具体可以用于执行上述实施例中的网络应用数据转发方法的实施例的处理流程,其功能在此不再赘述,可以参照上述网络应用数据转发方法实施例的详细描述。
100.所述网络应用数据转发装置进行网络应用数据转发的部分可以在服务器中执行,也可以在客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本技术对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器,用于网络应用数据转发的具体处理。
101.上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。
102.上述服务器与所述客户端设备端之间可以使用任何合适的网络协议进行通信,包括在本技术提交日尚未开发出的网络协议。所述网络协议例如可以包括tcp/ip协议、udp/ip协议、http协议、https协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的rpc协议(remote procedure call protocol,远程过程调用协议)、rest协议(representational state transfer,表述性状态转移协议)等。
103.从上述描述可知,本技术实施例提供的网络应用数据转发装置,能够在不需要对网络应用进行单独开发来适配协议栈的基础上,有效提高网络应用进行数据处理的效率及可靠性,能够有效节省时间及人力成本,并提高网络应用的后期维护的便捷性。
104.在此基础上,为了进一步说明本技术上述实施例提供的网络应用数据转发方法,针对上述网络应用存在性能低、可维护性差的缺陷,本技术的一个应用实例中还提供一种采用dcl(dpdk connection lib)库执行网络应用数据转发的配置和转发的过程,能够用于解决网络应用由于提升应用性能而引入的降低了应用系统可维护性的问题、网络应用由于提升应用性能而引入的降低了应用系统可靠性的问题以及网络应用兼容dpdk都需要单独开发适配的问题。
105.在本应用实例中,所述dcl库具体可以为前述网络应用数据转发装置的一种具体实现举例,dcl库至少能够网络应用数据转发装置中各个功能模块的功能,而为了进一步细化网络应用数据转发装置中各个功能模块的功能,参见图8和图9,所述dcl库具体包含有配
置解析模块1、内存池模块2、通信队列模块3、调用拦截模块4、双栈处理解析模块5和数据报文收发模块6。各个模块的具体功能说明如下:
106.(1)配置解析模块1:负责用户的配置解析,解析用户配置网络应用的控制面、数据面、配置面选择的栈配置参数项,还有解析内存池规格配置参数项。用户可以基于场景需要通过配置参数的形式自定义选择数据处理栈(kernel、dpdk)。
107.(2)内存池模块2:按照用户配置的参数进行提前初始化申请一定规格的内存空间,并维护内存空间的出队、入队。通过内存池提前进行内存预分配,避免在数据处理中动态申请内存带来的消耗,降低业务处理的延时,提高整体的性能。
108.(3)通信队列模块3:实现无锁队列,用于网络应用和dpdk之间的报文数据传输。通过无锁化的方式避免数据传输中由于队列加锁出现的阻塞,提高队列的性能,进而提升业务的整体性能。
109.(4)调用拦截模块4:封装一套和网络应用使用的libc socket完全一致的处理接口,通过调用拦截网络应用数据收发模块的调用接口。实现网络应用无感知的从dcl收发数据,也就是网络应用需要收数据并处理数据时调用的是dcl的收数据接口,网络应用发送数据时调用的是dcl的数据发送接口,这样就能做到网络应用感知不到中间件dcl和dpdk的存在,这样就不需要任何适配修改网络应用的代码,提高网络应用系统的可维护性,适用于技术新颖、更新频繁需要维护升级的业务场景,能够方便后期的升级和维护,节省升级、维护成本并提高数据处理效率。
110.(5)双栈处理解析模块5:结合用户自定义的配置参数来拦截对应的数据处理栈。比如用户可配置数据面走dpdk协议栈,而管理面和控制面走内核栈:保证数据面减少报文拷贝、中断处理等操作的性能消耗,提高网络应用的cpu利用率,又能避免dpdk在大流量场景下影响网络应用管理面和控制面的流量数据,达到提高网络应用系统性能的同时也提高系统的可靠性。
111.(6)数据报文收发模块6:负责从dpdk、网络应用收发处理数据,比如把从dpdk收到的报文数据地址拷贝到内存池模块提前分配好的内存中,再通过通信队列模块无锁化机制把数据传输给网络应用。
112.在本应用实例中,采用所述dcl库执行网络应用数据转发的配置和转发的过程具体流程如下:
113.s1:初始化阶段
114.(1)dcl库首先调用配置解析模块1进行用户配置解析,解析参数主要包含两部分,一部分是双栈相关的参数,用于指定哪些socket走dpdk栈,哪些socket走内核栈;另一部分参数是内存相关参数。
115.(2)dcl库调用内存池模块2进行内存的初始化,按照上述流程(1)中解析到的内存参数去初始化申请指定规格的内存,该内存服务于通信队列模块3。
116.(3)dcl库再调用通信队列模块3进行队列的初始化,该模块中会基于内存池中提前申请好的内存封装入队和出队操作,并且基于原子操作实现无锁化。
117.s2:双栈配置处理阶段
118.(1)dcl在进行完初始化阶段后来到双栈配置阶段,该阶段dcl会首先调用一调用拦截模块4,调用拦截模块4对外会实现一套统一的libc socket处理接口供通用网络应用
使用,并且该模块提供动态链接库的机制做到通用网络应用无感知底层的接口变化,也就实现了在不改通用网络应用任何代码的情况实现调用拦截。
119.(2)调用拦截预先配置动态链接库的函数:调用拦截模块4对外提供的统一libc socket处理接口内部会调用双栈处理解析模块5提供的接口,双栈处理解析模块5内部会基于前期初始化节点中解析好的双栈参数,进行对应的处理操作,如果指定的该socket是走dpdk栈,则该模块就调用dpdk的栈接口;相反,如果指定的是内核栈,该模块内部会去调用内核栈接口。这样就做到了通用网络数据走数据面接口,控制面和管理面走内核栈接口的效果。
120.s4:报文收发处理阶段
121.如果指定的socket走dpdk栈,则dcl库会调用数据报文收发模块6,该模块会把从dpdk接口中收到的数据mbuf地址给送到通信队列模块3提供的入队操作中,而队列的另外一端是双栈处理解析模块5来执行出队操作,最终上送到具体的通用网络应用。
122.基于此,针对现有的网络应用数据转发方式存在的问题:通过修改网络应用代码来适配dpdk后导致业务耦合严重,需要把网络应用的所有功能代码移植到dpdk上,特点是网络应用、dpdk修改的代码侵入性强,这样就不方便后期的网络应用的维护升级,尤其是技术比较新颖、社区版本更新迭代频繁的场景,这样只达到了提升网络应用的性能而降低了网络应用后期的可维护性,这种方案只适合技术栈完善、不需要后期迭代更新的技术领域,不适合技术迭代频繁的领域,比如envoy应用于服务网格场景,而服务网格技术属于比较新颖、更新迭代频繁、快速发展中的技术,适配dpdk后无论进行升级还是技术改动都需要浪费大量的人力做开发适配、测试。本技术应用实例提供一种dcl库以及采用该dcl库实现的网络应用数据转发的配置和转发的方法,涉及了一种基于网络应用提升应用业务性能的同时提升系统可靠性和可维护性的通用手段,可以适用于所有的网络应用,避免不同网络应用都需要单独适配开发一套适配dpdk的工作;通过调用拦截处理操作,避免大量修改适配网络应用的代码来适配dpdk,解决后期升级维护困难的问题,节省大量的人力成本;同时通过自定义数据处理栈选择处理操作,避免了网络应用适配dpdk后控制面和管理面同时走dpdk栈的现象,避免后期系统出现流量大导致网络应用配置接收处理超时等不稳定的问题。
123.也就是说,本技术应用实例至少具备如下有益效果:
124.(1)针对网络应用的dpdk通用适配框架技术,所有的网络应用使用dcl库后均不需要更改任何代码就可以实现dpdk的调度。
125.(2)针对网络应用的无侵入调用拦截技术,上层网络应用无需感知下面的实现,不需要修改任何代码,方便后期的维护升级。
126.(3)用户可基于自身场景的需要来自定义网络应用控制面、数据面、管理面数据流量处理栈的技术,可以选择dpdk栈或者kernel栈。
127.(4)能够减少内存动态申请的内存池技术点,可以减少数据传输过程中的动态申请内存带来的性能消耗,进而提升整体性能。
128.(5)内存映射技术点,可以减少数据报文的拷贝导致的性能消耗,能够节省cpu、内存资源,进而提升服务网格系统业务性能。
129.总之,本技术应用实例保证了网络应用提高应用服务性能的同时也提高应用服务的可维护性、可靠性。
130.本技术实施例还提供了一种电子设备,该电子设备可以包括处理器、存储器、接收器及发送器,处理器用于执行上述实施例提及的网络应用数据转发方法,其中处理器和存储器可以通过总线或者其他方式连接,以通过总线连接为例。该接收器可通过有线或无线方式与处理器、存储器连接。
131.处理器可以为中央处理器(central processing unit,cpu)。处理器还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
132.存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本技术实施例中的网络应用数据转发方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的网络应用数据转发方法。
133.存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
134.所述一个或者多个模块存储在所述存储器中,当被所述处理器执行时,执行实施例中的网络应用数据转发方法。
135.在本技术的一些实施例中,用户设备可以包括处理器、存储器和收发单元,该收发单元可包括接收器和发送器,处理器、存储器、接收器和发送器可通过总线系统连接,存储器用于存储计算机指令,处理器用于执行存储器中存储的计算机指令,以控制收发单元收发信号。
136.作为一种实现方式,本技术中接收器和发送器的功能可以考虑通过收发电路或者收发的专用芯片来实现,处理器可以考虑通过专用处理芯片、处理电路或通用芯片实现。
137.作为另一种实现方式,可以考虑使用通用计算机的方式来实现本技术实施例提供的服务器。即将实现处理器,接收器和发送器功能的程序代码存储在存储器中,通用处理器通过执行存储器中的代码来实现处理器,接收器和发送器的功能。
138.本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述网络应用数据转发方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、软盘、硬盘、可移动存储盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质。
139.本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的
范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本技术的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
140.需要明确的是,本技术并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本技术的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本技术的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
141.本技术中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征
142.以上所述仅为本技术的优选实施例,并不用于限制本技术,对于本领域的技术人员来说,本技术实施例可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
技术特征:
1.一种网络应用数据转发方法,其特征在于,包括:自网络应用外拦截该网络应用发出的数据请求,其中,该数据请求中包括其在所述网络应用中所属的平面类型;将所述数据请求转发至该数据请求所属的平面类型对应的目标协议栈;若接收到所述目标协议栈返回的针对所述数据请求的回复数据,则根据所述数据请求所属的平面类型将该回复数据转发至所述网络应用中对应的平面。2.根据权利要求1所述的网络应用数据转发方法,其特征在于,所述将所述数据请求转发至该数据请求所属的平面类型对应的目标协议栈,包括:基于预设的各个平面类型和各个协议栈之间的对应关系,确定所述数据请求所属的平面类型对应的协议栈以作为当前的目标协议栈,其中,各个所述协议栈包括:内核协议栈和所述dpdk网络协议栈。3.根据权利要求2所述的网络应用数据转发方法,其特征在于,在所述将所述数据请求转发至该数据请求所属的平面类型对应的目标协议栈之前,还包括:接收并存储用户自定义的各个所述平面类型和各个所述协议栈之间的对应关系,或者,根据获取到的所述网络应用中的各个平面类型自动生成各个所述平面类型和各个所述协议栈之间的对应关系。4.根据权利要求2或3所述的网络应用数据转发方法,其特征在于,若所述网络应用中的各个平面类型包括管理面、控制面和数据面,则各个所述平面类型和各个所述协议栈之间的对应关系包括:所述管理面和控制面分别与所述内核协议栈之间的调用关系相对应,以及,所述数据面与dpdk网络协议栈之间的调用关系相对应。5.根据权利要求2所述的网络应用数据转发方法,其特征在于,所述若接收到所述目标协议栈返回的针对所述数据请求的回复数据,则根据所述数据请求所属的平面类型将该回复数据转发至所述网络应用中对应的平面,包括:若接收到所述dpdk网络协议栈返回的针对所述数据请求的回复数据,则将该恢复数据对应的目标地址加入至本地的无锁通信队列中以等待上送;对所述无锁通信队列中的所述目标地址进行出队操作,根据所述数据请求所属的平面类型,将所述目标地址对应的针对所述数据请求的回复数据上送至所述网络应用中对应的平面。6.根据权利要求5所述的网络应用数据转发方法,其特征在于,在所述将该恢复数据对应的目标地址加入至本地的无锁通信队列中以等待上送之前,还包括:接收内存池规格配置参数;基于所述内存池规格配置参数申请内存空间,并基于内存池对所述内容空间进行预分配处理;根据预分配处理后的内存空间封装通信队列,并基于原子操作对该通信队列进行无锁化处理,以得到无锁通信队列。7.根据权利要求5所述的网络应用数据转发方法,其特征在于,所述自网络应用外拦截该网络应用发出的数据请求,包括:基于第一数据接口自网络应用外拦截该网络应用发出的数据请求,其中,所述第一数据接口为预先封装在本地且与所述网络应用的发送数据接口相同的接口;
相对应的,所述将所述目标地址对应的针对所述数据请求的回复数据上送至所述网络应用中对应的平面,包括:基于第二数据接口将所述目标地址对应的针对所述数据请求的回复数据上送至所述网络应用中对应的平面,其中,所述第二数据接口为预先封装在本地且与所述网络应用的接收数据接口相同的接口。8.一种网络应用数据转发装置,其特征在于,包括:请求拦截模块,用于自网络应用外拦截该网络应用发出的数据请求,其中,该数据请求中包括其在所述网络应用中所属的平面类型;数据转发模块,用于将所述数据请求转发至该数据请求所属的平面类型对应的目标协议栈;数据上送模块,用于若接收到所述目标协议栈返回的针对所述数据请求的回复数据,则根据所述数据请求所属的平面类型将该回复数据转发至所述网络应用中对应的平面。9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的网络应用数据转发方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述的网络应用数据转发方法。
技术总结
本申请提供一种网络应用数据转发方法及装置,方法包括:自网络应用外拦截该网络应用发出的数据请求,其中,该数据请求中包括其在网络应用中所属的平面类型;将数据请求转发至该数据请求所属的平面类型对应的目标协议栈;若接收到目标协议栈返回的针对数据请求的回复数据,则根据数据请求所属的平面类型将该回复数据转发至网络应用中对应的平面。本申请能够在不需要对网络应用进行单独开发来适配协议栈的基础上,有效提高网络应用进行数据处理的效率及可靠性,能够有效节省时间及人力成本,并提高网络应用的后期维护的便捷性。并提高网络应用的后期维护的便捷性。并提高网络应用的后期维护的便捷性。
技术研发人员:代彦龙 李玮 荆慧 黄明亮
受保护的技术使用者:中科驭数(北京)科技有限公司
技术研发日:2023.07.11
技术公布日:2023/10/6
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
