CN116527410A - 一种反向代理模式下的防火墙多进程处理方法和装置 - Google Patents
一种反向代理模式下的防火墙多进程处理方法和装置 Download PDFInfo
- Publication number
- CN116527410A CN116527410A CN202310814393.9A CN202310814393A CN116527410A CN 116527410 A CN116527410 A CN 116527410A CN 202310814393 A CN202310814393 A CN 202310814393A CN 116527410 A CN116527410 A CN 116527410A
- Authority
- CN
- China
- Prior art keywords
- data packet
- information item
- modification information
- value
- destination
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 9
- 238000000034 method Methods 0.000 claims abstract description 223
- 230000008569 process Effects 0.000 claims abstract description 195
- 238000012986 modification Methods 0.000 claims abstract description 181
- 230000004048 modification Effects 0.000 claims abstract description 181
- 238000012545 processing Methods 0.000 claims abstract description 28
- 238000007781 pre-processing Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013404 process transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0209—Architectural arrangements, e.g. perimeter networks or demilitarized zones
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—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/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种反向代理模式下的防火墙多进程处理方法和装置,涉及网络通信技术领域,包括:通过反向代理的第一进程从网卡的接收队列获取TCP连接的首包,计算第二进程的ID值,将首包插入到以ID值命名的环形队列中;通过反向代理中具有ID值的第二进程从名称为ID值的环形队列中获取TCP连接首包;向第二进程维护的第一哈希链表和第二哈希链表中添加链表信息项和修改信息项;将首包的目的IP修改为第二进程IP,将首包的目的MAC修改为虚拟网卡MAC;将修改后的首包传递给第二进程的用户态协议栈。本发明消除不同代理工作进程因与相同应用服务器端口通信而造成会话冲突的可能性,应用防火墙扩展能力强,处理并发连接性能高。
Description
技术领域
本发明涉及网络通信技术领域,特别涉及一种反向代理模式下的防火墙多进程处理方法和装置。
背景技术
反向代理部署模式是应用防火墙常见的部署模式之一,反向代理部署模式下的应用防火墙接收来自反向代理设备的请求,把请求发送给应用服务器,并将应用服务器的返回结果发送给反向代理设备,图1以数据库代理为例展示了数据处理流程,可作为现有技术的参考。
现有技术中的反向代理模式下的防火墙进程处理方法,不同代理工作进程与相同应用服务器端口通信会造成会话冲突,防火墙扩展能力较差,处理并发连接性能低、稳定性差。
发明内容
鉴于现有技术中的上述缺陷或不足,本发明提供了一种反向代理模式下的防火墙多进程处理方法和装置,能够对数据包进行过滤、收发、分流,利用多队列技术创建多个工作进程,使用用户态协议栈为每个代理工作进程创建独立虚拟网卡并设置不同的IP地址,消除不同代理工作进程因与相同应用服务器端口通信而造成会话冲突的可能性,本发明提出的反向代理部署模式应用防火墙扩展能力强,处理并发连接性能高。
本发明的一个方面,提供了一种反向代理模式下的防火墙多进程处理方法,包括如下步骤:
通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的SYN数据包,计算SYN数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述SYN数据包插入到以所述ID值命名的无锁环形队列中;
通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的SYN数据包;向该第二进程维护的第一哈希链表和第二哈希链表中添加链表信息项和修改信息项;将SYN数据包的目的IP修改为第二进程IP,并将SYN数据包的目的MAC修改为虚拟网卡MAC;将修改后的SYN数据包传递给第二进程的用户态协议栈;其中,所述第一哈希链表记录进入用户态协议栈的修改信息项,所述第二哈希链表记录由用户态协议栈外发数据包的修改信息项。
进一步的,以TCP连接的SYN数据包四元组作为哈希函数的键值,在所述第一哈希链表中添加第一链表信息项和第一修改信息项,其中,第一链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为SYN数据包源IP,将源端口赋值为SYN数据包源端口,将目的IP赋值为SYN数据包目的IP,将目的端口赋值为SYN数据包目的端口;所述第一修改信息项包括IP修改信息项和MAC修改信息项,将第二进程IP赋值给IP修改信息项,将虚拟网卡MAC赋值给MAC修改信息项;
以用户态协议栈外发数据包四元组作为哈希函数的键值,在所述第二哈希链表中添加第二链表信息项和第二修改信息项,其中,第二链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为第二进程IP,将源端口赋值为数据包目的端口,将目的IP赋值为数据包源IP,将目的端口赋值为数据包源端口;所述第二修改信息项包括IP修改信息项和MAC修改信息项,将数据包目的IP赋值给IP修改信息项,将数据包目的MAC赋值给MAC修改信息项。
进一步的,还包括:
通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的非首个数据包,计算该数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述TCP连接的非首个数据包插入到以所述ID值命名的无锁环形队列中;
通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的非首个数据包;以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在所述第一修改信息项,是则按照该第一修改信息项修改所述TCP连接的非首个数据包,并将修改后的数据包传递给当前第二进程的用户态协议栈,否则直接释放所述TCP连接的非首个数据包。
进一步的,还包括:
通过第二进程从本进程的用户态协议栈中获取数据包;以该数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则按照第二修改信息项的内容修改该数据包,并将修改后的数据包发送到网卡的输出队列,否则直接将获取的数据包发送到网卡的输出队列。
进一步的,以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在所述第一修改信息项,是则将该数据包的目的IP 修改为第一修改信息项中的IP修改信息项的值,将该数据包的目的MAC修改为第一修改信息项中的MAC修改信息项的值;
以第二进程从本进程的用户态协议栈中获取的数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则将该数据包的源IP修改为第二修改信息项中的IP修改信息项的值,将该数据包的源MAC修改为第二修改信息项中的MAC修改信息项的值。
本发明的第二方面,提供了一种反向代理模式下的防火墙多进程处理装置,包括:
第一数据采集和分流模块,被配置为通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的SYN数据包,计算SYN数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述SYN数据包插入到以所述ID值命名的无锁环形队列中;
第一预处理模块,被配置为通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的SYN数据包;向该第二进程维护的第一哈希链表和第二哈希链表中分别添加修改信息项;将SYN数据包的目的IP修改为第二进程IP,并将SYN数据包的目的MAC修改为虚拟网卡MAC;将修改后的SYN数据包传递给第二进程的用户态协议栈;其中,所述第一哈希链表记录进入用户态协议栈的修改信息项,所述第二哈希链表记录由用户态协议栈外发数据包的修改信息项。
进一步的,所述第一预处理模块被进一步配置为:
以TCP连接的SYN数据包四元组作为哈希函数的键值,在所述第一哈希链表中添加第一链表信息项和第一修改信息项,其中,第一链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为SYN数据包源IP,将源端口赋值为SYN数据包源端口,将目的IP赋值为SYN数据包目的IP,将目的端口赋值为SYN数据包目的端口;所述第一修改信息项包括IP修改信息项和MAC修改信息项,将第二进程IP赋值给IP修改信息项,将虚拟网卡MAC赋值给MAC修改信息项;
以用户态协议栈外发数据包四元组作为哈希函数的键值,在所述第二哈希链表中添加第二链表信息项和第二修改信息项,其中,第二链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为第二进程IP,将源端口赋值为数据包目的端口,将目的IP赋值为数据包源IP,将目的端口赋值为数据包源端口;所述第二修改信息项包括IP修改信息项和MAC修改信息项,将数据包目的IP赋值给IP修改信息项,将数据包目的MAC赋值给MAC修改信息项。
进一步的,还包括:
第二数据采集和分流模块,被配置为通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的非首个数据包,计算SYN数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述TCP连接的非首个数据包插入到以所述ID值命名的无锁环形队列中;
第二预处理模块,被配置为通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的非首个数据包;以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在所述第一修改信息项,是则按照该第一修改信息项修改所述TCP连接的非首个数据包,并将修改后的数据包传递给当前第二进程的用户态协议栈,否则直接释放所述TCP连接的非首个数据包。
进一步的,还包括业务数据处理模块,被配置为:
通过第二进程从本进程的用户态协议栈中获取数据包;以该数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则按照第二修改信息项修改该数据包,并将修改后的数据包发送到网卡的输出队列,否则直接将获取的数据包发送到网卡的输出队列。
进一步的,所述第二预处理模块被进一步配置为:以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在所述第一修改信息项,是则将该数据包的目的IP 修改为第一修改信息项中的IP修改信息项的值,将该数据包的目的MAC修改为第一修改信息项中的MAC修改信息项的值;
所述业务数据处理模块被进一步配置为:以第二进程从本进程的用户态协议栈中获取的数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则将该数据包的源IP修改为第二修改信息项中的IP修改信息项的值,将该数据包的源MAC修改为第二修改信息项中的MAC修改信息项的值。
本发明提供的一种反向代理模式下的防火墙多进程处理方法和装置,在反向代理工作在多进程并发连接应用时,解决了不同代理进程与同一服务器端口进行代理连接可能会出现的会话冲突问题,本发明可以灵活调整业务处理进程(slaver进程)的个数,反向代理部署模式的应用防火墙系统并发性高,扩展能力强。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是现有技术中反向代理部署模式下的应用防火墙的系统参考图;
图2是本发明一个实施例提供的反向代理模式下的防火墙多进程处理方法中反向代理设备连接反向代理的TCP 连接的SYN首个数据包的流程图;
图3是本发明一个实施例提供的反向代理部署模式的应用防火墙多进程间的数据流图;
图4是本发明一个实施例提供的反向代理部署模式的应用防火墙多进程系统示意图;
图5是本发明一个实施例提供的反向代理部署模式的应用防火墙多进程处理双端TCP代理的示意图;
图6是本发明一个实施例提供的distributer进程(数据包采集和分流进程)的数据处理逻辑示意图;
图7是本发明一个实施例提供的slaver进程(业务数据处理进程)的数据处理逻辑示意图;
图8是本发明一个实施例提供的哈希链表的示意图;
图9是本发明另一实施例提供的反向代理模式下的防火墙多进程处理方法中反向代理设备连接反向代理的TCP连接非首包的流程图;
图10是本发明另一实施例提供的反向代理模式下的防火墙多进程处理方法中slaver进程回应反向代理设备的TCP连接数据包的流程图;
图11是本发明一个实施例提供的一种反向代理模式下的防火墙多进程处理装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述获取模块,但这些获取模块不应限于这些术语。这些术语仅用来将获取模块彼此区分开。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
需要注意的是,本发明实施例所描述的“上”、“下”、“左”、“右”等方位词是以附图所示的角度来进行描述的,不应理解为对本发明实施例的限定。此外在上下文中,还需要理解的是,当提到一个元件被形成在另一个元件“上”或“下”时,其不仅能够直接形成在另一个元件“上”或者“下”,也可以通过中间元件间接形成在另一元件“上”或者“下”。
反向代理部署模式是应用防火墙常见的部署模式之一,反向代理部署模式下的应用防火墙接收来自反向代理设备的请求,把请求发送给应用服务器,并将应用服务器的返回结果发送给反向代理设备,图1以数据库代理为例展示了反向代理部署模式下应用防火墙的系统结构。然而,现有技术的应用防火墙系统不同代理工作进程与相同应用服务器端口通信会造成会话冲突,防火墙扩展能力较差,处理并发连接性能低、稳定性差。
为了解决上述技术问题,本实施例提供了一种反向代理模式下的防火墙多进程处理方法。该方法示例性的通过数据平面开发套件DPDK,对数据包进行过滤、收发、分流,利用多队列技术创建多个工作进程,使用f-stack用户态协议栈为每个代理工作进程创建独立虚拟网卡并设置不同的IP地址,消除不同代理工作进程因与相同应用服务器端口通信而造成会话冲突的可能性,进而极大的提高了反向代理部署模式应用防火墙的扩展能力和处理并发连接性能。
参见图2,该方法包括反向代理设备连接反向代理的TCP 连接的SYN首个数据包的步骤:
步骤S101,通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的SYN数据包,计算SYN数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述SYN数据包插入到以所述ID值命名的无锁环形队列中。
为了更清楚的理解上述步骤S101,参见图3。本实施例将业务网卡接收单元Rx划分1个接收队列,发送单元Tx划分n个发送队列。通过1个distributer进程负责DPDK资源的初始化、从业务网卡的Rx队列采集数据包、使用特定的分流算法把业务数据分发到不同的DPDK ring(无锁环形队列),根据DPDK ring的名称,n-1个slaver进程从特定的DPDK ring中提取业务数据进行处理。n个进程分别对应1个Tx发送队列,待发送的业务数据从该Tx队列发送。
为了高效实现本发明的数据处理方法,本实施例示例性的采用了数据平面开发套件DPDK,其是一种高效的网络转发框架,并通过用户态协议栈f-stack提供了对数据包进行拆解分析的网络协议栈能力,f-stack的每个进程都拥有单独协议栈,使用f-stack所提供的接口,为每个进程添加独立的虚拟网卡并配置IP地址。其中,本实施例的distributer进程(即数据包采集和分流进程)配置应用反向代理设备待连接IP地址(即反向代理IP 地址),每个slaver进程(即业务数据处理进程)配置不相同IP地址,这些IP地址都可以连接应用服务器。
参见图4,应用反向代理设备访问distributer进程(反向代理IP地址:192.168.8.112),distributer进程采集数据包并分流给各slaver进程(IP地址:192.168.8.113等),slaver进程在预处理数据包后把数据传递给本进程f-stack用户态协议栈,完成与反向代理设备的左侧连接建立,然后该slaver进程再完成与应用服务器右侧连接的建立,至此一条双端代理建立完成。后续反向代理设备通过左侧连接发送请求,slaver进程通过右侧连接把请求转发给应用服务器,应用服务器通过右侧连接把响应发送给slaver进程,slaver进程再通过左侧连接把响应发送给反向代理设备。
参见图5,本实施例的反向代理部署模式的应用防火墙多进程处理双端TCP代理的数据流,一条双端TCP代理分为左侧连接和右侧连接,左侧连接是应用反向代理设备到反向代理的连接,右侧连接是反向代理到应用服务器的连接。
本实施例反向代理部署模式的应用防火墙是多进程运行方式,1个distributer进程和n-1个slaver进程。反向代理的每个进程都需要能够处理来自反向代理设备/服务器的ARP(地址解析协议)数据包,icmp(Internet控制报文协议)数据包,TCP(传输控制协议)数据包。
具体到上述步骤S101,它是利用distributer进程(即第一进程)实现数据包采集和分流的步骤。distributer进程的数据包处理逻辑参见图6所示,distributer进程从网卡的Rx队列获取数据包,反向代理左/右两侧ARP数据包目标IP是distributer IP、左/右两侧icmp数据包目的IP是distributer IP,这些数据直接由本distributer进程的用户态协议栈f-stack处理。左/右两侧ARP数据包目标IP是slaver ip、左/右两侧icmp数据包目的IP是slaver ip、右侧tcp数据包目的IP是slaver ip,这些数据根据slaver ip分流给特定的slaver进程(第二进程)处理。左侧TCP数据包目的IP是distributer IP,这些数据根据四元组的哈希值,分流到特定slaver进程处理。
具体的,在步骤S101中,distributer进程从业务网卡Rx队列获取到该TCP连接的SYN首个数据包,再利用DPDK提供的rte_softrss函数计算该数据包四元组的哈希值,通过该哈希值对slaver进程个数取余数,从而得到当前slaver进程的ID值,distributer进程把该SYN数据包插入到由当前slaver进程的ID值命名的DPDK ring(无锁环形队列)中,等待后续的slaver进程读取和处理。
步骤S102,通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的SYN数据包;向该第二进程维护的第一哈希链表和第二哈希链表中添加链表信息项和修改信息项;SYN数据包的目的IP修改为第二进程IP,并将SYN数据包的目的MAC修改为虚拟网卡MAC;将修改后的SYN数据包传递给第二进程的用户态协议栈;其中,所述第一哈希链表记录进入用户态协议栈的修改信息项,所述第二哈希链表记录由用户态协议栈外发数据包的修改信息项。
上述步骤是slaver进程(第二进程)在业务数据处理之前进行预处理的步骤。参见图7,当前slaver进程从与其ID值对应一致的DPDK ring中获取数据包,反向代理左/右两侧ARP目标IP、icmp目的IP是当前slaver 进程的IP,右侧TCP数据包目的IP是当前slaver进程的IP,这些数据直接由当前slaver进程的用户态协议栈f-stack处理。然而,左侧TCP数据包目的IP是distributer IP(第一进程IP),不是当前slaver 进程的IP(第二进程IP),目的MAC也不是当前slaver进程虚拟网卡的MAC,因此需要对数据包进行预处理,以使当前slaver进程能够对这些数据进行处理。
具体的预处理过程包括:
1、当数据包是左侧TCP连接的第一个数据包(SYN首包)时,以该数据包四元组作为哈希函数的键值key,在第一哈希链表中添加链表信息项和修改信息项,其中,链表信息项包括:源IP、源端口、目的IP和目的端口。将数据包源IP赋值给源IP(pkt.src_ip赋给src_ip);将数据包源端口赋值给源端口(pkt.src_port赋给src_port);将数据包目的IP赋值给目的IP(pkt.dst_ip赋给dst_ip);将数据包目的端口赋值给目的端口(pkt.dst_port赋给dst_port)。其中,修改信息项包括IP修改信息项和MAC修改信息项,将第二进程IP赋值给IP修改信息项(slaver ip赋值给change_ip),将虚拟网卡MAC赋值给MAC修改信息项(虚拟网卡mac赋值给change_mac)。这是因为正常协议栈(网卡/IP)处理数据,都只处理自己IP和MAC的数据,然而,slaver进程获取的初始数据的IP/MAC不是本进程的,所以需要改为本进程的IP/MAC,slaver进程获取到的数据包的IP/MAC都是distributer进程的IP/MAC,而slaver进程有自己的IP/MAC,因此需要对其进行修改。
2、以用户态协议栈外发数据包四元组作为哈希函数的键值,在第二哈希链表中添加链表信息项和修改信息项,其中,链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为第二进程IP(slaver ip赋值给src_ip),将源端口赋值为数据包目的端口(pkt.dst_port赋值给src_port),将目的IP赋值为数据包源IP(pkt.src_ip赋值给dst_ip),将目的端口赋值为数据包源端口(pkt.src_port赋值给dst_port);所述第二修改信息项包括IP修改信息项和MAC修改信息项,将数据包目的IP赋值给IP修改信息项(pkt.dst_ip赋值给change_ip),将数据包目的MAC赋值给MAC修改信息项(pkt.dst_mac赋值给change_mac)。
3、将SYN数据包的目的IP修改为第二进程IP,并将SYN数据包的目的MAC修改为虚拟网卡MAC,将修改后的SYN数据包传递给第二进程的用户态协议栈。
需要指出的是,所述第一哈希链表记录进入用户态协议栈的修改信息项,所述第二哈希链表记录由用户态协议栈外发数据包的修改信息项。参见图8,哈希链表由一个个节点组成,每个节点至少包含6个数据项,其中4个数据项做哈希键值key(src_ip、src_port、dst_ip、dst_port),另外2个数据项是需要篡改的数据项取值(change_ip、change_mac),当一条连接的后续数据(非首包)到来时,先拿后续数据的四元组做key,在链表中查找是否存在修改项信息。如果查到有修改信息,按照修改信息项修改这些后续数据。也就是说,连接的第一个数据包在哈希链表插入链表信息项和修改信息项,当后续数据包到来时,查找哈希链表,按照哈希链表的信息修改这些后续到来的数据,然后发给用户态协议栈f-stack处理。上述两个哈希链表起的作用就是记录如何修改信息项,只不过第一哈希链表记录进入用户态协议栈的修改信息项,第二哈希链表记录由用户态协议栈外发数据包的修改信息项。
参见图9,本实施例的方法还包括反向代理设备连接反向代理的TCP连接非首包的处理过程:
步骤S103,通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的非首个数据包,计算SYN数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述TCP连接的非首个数据包插入到以所述ID值命名的无锁环形队列中;
上述步骤S103和步骤S101的分流处理过程基本相同,此处不再赘述。
步骤S104,通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的非首个数据包;以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在第一修改信息项,是则按照该第一修改信息项修改所述TCP连接的非首个数据包,并将修改后的数据包传递给当前第二进程的用户态协议栈,否则直接释放所述TCP连接的非首个数据包(即不再对数据包进行处理)。
具体的,当一条TCP连接的后续数据(非首包)到来时,先拿后续数据的四元组作为键值key,在第一哈希链表中查找是否存在修改项信息。如果查到有修改信息,按照修改信息项篡改这些后续数据(例如:按照修改信息项的内容,修改数据包的dst_ip为change_ip,修改dst_mac为change_mac,把修改后的数据包发送给本进程f-stack处理)。也就是说,连接的第一个数据包在哈希链表插入链表信息项和修改信息项,当后续数据包到来时,查找第一哈希链表,按照第一哈希链表的信息修改这些后续到来的数据,然后发给用户态协议栈f-stack处理。若没有查询到修改信息项,则直接释放所述TCP连接的非首个数据包。
参见图10,本实施例的方法还包括slaver进程回应反向代理设备的TCP连接数据包的处理过程:
步骤S105,通过第二进程从本进程的用户态协议栈中获取数据包;以该数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则按照第二修改信息项修改该数据包,并将修改后的数据包发送到网卡的输出队列,否则直接将获取的数据包发送到网卡的输出队列。
具体的,slaver进程从本进程的f-stack获取数据包,以此数据包四元组作键值key查找第二哈希链表,若查询到对应的修改信息项,则按照信息项修改此数据包(例如:修改数据包的src_ip为change_ip,修改src_mac为change_mac,修改后的数据包由本进程的网卡Tx对外发送),把修改后的数据包发送到网卡的Tx队列,若查询不到对应的修改信息项,直接把数据包发送到网卡的Tx队列。
本实施例提供的反向代理模式下的防火墙多进程处理方法,在反向代理工作在多进程并发连接应用时,解决了不同代理进程与同一服务器端口进行代理连接可能会出现的会话冲突问题。利用系统CPU、内存硬件资源可以灵活调整slaver进程个数,本发明反向代理部署模式的应用防火墙系统并发性高,扩展能力强。
参见图11,本发明的另一实施例还提供了一种反向代理模式下的防火墙多进程处理装置200,包括:第一数据采集和分流模块201、第一预处理模块202、第二数据采集和分流模块203、第二预处理模块204、业务数据处理模块205。该反向代理模式下的防火墙多进程处理装置200用于执行上述方法实施例中的反向代理模式下的防火墙多进程处理方法。
具体的,反向代理模式下的防火墙多进程处理装置200,包括
第一数据采集和分流模块201,被配置为通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的SYN数据包,计算SYN数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述SYN数据包插入到以所述ID值命名的无锁环形队列中;
第一预处理模块202,被配置为通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的SYN数据包;向该第二进程维护的第一哈希链表和第二哈希链表中添加链表信息项和修改信息项;SYN数据包的目的IP修改为第二进程IP,并将SYN数据包的目的MAC修改为虚拟网卡MAC;将修改后的SYN数据包传递给第二进程的用户态协议栈;其中,所述第一哈希链表记录进入用户态协议栈的修改信息项,所述第二哈希链表记录由用户态协议栈外发数据包的修改信息项;
所述第一预处理模块202被进一步配置为:
以TCP连接的SYN数据包四元组作为哈希函数的键值,在所述第一哈希链表中添加第一链表信息项和第一修改信息项,其中,第一链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为SYN数据包源IP,将源端口赋值为SYN数据包源端口,将目的IP赋值为SYN数据包目的IP,将目的端口赋值为SYN数据包目的端口;所述第一修改信息项包括IP修改信息项和MAC修改信息项,将第二进程IP赋值给IP修改信息项,将虚拟网卡MAC赋值给MAC修改信息项;
以用户态协议栈外发数据包四元组作为哈希函数的键值,在所述第二哈希链表中添加第二链表信息项和第二修改信息项,其中,第二链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为第二进程IP,将源端口赋值为数据包目的端口,将目的IP赋值为数据包源IP,将目的端口赋值为数据包源端口;所述第二修改信息项包括IP修改信息项和MAC修改信息项,将数据包目的IP赋值给IP修改信息项,将数据包目的MAC赋值给MAC修改信息项。
还包括第二数据采集和分流模块203,被配置为通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的非首个数据包,计算SYN数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述TCP连接的非首个数据包插入到以所述ID值命名的无锁环形队列中;
第二预处理模块204,被配置为通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的非首个数据包;以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在修改信息项,是则按照该修改信息项修改所述TCP连接的非首个数据包,并将修改后的数据包传递给当前第二进程的用户态协议栈,否则直接释放所述TCP连接的非首个数据包;
还包括业务数据处理模块205,被配置为通过第二进程从本进程的用户态协议栈中获取数据包;以该数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则按照第二修改信息项修改该数据包,并将修改后的数据包发送到网卡的输出队列,否则直接将获取的数据包发送到网卡的输出队列。
所述第二预处理模块204被进一步配置为:以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在所述第一修改信息项,是则将该数据包的目的IP 修改为第一修改信息项中的IP修改信息项的值,将该数据包的目的MAC修改为第一修改信息项中的MAC修改信息项的值;
所述业务数据处理模块205被进一步配置为:以第二进程从本进程的用户态协议栈中获取的数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则将该数据包的源IP修改为第二修改信息项中的IP修改信息项的值,将该数据包的源MAC修改为第二修改信息项中的MAC修改信息项的值。
需要说明的是,本实施例提供的装置200对应的可用于执行各方法实施例的技术方案,其实现原理和技术效果与方法类似,此处不再赘述。
以上描述仅为本发明的较佳实施例。
本领域技术人员应当理解,本发明中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种反向代理模式下的防火墙多进程处理方法,其特征在于,包括如下步骤:
通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的SYN数据包,计算SYN数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述SYN数据包插入到以所述ID值命名的无锁环形队列中;
通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的SYN数据包;向该第二进程维护的第一哈希链表和第二哈希链表中添加链表信息项和修改信息项;将SYN数据包的目的IP修改为第二进程IP,并将SYN数据包的目的MAC修改为虚拟网卡MAC;将修改后的SYN数据包传递给第二进程的用户态协议栈;其中,所述第一哈希链表记录进入用户态协议栈的修改信息项,所述第二哈希链表记录由用户态协议栈外发数据包的修改信息项。
2.根据权利要求1所述的一种反向代理模式下的防火墙多进程处理方法,其特征在于:
以TCP连接的SYN数据包四元组作为哈希函数的键值,在所述第一哈希链表中添加第一链表信息项和第一修改信息项,其中,第一链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为SYN数据包源IP,将源端口赋值为SYN数据包源端口,将目的IP赋值为SYN数据包目的IP,将目的端口赋值为SYN数据包目的端口;所述第一修改信息项包括IP修改信息项和MAC修改信息项,将第二进程IP赋值给IP修改信息项,将虚拟网卡MAC赋值给MAC修改信息项;
以用户态协议栈外发数据包四元组作为哈希函数的键值,在所述第二哈希链表中添加第二链表信息项和第二修改信息项,其中,第二链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为第二进程IP,将源端口赋值为数据包目的端口,将目的IP赋值为数据包源IP,将目的端口赋值为数据包源端口;所述第二修改信息项包括IP修改信息项和MAC修改信息项,将数据包目的IP赋值给IP修改信息项,将数据包目的MAC赋值给MAC修改信息项。
3.根据权利要求2所述的一种反向代理模式下的防火墙多进程处理方法,其特征在于,还包括:
通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的非首个数据包,计算该数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述TCP连接的非首个数据包插入到以所述ID值命名的无锁环形队列中;
通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的非首个数据包;以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在所述第一修改信息项,是则按照该第一修改信息项修改所述TCP连接的非首个数据包,并将修改后的数据包传递给当前第二进程的用户态协议栈,否则直接释放所述TCP连接的非首个数据包。
4.根据权利要求3所述的一种反向代理模式下的防火墙多进程处理方法,其特征在于,还包括:
通过第二进程从本进程的用户态协议栈中获取数据包;以该数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则按照第二修改信息项的内容修改该数据包,并将修改后的数据包发送到网卡的输出队列,否则直接将获取的数据包发送到网卡的输出队列。
5.根据权利要求4所述的一种反向代理模式下的防火墙多进程处理方法,其特征在于:
以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在所述第一修改信息项,是则将该数据包的目的IP 修改为第一修改信息项中的IP修改信息项的值,将该数据包的目的MAC修改为第一修改信息项中的MAC修改信息项的值;
以第二进程从本进程的用户态协议栈中获取的数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则将该数据包的源IP修改为第二修改信息项中的IP修改信息项的值,将该数据包的源MAC修改为第二修改信息项中的MAC修改信息项的值。
6.一种反向代理模式下的防火墙多进程处理装置,其特征在于,包括:
第一数据采集和分流模块,被配置为通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的SYN数据包,计算SYN数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述SYN数据包插入到以所述ID值命名的无锁环形队列中;
第一预处理模块,被配置为通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的SYN数据包;向该第二进程维护的第一哈希链表和第二哈希链表中添加链表信息项和修改信息项;将SYN数据包的目的IP修改为第二进程IP,并将SYN数据包的目的MAC修改为虚拟网卡MAC;将修改后的SYN数据包传递给第二进程的用户态协议栈;其中,所述第一哈希链表记录进入用户态协议栈的修改信息项,所述第二哈希链表记录由用户态协议栈外发数据包的修改信息项。
7.根据权利要求6所述的一种反向代理模式下的防火墙多进程处理装置,其特征在于,所述第一预处理模块被进一步配置为:
以TCP连接的SYN数据包四元组作为哈希函数的键值,在所述第一哈希链表中添加第一链表信息项和第一修改信息项,其中,第一链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为SYN数据包源IP,将源端口赋值为SYN数据包源端口,将目的IP赋值为SYN数据包目的IP,将目的端口赋值为SYN数据包目的端口;所述第一修改信息项包括IP修改信息项和MAC修改信息项,将第二进程IP赋值给IP修改信息项,将虚拟网卡MAC赋值给MAC修改信息项;
以用户态协议栈外发数据包四元组作为哈希函数的键值,在所述第二哈希链表中添加第二链表信息项和第二修改信息项,其中,第二链表信息项包括源IP、源端口、目的IP和目的端口,将源IP赋值为第二进程IP,将源端口赋值为数据包目的端口,将目的IP赋值为数据包源IP,将目的端口赋值为数据包源端口;所述第二修改信息项包括IP修改信息项和MAC修改信息项,将数据包目的IP赋值给IP修改信息项,将数据包目的MAC赋值给MAC修改信息项。
8.根据权利要求7所述的一种反向代理模式下的防火墙多进程处理装置,其特征在于,还包括:
第二数据采集和分流模块,被配置为通过反向代理设备的第一进程从网卡的接收队列获取TCP连接的非首个数据包,计算SYN数据包中四元组的哈希值,将该哈希值和第二进程的数量相除的余数作为第二进程的ID值,将所述TCP连接的非首个数据包插入到以所述ID值命名的无锁环形队列中;
第二预处理模块,被配置为通过反向代理设备中具有所述ID值的第二进程从名称为所述ID值的无锁环形队列中获取所述TCP连接的非首个数据包;以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在所述第一修改信息项,是则按照该第一修改信息项修改所述TCP连接的非首个数据包,并将修改后的数据包传递给当前第二进程的用户态协议栈,否则直接释放所述TCP连接的非首个数据包。
9.根据权利要求8所述的一种反向代理模式下的防火墙多进程处理装置,其特征在于,还包括业务数据处理模块,被配置为:
通过第二进程从本进程的用户态协议栈中获取数据包;以该数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则按照第二修改信息项修改该数据包,并将修改后的数据包发送到网卡的输出队列,否则直接将获取的数据包发送到网卡的输出队列。
10.根据权利要求9所述的一种反向代理模式下的防火墙多进程处理装置,其特征在于:
所述第二预处理模块被进一步配置为:以所述TCP连接的非首个数据包四元组作为键值查询所述第一哈希链表中是否存在所述第一修改信息项,是则将该数据包的目的IP 修改为第一修改信息项中的IP修改信息项的值,将该数据包的目的MAC修改为第一修改信息项中的MAC修改信息项的值;
所述业务数据处理模块被进一步配置为:以第二进程从本进程的用户态协议栈中获取的数据包四元组作为键值查询第二哈希链表中是否存在对应的第二修改信息项,是则将该数据包的源IP修改为第二修改信息项中的IP修改信息项的值,将该数据包的源MAC修改为第二修改信息项中的MAC修改信息项的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310814393.9A CN116527410B (zh) | 2023-07-05 | 2023-07-05 | 一种反向代理模式下的防火墙多进程处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310814393.9A CN116527410B (zh) | 2023-07-05 | 2023-07-05 | 一种反向代理模式下的防火墙多进程处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116527410A true CN116527410A (zh) | 2023-08-01 |
CN116527410B CN116527410B (zh) | 2023-09-26 |
Family
ID=87408634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310814393.9A Active CN116527410B (zh) | 2023-07-05 | 2023-07-05 | 一种反向代理模式下的防火墙多进程处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116527410B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109309626A (zh) * | 2018-09-10 | 2019-02-05 | 南京知常容信息技术有限公司 | 一种基于dpdk的高速网络数据包捕获分流及缓存方法 |
CN110768994A (zh) * | 2019-10-30 | 2020-02-07 | 中电福富信息科技有限公司 | 一种基于dpdk技术的提高sip网关性能的方法 |
CN111371779A (zh) * | 2020-02-29 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种基于dpdk虚拟化管理系统的防火墙及其实现方法 |
WO2020177246A1 (zh) * | 2019-03-04 | 2020-09-10 | 南京邮电大学 | 一种dpdk环境下基于nat的负载均衡方法 |
CN112702278A (zh) * | 2020-12-30 | 2021-04-23 | 恒安嘉新(北京)科技股份公司 | 一种负载均衡方法、汇聚分流器及存储介质 |
CN116170235A (zh) * | 2023-04-24 | 2023-05-26 | 北京中安星云软件技术有限公司 | 一种数据库优化访问方法、系统、设备及介质 |
-
2023
- 2023-07-05 CN CN202310814393.9A patent/CN116527410B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109309626A (zh) * | 2018-09-10 | 2019-02-05 | 南京知常容信息技术有限公司 | 一种基于dpdk的高速网络数据包捕获分流及缓存方法 |
WO2020177246A1 (zh) * | 2019-03-04 | 2020-09-10 | 南京邮电大学 | 一种dpdk环境下基于nat的负载均衡方法 |
CN110768994A (zh) * | 2019-10-30 | 2020-02-07 | 中电福富信息科技有限公司 | 一种基于dpdk技术的提高sip网关性能的方法 |
CN111371779A (zh) * | 2020-02-29 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种基于dpdk虚拟化管理系统的防火墙及其实现方法 |
CN112702278A (zh) * | 2020-12-30 | 2021-04-23 | 恒安嘉新(北京)科技股份公司 | 一种负载均衡方法、汇聚分流器及存储介质 |
CN116170235A (zh) * | 2023-04-24 | 2023-05-26 | 北京中安星云软件技术有限公司 | 一种数据库优化访问方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116527410B (zh) | 2023-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8005012B1 (en) | Traffic analysis of data flows | |
US9608841B2 (en) | Method for real-time synchronization of ARP record in RSMLT cluster | |
JP4759389B2 (ja) | パケット通信装置 | |
US8493871B2 (en) | End-to end analysis of transactions in networks with traffic-altering devices | |
WO2020135575A1 (zh) | 一种获取网络拓扑的系统、方法和服务器 | |
US7567561B2 (en) | Packet communication node apparatus with extension modules | |
US7607049B2 (en) | Apparatus and method for detecting network failure location | |
JP2005151509A (ja) | Vlanサーバ | |
US20050165885A1 (en) | Method and apparatus for forwarding data packets addressed to a cluster servers | |
US20110185022A1 (en) | Computer-readable medium storing system visualization processing program, method and device | |
US20030182440A1 (en) | Network processor with high-speed transceiver | |
CN103475586A (zh) | 网络数据报文的转发方法、装置及系统 | |
EP3065343B1 (en) | Network monitoring method and apparatus, and packet filtering method and apparatus | |
CN116527410B (zh) | 一种反向代理模式下的防火墙多进程处理方法和装置 | |
WO2002051077A1 (en) | A method and system for distinguishing higher layer protocols of the internet traffic | |
JP4758302B2 (ja) | ネットワークノード | |
US8819107B2 (en) | Relay apparatus, recording medium storing a relay program, and a relay method | |
CN106209666B (zh) | 一种基于负载均衡器的链路复用方法及系统 | |
CN111106977B (zh) | 数据流检测方法、装置及存储介质 | |
JP2003023464A (ja) | 時刻情報付パケット収集蓄積システム | |
CN114301960B (zh) | 集群非对称流量的处理方法及装置、电子设备及存储介质 | |
EP3068079B1 (en) | Monitoring communication in a network comprising a plurality of nodes | |
CN111935083B (zh) | 一种业务处理方法、装置、电子设备及存储介质 | |
US20030169764A1 (en) | Network device for sampling a packet | |
CN111586099B (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 |