CN114979277B - 网络请求的转发方法、装置、计算机设备以及存储介质 - Google Patents
网络请求的转发方法、装置、计算机设备以及存储介质 Download PDFInfo
- Publication number
- CN114979277B CN114979277B CN202210564299.8A CN202210564299A CN114979277B CN 114979277 B CN114979277 B CN 114979277B CN 202210564299 A CN202210564299 A CN 202210564299A CN 114979277 B CN114979277 B CN 114979277B
- Authority
- CN
- China
- Prior art keywords
- socket
- program
- mapping
- forwarding
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000013507 mapping Methods 0.000 claims abstract description 210
- 238000004891 communication Methods 0.000 claims abstract description 22
- 230000006870 function Effects 0.000 claims description 13
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 2
- 238000000605 extraction Methods 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2517—Translation of Internet protocol [IP] addresses using port numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/255—Maintenance or indexing of mapping tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2895—Intermediate processing functionally located close to the data provider application, e.g. reverse proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种网络请求的转发方法、装置、计算机设备以及存储介质。该方法包括:创建套接字映射,所述套接字映射的键包括负载均衡器的地址和端口、服务器的地址和端口以及通信协议类型;根据套接字映射生成套接字映射更新程序,以及套接字映射转发程序;将套接字映射更新程序和套接字映射转发程序加载到内核,并与内核事件进行挂载;通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器。使用本发明的技术方案,可以实现负载均衡器的转发性能的提高。
Description
技术领域
本发明涉及数据传输和负载均衡技术领域,尤其涉及一种网络请求的转发方法、装置、计算机设备以及存储介质。
背景技术
负载均衡器是一种充当反向代理的设备,可以把网络请求分散到一个服务器集群中的可用服务器上去,从而避免产生服务器集群中大量请求只请求某一台服务器,从而使该服务器宕机的情况。
负载均衡器在将网络请求转发至某一服务器之后,如果超过超时时间该服务器未响应,则向另一台服务器转发该网络请求。现有技术中通常通过减少超时时间等方式,提高网络请求的转发效率,降低网络延迟。但是现有技术中这种减少超时时间的方式,未能从网络层面上提高负载均衡器的转发性能。
发明内容
本发明提供了一种网络请求的转发方法、装置、计算机设备以及存储介质,以实现提高负载均衡器的转发性能。
第一方面,本发明实施例提供了一种网络请求的转发方法,该方法包括:
创建套接字映射,所述套接字映射的键包括负载均衡器的地址和端口、服务器的地址和端口以及通信协议类型;
根据套接字映射生成套接字映射更新程序,以及套接字映射转发程序;
将套接字映射更新程序和套接字映射转发程序加载到内核,并与内核事件进行挂载;
通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器。
第二方面,本发明实施例还提供了一种网络请求的转发装置,该装置包括:
套接字映射创建模块,用于创建套接字映射,所述套接字映射的键包括负载均衡器的地址和端口、服务器的地址和端口以及通信协议类型;
程序生成模块,用于根据套接字映射生成套接字映射更新程序,以及套接字映射转发程序;
程序加载模块,用于将套接字映射更新程序和套接字映射转发程序加载到内核,并与内核事件进行挂载;
网络请求转发模块,用于通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器。
第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明实施例中任一所述的网络请求的转发方法。
第四方面,本发明实施例还提供了一种存储计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明实施例中任一所述的网络请求的转发方法。
本发明实施例的技术方案,通过在负载均衡器和服务器之间建立套接字映射,生成套接字映射更新程序和套接字映射转发程序,并将套接字映射更新程序和套接字映射转发程序加载到内核,与内核事件进行挂载,以使套接字映射更新程序和套接字映射转发程序自动运行,从而通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器。解决了现有技术中未能从网络层面上提高负载均衡器的转发性能的问题,从套接字层实现网络请求的转发,避免了内核协议栈对网络请求的处理过程,从而优化了负载均衡器的转发性能,降低了网络迟延。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例一提供的一种网络请求的转发方法的流程图;
图1b是本发明实施例一提供的一种网络请求的网络流向示意图;
图2是本发明实施例二提供的一种网络请求的转发方法的流程图;
图3是本发明实施例三提供的一种网络请求的转发装置的结构示意图;
图4是本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1a为本发明实施例一提供了一种网络请求的转发方法的流程图,本实施例可适用于负载均衡器向服务器转发网络请求的情况,该方法可以由网络请求的转发装置来执行,该网络请求的转发装置可以采用硬件和/或软件的形式实现,该网络请求的转发装置可配置于负载均衡器中,以及与负载均衡器通过同一虚拟网卡进行通信的服务器中。
如图1a所示,该方法包括:
S110、创建套接字映射,所述套接字映射的键包括负载均衡器的地址和端口、服务器的地址和端口以及通信协议类型。
套接字映射也即socket类型的映射,套接字映射可以与不同类型的套接字eBPF(Extended Berkeley Packet Filter,扩展伯克利包过滤器)程序配合,实现套接字的转发。示例性的,套接字映射的类型可以是BPF_MAP_TYPE_SOCKMAP或者BPF_MAP_TYPE_SOCKHASH,本实施例对套接字映射的类型不进行限制。eBPF程序的类型可以是BPF_PROG_TYPE_SOCK_OPS、BPF_PROG_TYPE_SK_SKB以及BPF_PROG_TYPE_SK_MSG等。
在本发明实施例中,负载均衡器可以是nginx负载均衡器,nginx是一个高性能的反向代理服务器,具有并发能力强的特点。地址是指IP(Internet Protocol,网际互连协议)地址。
在本发明实施例中,套接字映射的结构体包括套接字映射类型、键、值以及最大条目数,套接字映射的值是套接字文件描述符,套接字文件描述符用于定义套接字映射支持的通信标准。套接字映射的键通过IP协议五元组的结构体进行定义,也即,套接字映射的键包括源IP、目的IP、源端口、目的端口以及通信协议类型。通过负载均衡器的IP地址和端口、服务器的IP地址和端口以及通信协议类型,对套接字映射的键进行定义,可以生成套接字映射更新程序和套接字映射转发程序。
S120、根据套接字映射生成套接字映射更新程序,以及套接字映射转发程序。
套接字映射更新程序也即BPF_PROG_TYPE_SOCK_OPS类型的eBPF程序,通过负载均衡器的IP地址和端口、服务器的IP地址和端口以及通信协议类型,对BPF_PROG_TYPE_SOCK_OPS程序中套接字映射的键进行定义,可以生成BPF_PROG_TYPE_SOCK_OPS程序。
套接字映射转发程序包括BPF_PROG_TYPE_SK_SKB程序和BPF_PROG_TYPE_SK_MSG程序,BPF_PROG_TYPE_SK_SKB程序可以提取得到套接字映射中的套接字信息,套接字信息也即套接字映射中的IP协议五元组,根据套接字信息封装发送数据包,并调用BPF辅助函数,转发发送数据包。由于eBPF程序无法直接调用内核函数,因此内核中定义了不同类型的BPF辅助函数,用于支持eBPF程序与内核其他模块进行交互。BPF_PROG_TYPE_SK_MSG程序在捕获到发送数据包时,根据套接字信息进行发送数据包的转发。同样的,通过负载均衡器的IP地址和端口、服务器的IP地址和端口以及通信协议类型,对BPF_PROG_TYPE_SK_MSG程序中套接字映射的键进行定义,生成BPF_PROG_TYPE_SK_MSG程序。
图1b提供了一种网络请求的网络流向示意图,如图1b所示,现有技术中网络请求的网络流向如图中的虚线所示,网络请求在负载均衡器中经过套接字层以及内核协议栈的处理之后,经由虚拟网卡发送至web服务器,再经过web服务器的内核协议栈和套接字层进行处理之后,得到响应结果。采用本申请的技术方案,对使用同一虚拟网卡的负载均衡器和web服务器建立套接字映射,来自负载均衡器套接字层的发送数据包在套接字层就发送至web服务器的套接字层,避免了额外的内核协议栈对发送数据包的处理过程,因此提高了负载均衡器的转发性能,降低了服务器响应的网络迟延。
在本发明实施例中,负载均衡器端部署了套接字映射更新程序,服务器端部署了套接字映射转发程序,因此,套接字映射转发程序与套接字映射更新程序的源IP、目的IP,以及源端口和目的端口分别是相反的。
S130、将套接字映射更新程序和套接字映射转发程序加载到内核,并与内核事件进行挂载。
生成套接字映射更新程序和套接字映射转发程序之后,还需将其分别加载到内核中,并进行挂载后,两个程序才能生效,实现自动运行。本实施例对套接字映射更新程序的加载、挂载类型,以及套接字映射转发程序的加载、挂载类型不进行限制。
S140、通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器。
当存在新的网络请求时,建立与新的网络请求匹配的新建套接字,套接字映射更新程序在检测到存在新建套接字时,将新建套接字更新到套接字映射中。
套接字映射转发程序在服务器的套接字层,提取套接字映射中新建套接字的套接字信息,并根据套接字信息封装发送数据包,将发送数据包转发至服务器。
本发明实施例的技术方案,通过在负载均衡器和服务器之间建立套接字映射,生成套接字映射更新程序和套接字映射转发程序,并将套接字映射更新程序和套接字映射转发程序加载到内核,与内核事件进行挂载,以使套接字映射更新程序和套接字映射转发程序自动运行,从而通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器。解决了现有技术中未能从网络层面上提高负载均衡器的转发性能的问题,从套接字层实现网络请求的转发,避免了内核协议栈对网络请求的处理过程,从而优化了负载均衡器的转发性能,降低了网络迟延。
实施例二
图2为本发明实施例二提供的一种网络请求的转发方法的流程图,本发明实施例在上述实施例的基础上,对生成套接字映射更新程序的过程、生成套接字映射转发程序、对套接字映射更新程序和套接字映射转发程序进行加载和挂载的过程,通过套接字映射更新程序检测网络请求的过程,以及通过套接字映射转发程序转发网络请求的过程进行了进一步的具体化。
如图2所示,该方法包括:
S210、创建套接字映射,所述套接字映射的键包括负载均衡器的地址和端口、服务器的地址和端口以及通信协议类型。
S220、将负载均衡器的地址作为源地址,将负载均衡器的端口作为源端口。
S230、将服务器的地址作为目的地址,将服务器的端口作为目的端口。
在构造套接字映射更新程序时,将负载均衡器的IP地址作为源地址,服务器的IP地址作为目的地址,负载均衡器的端口作为源端口,服务器的端口作为目的端口。
S240、根据源地址、源端口、目的地址、目的端口以及通信协议类型,生成套接字映射更新文件。
套接字映射更新程序为BPF_PROG_TYPE_SOCK_OPS程序时,相应的,套接字映射更新文件可以为sockops.bpf.c文件,sockops.bpf.c文件中除定义源地址、源端口、目的地址、目的端口以及通信协议类型之外,由于套接字映射更新程序跟踪全部类型的套接字事件之后,只对新建套接字更新到套接字映射中,因此,sockops.bpf.c文件中还可以定义一个判断套接字事件类型的字段。
S250、对所述套接字映射更新文件进行编译,生成套接字映射更新字节码。
定义完成得到套接字映射更新文件之后,可以通过执行编译命令,将套接字映射更新文件编译为套接字映射更新字节码。
S260、将服务器的地址作为源地址,将服务器的端口作为源端口。
S270、将负载均衡器的地址作为目的地址,将负载均衡器的端口作为目的端口。
在套接字映射转发程序中,源地址为服务器地址,目的地址为负载均衡器地址,源端口为服务器端口,目的端口为负载均衡器端口。也即,套接字映射转发程序的源地址和源端口,分别对应套接字映射更新程序的目的地址和目的端口,发送方向相反的原因已在上述实施例中进行说明,本实施例对此不再赘述。
S280、根据源地址、源端口、目的地址、目的端口以及通信协议类型,生成套接字映射转发文件。
由于BPF_PROG_TYPE_SK_MSG程序与BPF_PROG_TYPE_SOCK_OPS程序的加载和挂载类型不同,并且为了便于对eBPF程序的管理,优选的,通过套接字映射转发文件,也即sockredir.bpf.c文件,保存BPF_PROG_TYPE_SK_MSG程序。
S290、对所述套接字映射转发文件进行编译,生成套接字映射转发字节码。
对sockredir.bpf.c文件执行编译命令,将sockredir.bpf.c文件编译为套接字映射转发字节码。
S2100、通过命令行工具将套接字映射更新字节码加载到内核中。
对于套接字映射更新字节码,可以通过命令行工具bpftool执行加载命令,将其加载到内核中,并固定到文件系统中。
S2110、将加载到内核的套接字映射更新字节码挂载到控制组群中。
套接字映射更新字节码支持挂载到控制组群中,也即cgroups中,对cgroups所拥有的的全部进程生效。套接字映射更新字节码可以通过bpftool cgroup attach命令,挂载到cgroups中。
S2120、通过命令行工具将套接字映射转发字节码加载到内核中。
S2130、将加载到内核的套接字映射转发字节码挂载到钩子程序上。
套接字映射转发字节码的加载过程与套接字映射更新字节码类似,但挂载过程与套接字映射更新字节码不同。套接字映射转发字节码的挂载类型为msg_verdict型,也即,套接字映射转发字节码通过bpftool prog attach命令,挂载到钩子程序上。并且,bpftoolprog attach命令将套接字映射转发程序以及套接字映射更新程序的文件系统进行了绑定。
S2140、通过套接字映射更新程序跟踪套接字事件。
在本发明实施例中,加载和挂载之后,套接字映射更新程序和套接字映射转发程序就可以自动运行。
套接字映射更新程序跟踪套接字事件,并判断套接字事件的类型。
S2150、判断通过套接字映射更新程序是否检测到与网络请求匹配的新建套接字,若是,则执行S2160,否则返回执行S2140。
当套接字映射更新程序跟踪到新建套接字时,将新建套接字更新到套接字映射中。
S2160、将所述新建套接字更新到套接字映射中。
具体的,套接字映射更新程序可以通过调用BPF辅助函数,将新建套接字更新到套接字映射中。
S2170、通过套接字映射转发程序中的套接字信息提取程序,提取套接字映射中与新建套接字匹配的套接字信息,并根据套接字信息封装发送数据包。
新建套接字更新到套接字映射中之后,套接字信息提取程序,也即BPF_PROG_TYPE_SK_SKB程序,从套接字映射中提取新建套接字的套接字信息,根据新建套接字的套接字信息封装发送数据包,并调用BPF辅助函数将发送数据包转发至BPF_PROG_TYPE_SK_MSG程序。
S2180、通过套接字映射转发程序中的套接字转发程序,捕获发送数据包,并将所述发送数据包在服务器的套接字层发送至服务器。
套接字转发程序,也即BPF_PROG_TYPE_SK_MSG程序,捕获到发送数据包之后,根据发送数据包中新建套接字的套接字信息,将发送数据包转发至服务器。
本发明实施例的技术方案,通过不同类型的eBPF程序,从套接字映射中提取套接字信息,通过调用BPF辅助函数进行发送数据包的转发,在负载均衡器和服务器的套接字层实现了发送数据包的转发。在具体的适用场景中,采用本实施例的技术方案优化之前,负载均衡器的平均每秒请求数为15798,各线程的平均迟延为8.53ms。采用本实施例的技术方案优化负载均衡器的转发性能之后,负载均衡器的平均每秒请求数为17300,各线程的平均迟延为7.88ms。因此可见,本实施例的技术方案优化了负载均衡器的转发性能,提高了网络吞吐率,降低了网络迟延。
实施例三
图3为本发明实施例三提供的一种网络请求的转发装置的结构示意图。如图3所示,该装置包括:套接字映射创建模块310、程序生成模块320、程序加载模块330以及网络请求转发模块340。其中:
套接字映射创建模块310,用于创建套接字映射,所述套接字映射的键包括负载均衡器的地址和端口、服务器的地址和端口以及通信协议类型;
程序生成模块320,用于根据套接字映射生成套接字映射更新程序,以及套接字映射转发程序;
程序加载模块330,用于将套接字映射更新程序和套接字映射转发程序加载到内核,并与内核事件进行挂载;
网络请求转发模块340,用于通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器。
本发明实施例的技术方案,通过在负载均衡器和服务器之间建立套接字映射,生成套接字映射更新程序和套接字映射转发程序,并将套接字映射更新程序和套接字映射转发程序加载到内核,与内核事件进行挂载,以使套接字映射更新程序和套接字映射转发程序自动运行,从而通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器。解决了现有技术中未能从网络层面上提高负载均衡器的转发性能的问题,从套接字层实现网络请求的转发,避免了内核协议栈对网络请求的处理过程,从而优化了负载均衡器的转发性能,降低了网络迟延。
在上述实施例的基础上,程序生成模块320,包括:
第一原地址确定单元,用于将负载均衡器的地址作为源地址,将负载均衡器的端口作为源端口;
第一目的地址确定单元,用于将服务器的地址作为目的地址,将服务器的端口作为目的端口;
套接字映射更新文件生成单元,用于根据源地址、源端口、目的地址、目的端口以及通信协议类型,生成套接字映射更新文件;
套接字映射更新字节码生成单元,用于对所述套接字映射更新文件进行编译,生成套接字映射更新字节码。
在上述实施例的基础上,程序生成模块320,包括:
第二原地址确定单元,用于将服务器的地址作为源地址,将服务器的端口作为源端口;
第二目的地址确定单元,用于将负载均衡器的地址作为目的地址,将负载均衡器的端口作为目的端口;
套接字映射转发文件生成单元,用于根据源地址、源端口、目的地址、目的端口以及通信协议类型,生成套接字映射转发文件;
套接字映射转发字节码生成单元,用于对所述套接字映射转发文件进行编译,生成套接字映射转发字节码。
在上述实施例的基础上,程序加载模块330,包括:
套接字映射更新字节码加载单元,用于通过命令行工具将套接字映射更新字节码加载到内核中;
套接字映射更新字节码挂载单元,用于将加载到内核的套接字映射更新字节码挂载到控制组群中。
在上述实施例的基础上,程序加载模块330,包括:
套接字映射转发字节码加载单元,用于通过命令行工具将套接字映射转发字节码加载到内核中;
套接字映射转发字节码挂载单元,用于将加载到内核的套接字映射转发字节码挂载到钩子程序上。
在上述实施例的基础上,网络请求转发模块340,包括:
套接字事件跟踪单元,用于通过套接字映射更新程序跟踪套接字事件;
新建套接字更新单元,用于若通过套接字映射更新程序检测到与网络请求匹配的新建套接字,则将所述新建套接字更新到套接字映射中。
在上述实施例的基础上,网络请求转发模块340,包括:
套接字信息提取单元,用于通过套接字映射转发程序中的套接字信息提取程序,提取套接字映射中与新建套接字匹配的套接字信息,并根据套接字信息封装发送数据包;
发送数据包转发单元,用于通过套接字映射转发程序中的套接字转发程序,捕获发送数据包,并将所述发送数据包在服务器的套接字层发送至服务器。
本发明实施例所提供的网络请求的转发装置可执行本发明任意实施例所提供的网络请求的转发方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四提供的一种计算机设备的结构示意图,如图4所示,该计算机设备包括处理器70、存储器71、输入装置72和输出装置73;计算机设备中处理器70的数量可以是一个或多个,图4中以一个处理器70为例;计算机设备中的处理器70、存储器71、输入装置72和输出装置73可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器71作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的网络请求的转发方法对应的模块(例如,网络请求的转发装置中的套接字映射创建模块310、程序生成模块320、程序加载模块330以及网络请求转发模块340)。处理器70通过运行存储在存储器71中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的网络请求的转发方法。该方法包括:
创建套接字映射,所述套接字映射的键包括负载均衡器的地址和端口、服务器的地址和端口以及通信协议类型;
根据套接字映射生成套接字映射更新程序,以及套接字映射转发程序;
将套接字映射更新程序和套接字映射转发程序加载到内核,并与内核事件进行挂载;
通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器。
存储器71可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器71可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器71可进一步包括相对于处理器70远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置72可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置73可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种网络请求的转发方法,该方法包括:
创建套接字映射,所述套接字映射的键包括负载均衡器的地址和端口、服务器的地址和端口以及通信协议类型;
根据套接字映射生成套接字映射更新程序,以及套接字映射转发程序;
将套接字映射更新程序和套接字映射转发程序加载到内核,并与内核事件进行挂载;
通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的网络请求的转发方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述网络请求的转发装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (8)
1.一种网络请求的转发方法,其特征在于,包括:
创建套接字映射,所述套接字映射的键包括负载均衡器的地址和端口、服务器的地址和端口以及通信协议类型;
根据套接字映射生成套接字映射更新程序,以及套接字映射转发程序;
将套接字映射更新程序和套接字映射转发程序加载到内核,并与内核事件进行挂载;
通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器;
所述通过套接字映射更新程序检测到网络请求,包括:
通过所述套接字映射更新程序跟踪套接字事件;
若通过所述套接字映射更新程序检测到与网络请求匹配的新建套接字,则将所述新建套接字更新到套接字映射中;
所述通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器,包括:
通过所述套接字映射转发程序中的套接字信息提取程序,提取所述套接字映射中与所述新建套接字匹配的套接字信息,并根据所述套接字信息封装发送数据包;
通过所述套接字映射转发程序中的套接字转发程序,捕获所述发送数据包,并将所述发送数据包在服务器的套接字层发送至所述服务器;
在所述通过套接字映射更新程序检测到网络请求时,包括:
通过所述套接字映射更新程序调用BPF辅助函数将所述新建套接字更新到所述套接字映射中;
在所述新建套接字更新到所述套接字映射中之后,包括:
通过所述套接字信息提取程序调用所述BPF辅助函数转发所述套接字信息至所述套接字转发程序。
2.根据权利要求1所述的方法,其特征在于,根据套接字映射生成套接字映射更新程序,包括:
将负载均衡器的地址作为源地址,将负载均衡器的端口作为源端口;
将服务器的地址作为目的地址,将服务器的端口作为目的端口;
根据源地址、源端口、目的地址、目的端口以及通信协议类型,生成套接字映射更新文件;
对所述套接字映射更新文件进行编译,生成套接字映射更新字节码。
3.根据权利要求1所述的方法,其特征在于,根据套接字映射生成套接字映射转发程序,包括:
将服务器的地址作为源地址,将服务器的端口作为源端口;
将负载均衡器的地址作为目的地址,将负载均衡器的端口作为目的端口;
根据源地址、源端口、目的地址、目的端口以及通信协议类型,生成套接字映射转发文件;
对所述套接字映射转发文件进行编译,生成套接字映射转发字节码。
4.根据权利要求2所述的方法,其特征在于,将套接字映射更新程序加载到内核,并与内核事件进行挂载,包括:
通过命令行工具将套接字映射更新字节码加载到内核中;
将加载到内核的套接字映射更新字节码挂载到控制组群中。
5.根据权利要求3所述的方法,其特征在于,将套接字映射转发程序加载到内核,并与内核事件进行挂载,包括:
通过命令行工具将套接字映射转发字节码加载到内核中;
将加载到内核的套接字映射转发字节码挂载到钩子程序上。
6.一种网络请求的转发装置,其特征在于,包括:
套接字映射创建模块,用于创建套接字映射,所述套接字映射的键包括负载均衡器的地址和端口、服务器的地址和端口以及通信协议类型;
程序生成模块,用于根据套接字映射生成套接字映射更新程序,以及套接字映射转发程序;
程序加载模块,用于将套接字映射更新程序和套接字映射转发程序加载到内核,并与内核事件进行挂载;
网络请求转发模块,用于通过套接字映射更新程序检测到网络请求时,通过套接字映射转发程序在服务器的套接字层将网络请求转发至服务器;
所述网络请求转发模块,还包括:
套接字事件跟踪单元,用于通过所述套接字映射更新程序跟踪套接字事件;
新建套接字更新单元,用于若通过所述套接字映射更新程序检测到与网络请求匹配的新建套接字,则将所述新建套接字更新到套接字映射中;
套接字信息提取单元,用于通过所述套接字映射转发程序中的套接字信息提取程序,提取所述套接字映射中与所述新建套接字匹配的套接字信息,并根据所述套接字信息封装发送数据包;
发送数据包转发单元,用于通过所述套接字映射转发程序中的套接字转发程序,捕获所述发送数据包,并将所述发送数据包在服务器的套接字层发送至所述服务器;
在所述通过套接字映射更新程序检测到网络请求时,包括:
通过所述套接字映射更新程序调用BPF辅助函数将所述新建套接字更新到所述套接字映射中;
在所述新建套接字更新到所述套接字映射中之后,包括:
通过所述套接字信息提取程序调用所述BPF辅助函数转发所述套接字信息至所述套接字转发程序。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5中任一所述的网络请求的转发方法。
8.一种存储计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-5中任一所述的网络请求的转发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210564299.8A CN114979277B (zh) | 2022-05-23 | 2022-05-23 | 网络请求的转发方法、装置、计算机设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210564299.8A CN114979277B (zh) | 2022-05-23 | 2022-05-23 | 网络请求的转发方法、装置、计算机设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114979277A CN114979277A (zh) | 2022-08-30 |
CN114979277B true CN114979277B (zh) | 2024-03-05 |
Family
ID=82984994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210564299.8A Active CN114979277B (zh) | 2022-05-23 | 2022-05-23 | 网络请求的转发方法、装置、计算机设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114979277B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113691389A (zh) * | 2021-07-05 | 2021-11-23 | 深圳爱捷云科技有限公司 | 负载均衡器的配置方法、服务器及存储介质 |
CN113746930A (zh) * | 2021-09-09 | 2021-12-03 | 上海格尔安全科技有限公司 | 网络负载均衡方法、装置、计算机设备和存储介质 |
CN113765867A (zh) * | 2020-08-12 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种数据传输方法、装置、设备及存储介质 |
CN113890865A (zh) * | 2021-10-21 | 2022-01-04 | 展讯通信(上海)有限公司 | 数据包转发方法和设备 |
-
2022
- 2022-05-23 CN CN202210564299.8A patent/CN114979277B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113765867A (zh) * | 2020-08-12 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种数据传输方法、装置、设备及存储介质 |
CN113691389A (zh) * | 2021-07-05 | 2021-11-23 | 深圳爱捷云科技有限公司 | 负载均衡器的配置方法、服务器及存储介质 |
CN113746930A (zh) * | 2021-09-09 | 2021-12-03 | 上海格尔安全科技有限公司 | 网络负载均衡方法、装置、计算机设备和存储介质 |
CN113890865A (zh) * | 2021-10-21 | 2022-01-04 | 展讯通信(上海)有限公司 | 数据包转发方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114979277A (zh) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8937942B1 (en) | Storing session information in network devices | |
CN106331065B (zh) | 一种用于具有服务容器的主机系统的代理应用以及系统 | |
CN112532538A (zh) | 流量的控制方法、装置、电子设备及计算机可读存储介质 | |
CN111193773B (zh) | 负载均衡方法、装置、设备及存储介质 | |
US11936562B2 (en) | Virtual machine packet processing offload | |
CN113268308B (zh) | 信息处理方法、装置以及存储介质 | |
CN110365759B (zh) | 一种数据转发方法、装置、系统、网关设备及存储介质 | |
CN112769716B (zh) | 基于混合型虚拟网桥的虚拟交换机的数据转发方法及装置 | |
CN113746930A (zh) | 网络负载均衡方法、装置、计算机设备和存储介质 | |
CN113709052B (zh) | 一种网络报文的处理方法、装置、电子设备和存储介质 | |
CN107995326B (zh) | 一种容器网络的管理方法及装置 | |
CN111865978A (zh) | 一种微服务的请求标识更新方法、装置、设备及介质 | |
CN114979277B (zh) | 网络请求的转发方法、装置、计算机设备以及存储介质 | |
CN112532714B (zh) | 一种数据处理方法、处理装置、服务器及存储介质 | |
CN111405007B (zh) | Tcp会话管理方法、装置、存储介质及电子设备 | |
CN109474525B (zh) | 报文的处理方法、装置、设备及可读存储介质 | |
CN114024758B (zh) | 流量特征提取方法、系统、存储介质及电子设备 | |
CN115296956A (zh) | 一种内核的隧道转发方法、装置、电子设备及存储介质 | |
CN111404705B (zh) | 一种sdn的优化方法、装置及计算机可读存储介质 | |
CN113489775A (zh) | 一种基于vpp的七层负载均衡服务器及负载均衡方法 | |
CN113453278A (zh) | 一种基于5g upf下的tcp包分段组包方法及终端 | |
CN113890789B (zh) | 适用于数据中心的udp隧道流量的分流方法、流量转发方法 | |
JP2017528091A (ja) | 通信リンクの送信方法、装置及び端末 | |
CN114285634B (zh) | 数据报文的深度检测方法、装置、介质及监控系统 | |
CN110704026A (zh) | 软件开发工具包的调用方法、装置、终端及可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |