本技术涉及网络通信,特别是涉及一种报文处理方法、装置、物理机及存储介质。
背景技术:
1、目前业务平台一般基于lvs(linux virtual server,linux虚拟服务器)等虚拟服务器集群系统对外提供业务。其中,上述虚拟服务器集群系统中包括负载均衡器和多台物理机,当客户端向虚拟服务器集群系统请求业务时,负载均衡器接收客户端发送的针对上述业务请求的请求报文,并基于负载均衡算法分配响应该请求报文的物理机,物理机响应负载均衡器为其分配的请求报文。上述虚拟服务器集群系统存在多种工作模式,其中,nat(network address translation,网络地址转换)模式是一种应用比较广泛的工作模式。
2、在nat模式下,负载均衡器接收到客户端针对业务请求的请求报文后,向一台物理机转发上述请求报文,当物理机针对请求报文生成响应报文后向负载均衡器发送该响应报文,然后由负载均衡器将响应报文转发给客户端,从而为客户端提供其所请求的业务。
3、由上述过程可以看出,负载均衡器既需要向物理机转发请求报文,又需要向客户端转发响应报文,这样,在请求业务的请求报文较多的情况下,易导致负载均衡器需要转发的报文较多,进而使得负载均衡器成为上述虚拟服务器集群系统的性能瓶颈,报文处理效率低。
技术实现思路
1、本技术实施例的目的在于提供一种报文处理方法、装置、物理机及存储介质,以提高报文处理效率。具体技术方案如下:
2、第一方面,本技术实施例提供了一种报文处理方法,应用于虚拟服务器集群系统中的物理机,所述方法包括:
3、接收负载均衡器发送的请求报文,其中,所述请求报文中包括:请求业务的客户端的ip地址和端口号;
4、响应所述请求报文,并生成响应报文,其中,所述响应报文的源ip地址为所述物理机的ip地址、源端口号为所述物理机的端口号、目的ip地址为所述客户端的ip地址、目的端口号为所述客户端的端口号;
5、按照内核发包路径发送所述响应报文;
6、在发送所述响应报文的过程中,若所述响应报文到达所述内核发包路径的预设挂载点,将所述响应报文的源ip地址改写为所述负载均衡器的虚拟ip地址、源端口号改写为所述负载均衡器的虚拟端口号,得到目标响应报文;
7、发送所述目标响应报文。
8、可选的,所述预设挂载点挂载有信息改写钩子函数;
9、所述若所述响应报文到达所述内核发包路径的预设挂载点,将所述响应报文的源ip地址改写为所述负载均衡器的虚拟ip地址、源端口号改写为所述负载均衡器的虚拟端口号,得到目标响应报文,包括:
10、若所述信息改写钩子函数被调用,通过所述信息改写钩子函数,将所述响应报文的源ip地址改写为所述负载均衡器的虚拟ip地址、源端口号改写为所述负载均衡器的虚拟端口号,得到目标响应报文。
11、可选的,所述预设挂载点为tc egress。
12、可选的,所述物理机上运行有用于发送报文的发包程序,所述发送所述目标响应报文,包括:
13、调用所述发包程序发送所述目标响应报文。
14、可选的,所述将所述响应报文的源ip地址改写为所述负载均衡器的虚拟ip地址、源端口号改写为所述负载均衡器的虚拟端口号,包括:
15、判断预先存储的物理机的地址端口对与负载均衡器的地址端口对的对应关系中是否存在目标地址端口对,其中,所述地址端口对包括:ip地址和端口号,所述目标地址端口对包括:所述响应报文的源ip地址和源端口号;
16、如果存在,从所述对应关系中查找所述目标地址端口对对应的负载均衡器的地址端口对;
17、将所述响应报文的源ip地址改写为查找到的地址端口对中的ip地址、源端口号改写为查找到的地址端口对中的端口号。
18、可选的,所述对应关系采用key-value数据结构进行存储,其中,key-value中的key值包括:物理机的ip地址和端口号,value值包括:负载均衡器的虚拟ip地址和虚拟端口号。
19、可选的,在所述接收负载均衡器发送的请求报文之前,所述方法还包括:
20、在所述物理机上运行的发包程序接收到所述负载均衡器发送的创建通知后,通过所述发包程序调用ebpf api接口创建所述对应关系。
21、可选的,所述方法还包括:
22、在所述物理机上运行的发包程序接收到所述负载均衡器发送的删除通知时,通过所述发包程序调用ebpf api接口,删除所述对应关系,其中,所述删除通知是所述负载均衡器在接收到针对所述物理机的下线指令时发送的。
23、第二方面,本技术实施例提供了一种报文处理装置,应用于虚拟服务器集群系统中的物理机,所述装置包括:
24、接收模块,用于接收负载均衡器发送的请求报文,其中,所述请求报文中包括:请求业务的客户端的ip地址和端口号;
25、响应模块,用于响应所述请求报文,并生成响应报文,其中,所述响应报文的源ip地址为所述物理机的ip地址、源端口号为所述物理机的端口号、目的ip地址为所述客户端的ip地址、目的端口号为所述客户端的端口号;
26、第一发送模块,用于按照内核发包路径发送所述响应报文;
27、改写模块,用于在发送所述响应报文的过程中,若所述响应报文到达所述内核发包路径的预设挂载点,将所述响应报文的源ip地址改写为所述负载均衡器的虚拟ip地址、源端口号改写为所述负载均衡器的虚拟端口号,得到目标响应报文;
28、第二发送模块,用于发送所述目标响应报文。
29、可选的,所述预设挂载点挂载有信息改写钩子函数;
30、所述改写模块,具体用于在所述信息改写钩子函数被调用时,通过所述信息改写钩子函数,将所述响应报文的源ip地址改写为所述负载均衡器的虚拟ip地址、源端口号改写为所述负载均衡器的虚拟端口号,得到目标响应报文。
31、可选的,所述预设挂载点为tc egress。
32、可选的,所述物理机上运行有用于发送报文的发包程序;
33、所述第二发送模块,具体用于调用所述发包程序发送所述目标响应报文。
34、可选的,所述改写模块,包括:
35、判断单元,用于判断预先存储的物理机的地址端口对与负载均衡器的地址端口对的对应关系中是否存在目标地址端口对,其中,所述地址端口对包括:ip地址和端口号,所述目标地址端口对包括:所述响应报文的源ip地址和源端口号;
36、地址端口对查找单元,用于在预先存储的物理机的地址端口对与负载均衡器的地址端口对的对应关系中存在目标地址端口对时,从所述对应关系中查找所述目标地址端口对对应的负载均衡器的地址端口对;
37、改写单元,用于将所述响应报文的源ip地址改写为查找到的地址端口对中的ip地址、源端口号改写为查找到的地址端口对中的端口号。
38、可选的,所述对应关系采用key-value数据结构进行存储,其中,key-value中的key值包括:物理机的ip地址和端口号,value值包括:负载均衡器的虚拟ip地址和虚拟端口号。
39、可选的,所述装置还包括:
40、对应关系创建模块,用于在接收负载均衡器发送的请求报文之前,在所述物理机上运行的发包程序接收到所述负载均衡器发送的创建通知后,通过所述发包程序调用ebpfapi接口创建所述对应关系。
41、可选的,所述装置还包括:
42、对应关系删除模块,用于在所述物理机上运行的发包程序接收到所述负载均衡器发送的删除通知时,通过所述发包程序调用ebpf api接口,删除所述对应关系,其中,所述删除通知是所述负载均衡器在接收到针对所述物理机的下线指令时发送的。
43、第三方面,本技术实施例提供了一种物理机,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
44、存储器,用于存放计算机程序;
45、处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的方法。
46、第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一所述的方法。
47、本技术实施例有益效果:
48、本技术实施例提供的方案中,虚拟服务器集群系统中的物理机可以接收负载均衡器发送的请求报文,其中,请求报文中包括:请求业务的客户端的ip地址和端口号;响应请求报文,并生成响应报文,其中,响应报文的源ip地址为物理机的ip地址、源端口号为物理机的端口号、目的ip地址为客户端的ip地址、目的端口号为客户端的端口号;按照内核发包路径发送响应报文;在发送响应报文的过程中,若响应报文到达内核发包路径的预设挂载点,将响应报文的源ip地址改写为负载均衡器的虚拟ip地址、源端口号改写为负载均衡器的虚拟端口号,得到目标响应报文;发送目标响应报文。由于物理机对请求报文进行响应并生成响应报文后,可以在响应报文到达内核发包路径的预设挂载点时,将响应报文的源ip地址和源端口号分别改写为负载均衡器的虚拟ip地址和虚拟端口号得到目标响应报文,然后直接向客户端发送目标响应报文,所以响应报文不会经过负载均衡器,减少了负载均衡器需要转发的报文,解决了负载均衡器容易成为虚拟服务器集群系统的性能瓶颈的问题,从而提高了报文处理效率。
49、当然,实施本技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。