基于快速数据路径的反向代理方法技术

技术编号:39395896 阅读:7 留言:0更新日期:2023-11-19 15:50
本申请公开基于快速数据路径的反向代理方法

【技术实现步骤摘要】
基于快速数据路径的反向代理方法、服务器及存储介质


[0001]本申请实施例涉及网络数据传输领域,特别涉及一种基于快速数据路径的反向代理方法

服务器及存储介质


技术介绍

[0002]反向代理
(Reverse Proxy)
方式是指以代理服务器来接受
internet
上的连接请求,将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给
internet
上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器

简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境

[0003]但是,反向代理服务器参考模型无论是采用
OSI
模型还是
TCP/IP
模型,其数据需要经过内核空间的网卡链路

网络驱动
、TCP/IP
协议栈
、Socket
处理之后进入用户空间程序处理,这种逐层传递方式增加了数据传递时延和系统内存资源的开销,降低了代理的效率

现在一般都用于对
web
服务器的负载均衡,针对每一次代理,代理服务器就必须打开两个连接,一个对外,一个对内,因此在并发连接请求数量非常大的时候,代理服务器的负载也就非常大了,在最后代理服务器本身会成为服务的瓶颈


技术实现思路
/>[0004]本申请实施例提供一种基于快速数据路径的反向代理方法

服务器及存储介质,提高反向代理服务器在并行处理业务时的网络处理速度

[0005]一方面,本申请提供一种基于快速数据路径的反向代理方法,所述方法包括:
[0006]开启代理服务监听程序并加载扩展的伯克利包过滤器
eBPF
引擎,通过开启的快速数据路径
XDP
程序拦截从网卡上接收,但尚未进入
TCP/IP
协议栈的数据包;所述数据包是由客户端或网络服务器端通过
internet
发送;
[0007]对拦截的所述数据包进行传输协议判断,在确定所述数据包为
TCP
协议时,根据所述数据包连接的应用端口确定反向代理的目标网络服务器

客户端以及代理权限;
[0008]根据客户端或网络服务器端的地址和
/
或端口信息确定所述数据包的
HTTP
协议,并根据建立的代理服务连接信息表确定对所述数据包的代理状态;所述代理服务连接信息表中记录有客户端和服务器端之间建立的端到端代理连接的连接信息;
[0009]响应于所述数据包具有代理权限且已建立端到端代理连接,从中提取数据信息,跳过
TCP/IP
协议栈

网卡驱动和用户空间程序,直接通过调用内核的
socket
缓冲区将数据信息发送到客户端或目标网络服务器端;响应于所述数据包具有备代理权限且未建立端到端代理连接,则在所述代理服务连接信息表中添加对应连接信息,继续检测后续拦截的数据包并循环检测

[0010]进一步地,在开启代理服务监听程序和加载
eBPF
引擎之前,所述方法还包括:
[0011]读取预配置信息,获取代理权限表,所述代理权限表中记录有需要监听的端口号
和网络服务器地址和
/
或端口号;
[0012]加载所述代理服务连接信息表,确定表中所有已建立端到端连接的连接信息,连接信息记录客户端和网络服务器之间的连接信息,包括客户端地址和
/
或端口号

网络服务器地址和
/
或端口号

以及传输标志符;
[0013]开启代理服务监听程序并加载
eBPF
引擎后,基于所述
XDP
程序实时截获网卡接收到的所述数据包,进行数据分析

[0014]进一步地,当所述数据包解析判断不是
TCP
协议时,直接将其送往上层
TCP/IP
协议栈顺序执行;
[0015]当所述数据包解析判断为
TCP
协议时,获取所述数据包指定的应用端口,并和所述代理权限表中的端口号进行匹配;不同应用端口号用于连接和实现不同应用功能;
[0016]当未匹配到相同的端口号时,指示收发所述数据包的请求不具有反向代理权限,直接将其送往上层
TCP/IP
协议栈顺序执行;当匹配到相同的端口号时,指示收发所述数据包的请求具有反向代理权限,验证所述数据包的
HTTP
协议

[0017]进一步地,所述数据包的
HTTP
协议分为
HTTP
请求和
HTTP
响应;客户端发起的为包含
HTTP
请求的数据包,用于发送到目标网络服务器进行数据请求,目标网络服务器发起的为包含
HTTP
响应的数据包,用于响应客户端发起的数据请求

[0018]进一步的,当所述数据包对应为客户端发起的
HTTP
请求时,获取所述代理服务连接信息表,并读取其中记录的客户端地址和
/
或端口信息;
[0019]将所述数据包中目标客户端地址和
/
或端口信息与所述代理服务连接信息表记录的客户端地址和
/
或端口信息相匹配;
[0020]当地址和
/
或端口信息匹配不一致时,直接将所述数据包送往上层
TCP/IP
协议栈顺序执行;当地址和
/
或端口信息匹配一致时,指示已经建立端到端代理连接,返回转送
drop
指令关闭上层协议的处理权限;
[0021]当所述数据包对应为网络服务器发起的
HTTP
响应时,获取所述代理服务连接信息表,并读取其中记录的网络服务器地址和
/
或端口信息;
[0022]将所述数据包中目标网络服务器地址和
/
或端口信息与所述代理服务连接信息表记录的网络服务器地址和
/
或端口信息相匹配;
[0023]当地址和
/
或端口信息匹配不一致时,直接将所述数据包送往上层
TCP/IP
协议栈顺序执行;当地址和
/
或端口信息匹配一致时,指示已经建立端到端代理连接,返回
drop
指令关闭上层协议的处理权限

[0024]进一步的,当所述数据包对应为
HTTP
请求,在关闭上层协议的处理权限后,所述方法还包括:...

【技术保护点】

【技术特征摘要】
1.
一种基于快速数据路径的反向代理方法,其特征在于,所述方法包括:开启代理服务监听程序并加载扩展的伯克利包过滤器
eBPF
引擎,通过开启的快速数据路径
XDP
程序拦截从网卡上接收,但尚未进入
TCP/IP
协议栈的数据包;所述数据包是由客户端或网络服务器端通过
internet
发送;对拦截的所述数据包进行传输协议判断,在确定所述数据包为
TCP
协议时,根据所述数据包连接的应用端口确定反向代理的目标网络服务器

客户端以及代理权限;根据客户端或网络服务器端的地址和
/
或端口信息确定所述数据包的
HTTP
协议,并根据建立的代理服务连接信息表确定对所述数据包的代理状态;所述代理服务连接信息表中记录有客户端和服务器端之间建立的端到端代理连接的连接信息;响应于所述数据包具有代理权限且已建立端到端代理连接,从中提取数据信息,跳过
TCP/IP
协议栈

网卡驱动和用户空间程序,直接通过调用内核的
socket
缓冲区将数据信息发送到客户端或目标网络服务器端;响应于所述数据包具有备代理权限且未建立端到端代理连接,则在所述代理服务连接信息表中添加对应连接信息,继续检测后续拦截的数据包并循环检测
。2.
根据权利要求1所述的基于快速数据路径的反向代理方法,其特征在于,在开启代理服务监听程序和加载
eBPF
引擎之前,所述方法还包括:读取预配置信息,获取代理权限表,所述代理权限表中记录有需要监听的端口号和网络服务器地址和
/
或端口号;加载所述代理服务连接信息表,确定表中所有已建立端到端连接的连接信息,连接信息记录客户端和网络服务器之间的连接信息,包括客户端地址和
/
或端口号

网络服务器地址和
/
或端口号

以及传输标志符;开启代理服务监听程序并加载
eBPF
引擎后,基于所述
XDP
程序实时截获网卡接收到的所述数据包,进行数据分析
。3.
根据权利要求2所述的基于快速数据路径的反向代理方法,其特征在于,当所述数据包解析判断不是
TCP
协议时,直接将其送往上层
TCP/IP
协议栈顺序执行;当所述数据包解析判断为
TCP
协议时,获取所述数据包指定的应用端口,并和所述代理权限表中的端口号进行匹配;不同应用端口号用于连接和实现不同应用功能;当未匹配到相同的端口号时,指示收发所述数据包的请求不具有反向代理权限,直接将其送往上层
TCP/IP
协议栈顺序执行;当匹配到相同的端口号时,指示收发所述数据包的请求具有反向代理权限,验证所述数据包的
HTTP
协议
。4.
根据权利要求1所述的基于快速数据路径的反向代理方法,其特征在于,所述数据包的
HTTP
协议分为
HTTP
请求和
HTTP
响应;客户端发起的为包含
HTTP
请求的数据包,用于发送到目标网络服务器进行数据请求,目标网络服务器发起的为包含
HTTP
响应的数据包,用于响应客户端发起的数据请求
。5.
根据权利要求4所述的基于快速数据路径的反向代理方法,其特征在于,当所述数据包对应为客户端发起的
HTTP
请求时,获取所述代理服务连接信息表,并读取其中记录的客户端地址和
/
或端口信息;将所述数据包中目标客户端地址和
/
或端口信息与所述代理服务连接信息表记录的客户端地址和
/
或端口信息相匹配;

【专利技术属性】
技术研发人员:卜国强许学超储余超
申请(专利权)人:江苏深网科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1