本发明涉及云计算,尤其涉及一种报文转发方法、装置、电子设备和计算机可读介质。
背景技术:
1、在非云计算网络领域的应用中,一般使用dpdk技术框架以及dpdk提供高性能库,足以满足业务场景下的性能需求,运行时内存数据只需要将业务子功能分散到不同的节点下处理即可,不用刻意去分析内存数据的作用和数据项之间的关联关系。
2、在云计算应用广泛的技术背景下,传统的基于内核态协议栈实现的网关服务,存在性能瓶颈,现在普遍采用基于dpdk技术在用户态实现数据面转发功能,能够充分利用cpu资源提升网关服务性能,但是网关服务的性能提升有限。
技术实现思路
1、有鉴于此,本发明实施例提供一种报文转发方法、装置、电子设备和计算机可读介质,以解决网关服务的性能提升有限的技术问题。
2、为实现上述目的,根据本发明实施例的一个方面,提供了一种报文转发方法,应用于cpu,包括:
3、接收网卡接收端发送的报文,将所述报文转发至目标线程的报文队列;
4、所述目标线程从所述报文队列中取出所述报文,根据所述报文中携带的报文参数查找所述目标线程所在的目标节点下的节点数据,从而根据所述节点数据确定对所述报文执行的目标操作以及路由的下一跳地址;
5、所述目标线程对所述报文执行所述目标操作,并记录执行所述目标操作产生的线程数据;
6、将所述报文和所述下一跳地址发送至网卡发送端。
7、可选地,根据所述报文中携带的报文参数查找所述目标线程所在的目标节点下的节点数据,包括:
8、根据所述cpu的全局数据确定所述目标线程所在的目标节点下的节点数据在内存中的存储地址;其中,所述全局数据包括上下文环境数据、各个节点下的节点数据在内存中的存储地址、各个线程的线程数据在内存中的存储地址;
9、根据所述存储地址,从所述内存中查找所述节点数据。
10、可选地,所述cpu上集成了多个核心,所述多个核心被分组到不同的节点中,每个核心与每个线程一一绑定,所述各个节点下的节点数据相同。
11、可选地,接收网卡接收端发送的报文,将所述报文转发至目标线程的报文队列之前,所述方法还包括:
12、根据所述cpu的全局数据确定所述各个节点下的节点数据在内存中的存储地址;
13、根据所述各个节点下的节点数据在内存中的存储地址,同步修改所述各个节点下的节点数据。
14、可选地,将所述报文转发至目标线程的报文队列,包括:
15、根据所述报文中携带的五元组信息并通过哈希算法映射出目标线程,从而将所述报文转发至所述目标线程的报文队列;其中,所述五元组信息包括外层源地址、外层宿地址、内层源地址、内层宿地址以及内层协议类型。
16、可选地,所述节点数据包括虚拟私有云网络配置数据、访问控制列表、路由表、网络地址转换配置数据。
17、可选地,所述目标操作包括以下至少一种:
18、去掉gre报文头、封装gre报文头、转发报文、丢弃报文、修改报文头中的源宿。
19、另外,根据本发明实施例的另一个方面,提供了一种报文转发装置,设置于cpu,包括:
20、接收模块,用于接收网卡接收端发送的报文,将所述报文转发至目标线程的报文队列;
21、线程模块,用于通过所述目标线程从所述报文队列中取出所述报文,根据所述报文中携带的报文参数查找所述目标线程所在的目标节点下的节点数据,从而根据所述节点数据确定对所述报文执行的目标操作以及路由的下一跳地址;通过所述目标线程对所述报文执行所述目标操作,并记录执行所述目标操作产生的线程数据;
22、发送模块,用于将所述报文和所述下一跳地址发送至网卡发送端。
23、可选地,所述线程模块还用于:
24、通过所述目标线程根据所述cpu的全局数据确定所述目标线程所在的目标节点下的节点数据在内存中的存储地址;其中,所述全局数据包括上下文环境数据、各个节点下的节点数据在内存中的存储地址、各个线程的线程数据在内存中的存储地址;
25、通过所述目标线程根据所述存储地址,从所述内存中查找所述节点数据。
26、可选地,所述cpu上集成了多个核心,所述多个核心被分组到不同的节点中,每个核心与每个线程一一绑定,所述各个节点下的节点数据相同。
27、可选地,所述装置还包括配置模块,用于:
28、根据所述cpu的全局数据确定所述各个节点下的节点数据在内存中的存储地址;
29、根据所述各个节点下的节点数据在内存中的存储地址,同步修改所述各个节点下的节点数据。
30、可选地,,所述接收模块还用于:
31、根据所述报文中携带的五元组信息并通过哈希算法映射出目标线程,从而将所述报文转发至所述目标线程的报文队列;其中,所述五元组信息包括外层源地址、外层宿地址、内层源地址、内层宿地址以及内层协议类型。
32、可选地,所述节点数据包括虚拟私有云网络配置数据、访问控制列表、路由表、网络地址转换配置数据。
33、可选地,所述目标操作包括以下至少一种:
34、去掉gre报文头、封装gre报文头、转发报文、丢弃报文、修改报文头中的源宿。
35、根据本发明实施例的另一个方面,还提供了一种电子设备,包括:
36、一个或多个处理器;
37、存储装置,用于存储一个或多个程序,
38、当所述一个或多个程序被所述一个或多个处理器执行时,所述一个或多个处理器实现上述任一实施例所述的方法。
39、根据本发明实施例的另一个方面,还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例所述的方法。
40、根据本发明实施例的另一个方面,还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
41、上述发明中的一个实施例具有如下优点或有益效果:因为采用目标线程从报文队列中取出报文,根据报文中携带的报文参数查找目标线程所在的目标节点下的节点数据,从而根据节点数据确定对报文执行的目标操作以及路由的下一跳地址的技术手段,所以克服了现有技术中网关服务的性能提升有限的技术问题。本发明实施例将内存数据分为全局数据、节点数据和线程数据,全局数据在全局唯一,节点数据在节点间做冗余,线程数据在线程间做分组,线程只访问其绑定的cpu核心所在的节点的节点数据,避免跨节点访问内存,有效提升了网关性能。
42、上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
1.一种报文转发方法,其特征在于,应用于cpu,包括:
2.根据权利要求1所述的方法,其特征在于,根据所述报文中携带的报文参数查找所述目标线程所在的目标节点下的节点数据,包括:
3.根据权利要求2所述的方法,其特征在于,所述cpu上集成了多个核心,所述多个核心被分组到不同的节点中,每个核心与每个线程一一绑定,所述各个节点下的节点数据相同。
4.根据权利要求3所述的方法,其特征在于,接收网卡接收端发送的报文,将所述报文转发至目标线程的报文队列之前,还包括:
5.根据权利要求1所述的方法,其特征在于,将所述报文转发至目标线程的报文队列,包括:
6.根据权利要求1所述的方法,其特征在于,所述节点数据包括虚拟私有云网络配置数据、访问控制列表、路由表、网络地址转换配置数据。
7.根据权利要求6所述的方法,其特征在于,所述目标操作包括以下至少一种:
8.一种报文转发装置,其特征在于,设置于cpu,包括:
9.根据权利要求8所述的装置,其特征在于,所述线程模块还用于:
10.根据权利要求9所述的装置,其特征在于,所述cpu上集成了多个核心,所述多个核心被分组到不同的节点中,每个核心与每个线程一一绑定,所述各个节点下的节点数据相同。
11.根据权利要求10所述的装置,其特征在于,还包括配置模块,用于:
12.根据权利要求8所述的装置,其特征在于,所述接收模块还用于:
13.根据权利要求8所述的装置,其特征在于,所述节点数据包括虚拟私有云网络配置数据、访问控制列表、路由表、网络地址转换配置数据。
14.根据权利要求13所述的装置,其特征在于,所述目标操作包括以下至少一种:
15.一种电子设备,其特征在于,包括:
16.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
17.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法。