CN113810397B - 协议数据的处理方法及装置 - Google Patents
协议数据的处理方法及装置 Download PDFInfo
- Publication number
- CN113810397B CN113810397B CN202111057065.6A CN202111057065A CN113810397B CN 113810397 B CN113810397 B CN 113810397B CN 202111057065 A CN202111057065 A CN 202111057065A CN 113810397 B CN113810397 B CN 113810397B
- Authority
- CN
- China
- Prior art keywords
- message
- user mode
- data
- module
- sending
- 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
Images
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/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- 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/16—Implementing security features at a particular protocol layer
- H04L63/168—Implementing security features at a particular protocol layer above the transport layer
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)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种协议数据的处理方法及装置。其中,该方法包括:通过用户态报文收发模块接收协议数据的报文;通过用户态代理组件将接收到的报文转发至加速芯片;接收加速芯片对报文进行解密后的应用层数据;将应用层数据发送给用户态应用模块;用户态应用模块处理完成的数据报文,传送给用户态代理组件;用户态代理组件将处理后的应用数据报文转发至加速芯片,接收加速芯片对报文进行加密后的应用层数据报文,并把此报文进一步传送给用户态报文收发模块;用户态报文收发模块发送协议数据报文。本发明解决了相关技术中的安全套接字协议SSL的操作***采用内核态进行报文转发,效率较低,通过CPU进行加解密计算,极大地消耗CPU资源的技术问题。
Description
技术领域
本发明涉及数据安全协议领域,具体而言,涉及一种协议数据的处理方法及装置。
背景技术
随着网络安全的重要性逐渐凸显,用户隐私以及数据泄露等网络安全危害事件层出不穷,为了保护敏感数据在互联网传送中的安全性,越来越多的网站或者应用会部署SSL隧道安全协议进行数据保护。SSL隧道带来的问题是,让处于原始的终端用户SSL客户端与原始的SSL服务器端之间的网络设备或者安全设备无法对SSL承载的应用层内容进行有效的监控,检查,过滤和统计等,这就需要网络设备或者安全设备提供SSL代理功能,从而能够解密HTTPS、POP3S、SMTPS和IMAPS等基于SSL的应用层协议,并对SSL承载的应用层协议内容提供应用安全处理,如应用识别,URL过滤,防病毒,IPS,关键字过滤,电子邮件过滤,文件过滤等。图1是现有技术中SSL代理的结构示意图,如图1所示,SSL代理功能可工作在如下两种场景。
第一种场景,当设备作为终端用户客户端一侧的网关时,SSL代理设备利用SSL代理证书替换原始的SSL服务器端的数字证书,并将SSL代理证书发送到原始的终端用户SSL客户端,在此过程中,SSL代理设备既作为SSL客户端和原始的SSL服务器端去建立SSL连接,同时SSL代理设备又作为SSL服务器和原始的终端用户SSL客户端建立SSL连接,从而SSL代理设备可以审查加密通信的明文内容是否存在安全威胁。其中,SSL代理证书是使用设备本身的证书对原始SSL服务器证书重新签发而成的证书。
第二种场景,当设备作为原始的SSL服务器一侧的网关时,SSL代理设备可充当原始的SSL服务器端,使用原始的SSL服务器端的证书与原始的终端用户SSL客户端建立SSL连接,并将解密后的流量以明文的方式发送到原始的内网SSL服务器端。
众所周知,SSL安全隧道建立需要消耗大量的CPU资源,同时作为网络设备或者安全设备的SSL代理,需要同时与原始的终端用户SSL客户端,与原始的SSL服务器端去建立SSL隧道连接,因此SSL代理设备很容易成为原始的SSL客户端与原始的SSL服务器端之间数据传输的性能瓶颈。针对目前SSL代理的性能问题,目前业界存在的一些方案,从不同角度解决了部分性能问题,例如:
1、无SSL加速芯片支持的SSL代理:利用CPU资源进行SSL隧道协议协商以及后续的应用数据加解密传输。
2、利用SSL加速芯片的SSL代理:SSL隧道协议与数据报文经过操作***的内核TCP/IP协议栈,通过socket被送到用户态的应用进程进行SSL隧道协商以及数据加解密处理,用户态的应用进程通过Epoll机制实现异步加解密支持。
当今的计算机网络环境SSL(安全套接字协议,Secure Sockets Layer)隧道盛行,承载在SSL隧道上的应用业务越来越多,利用CPU资源计算的SSL代理或者利用SSL加速芯片与内核TCP/IP协议栈的SSL代理,越来越不能满足日益增长的SSL隧道安全业务流量需求。相关技术中的安全套接字协议SSL的操作***采用内核态进行报文转发,效率较低,通过CPU进行加解密计算,极大地消耗CPU资源的技术问题。导致在实际部署中,SSL代理很难达到预期的性能与功能。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种协议数据的处理方法及装置,以至少解决相关技术中的安全套接字协议SSL的操作***采用内核态进行报文转发,效率较低,通过CPU进行加解密计算,极大地消耗CPU资源的技术问题。
根据本发明实施例的一个方面,提供了一种协议数据的处理方法,包括:通过用户态报文收发模块接收协议数据的报文;通过用户态代理组件将接收到的所述报文转发至加速芯片;通过用户态代理组件接收所述加速芯片对所述报文进行加解密后的应用层数据;通过用户态代理组件将所述应用层数据发送给用户态应用模块。
可选的,所述用户态代理组件包括第一用户态代理模块和第二用户态代理模块,通过用户态代理组件将接收到的所述报文发送给加速芯片包括:通过第一用户态代理模块接收所述报文;将所述报文存储在第一代理连接会话中;通过第二用户态代理模块从所述第一代理连接会话中获取所述报文;将所述报文发送给所述加速芯片。
可选的,将所述报文存储在第一代理连接会话中包括:确定所述报文的特征字段;根据所述特征字段查找对应的第一代理连接会话;在查找不到对应的第一代理连接会话的情况下,创建所述特征字段对应的第一代理连接会话;将所述报文存储在所述第一代理连接会话中。
可选的,通过第二用户态代理模块从所述第一代理连接会话中获取所述报文包括:建立所述第一用户态代理模块与所述第二用户态代理模块的第二代理连接会话;通过所述第二代理连接会话,从所述第一代理连接会话中获取所述报文。
可选的,将所述报文发送给所述加速芯片包括:通过所述第二用户态代理模块向所述加速芯片发送对所述报文的异步加解密请求,其中,所述加解密请求包括所述报文,所述报文为队列中的多个报文之一;通过用户态代理组件接收所述加速芯片对所述报文进行加解密后的应用层数据包括:通过所述第二用户态代理模块轮询所述加速芯片的异步加解密响应队列,获取所述报文对应的异步响应事件,其中,所述异步响应事件与获取所述报文的第二代理连接会话对应;根据所述异步响应事件生成所述应用层数据。
可选的,根据所述异步响应事件生成所述应用层数据包括:获取发送所述异步加解密请求时,所述报文的调用栈的位置,根据所述调用栈的位置;所述异步响应事件以及所述异步响应事件对应的所述第二代理连接会话的状态,确定所述异步响应事件的输出数据;在所述第二代理连接会话的状态为数据传输状态的情况下,将所述输出数据作为所述应用层数据。
可选的,通过用户态代理组件将所述应用层数据发送给用户态应用模块之后,还包括:通过所述第二用户态代理模块接收所述应用层的处理数据;将所述处理数据发送给所述加速芯片进行加解密,将加解密后的处理数据,发送给所述第一用户态代理模块;通过所述第一用户态代理模块发送给所述用户态报文收发模块;通过所述用户态报文收发模块发送所述处理数据。
可选的,在所述第二代理连接会话的状态为数据传输状态的情况下,将所述输出数据作为所述应用层数据包括:在所述输出数据被所述加速芯片解密的情况下,将所述输出数据作为所述应用层数据;将所述处理数据发送给所述加速芯片进行加解密,将加解密后的处理数据,发送给所述第一用户态代理模块包括:将所述处理数据发送给所述加速芯片进行加密,将加密后的处理数据发送给所述的第一用户态代理模块。
根据本发明实施例的另一方面,还提供了一种协议数据的处理装置,包括:用户态报文收发模块,用于接收协议数据的报文;用户态代理组件,用于将接收到的所述报文转发至加速芯片;接收所述加速芯片对所述报文进行加解密后的应用层数据;将所述应用层数据发送给用户态应用模块。
根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的协议数据的处理方法。
根据本发明实施例的另一方面,还提供了一种计算机存储介质,所述计算机存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机存储介质所在设备执行上述中任意一项所述的协议数据的处理方法。
在本发明实施例中,采用通过用户态报文收发模块接收协议数据的报文;通过用户态代理组件将接收到的报文转发至加速芯片;通过用户态代理组件接收加速芯片对报文进行加解密后的应用层数据;通过用户态代理组件将应用层数据发送给用户态应用模块的方式,利用用户态的报文收发模块和代理组件,将报文转发给加速芯片进行加解密,达到了通过集成的用户态装置,进行协议数据的处理,避免了报文在用户态和内核态之间频繁切换,实现高效数据处理的目的,从而实现了提高协议数据的处理效率,降低CPU的负担,减小对CPU资源的占用的技术效果,进而解决了相关技术中的安全套接字协议SSL的操作***采用内核态进行报文转发,效率较低,通过CPU进行加解密计算,极大地消耗CPU资源的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是现有技术中SSL代理的结构示意图;
图2是根据本发明实施例的一种协议数据的处理方法的流程图;
图3是根据本发明实施方式的相关技术的SSL代理的示意图;
图4是根据本发明实施方式的SSL代理的示意图;
图5是根据本发明实施方式的CPU和加速芯片的加密逻辑的示意图;
图6是根据本发明实施方式的SSL代理的流程图;
图7是根据本发明实施例的一种协议数据的处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种协议数据的处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图2是根据本发明实施例的一种协议数据的处理方法的流程图,如图2所示,该方法包括如下步骤:
步骤S202,通过用户态报文收发模块接收协议数据的报文;
步骤S204,通过用户态代理组件将接收到的报文转发至加速芯片;
步骤S206,通过用户态代理组件接收加速芯片对报文进行加解密后的应用层数据;
步骤S208,通过用户态代理组件将应用层数据发送给用户态应用模块。
通过上述步骤,采用通过用户态报文收发模块接收协议数据的报文;通过用户态代理组件将接收到的报文转发至加速芯片;通过用户态代理组件接收加速芯片对报文进行加解密后的应用层数据;通过用户态代理组件将应用层数据发送给用户态应用模块的方式,利用用户态的报文收发模块和代理组件,将报文转发给加速芯片进行加解密,达到了通过集成的用户态装置,进行协议数据的处理,避免了报文在用户态和内核态之间频繁切换,实现高效数据处理的目的,从而实现了提高协议数据的处理效率,降低CPU的负担,减小对CPU资源的占用的技术效果,进而解决了相关技术中的安全套接字协议SSL的操作***采用内核态进行报文转发,效率较低,通过CPU进行加解密计算,极大地消耗CPU资源的技术问题。
上述协议数据可以为该代理组件采用的传输协议,例如SSL安全套接字协议,该代理组件用于实现上述传输协议,通过该传输协议的数据作为上述协议数据,上述协议数据在不同的装置之间进行传输,包括输入端装置和输出端装置,根据协议的不同,在两个装置之间进行单向或者双向的数据传输。在输入装置进行输入时,以报文的形式进行数据输入,也即是上述协议数据的报文。
上述用户态报文收发模块,可以为***中央处理器CPU的一个功能模块,用于接收该协议数据的报文,通过用户态的报文收发模块,可以将该报文直接接收为用户态的数据。
上述用户态代理组件也可以为上述CPU的一个功能模块,与上述用户态报文收发模块相连,将该用户态报文收发模块接收的协议数据的报文,传输到该用户态代理组件,由该用户态代理组件将该该报文发给加速芯片进行加解密,接收加解密后的应用层数据,将该应用层数据发送给用户态应用模块,也即是协议数据的输出装置,由该用户态应用模块将协议数据输入应用程序,进行相关操作。
整个***的装置均为用户态,利用用户态的报文收发模块和代理组件,将报文转发给加速芯片进行加解密,达到了通过集成的用户态装置,进行协议数据的处理,避免了报文在用户态和内核态之间频繁切换,实现高效数据处理的目的,从而实现了提高协议数据的处理效率,降低CPU的负担,减小对CPU资源的占用的技术效果,进而解决了相关技术中的安全套接字协议SSL的操作***采用内核态进行报文转发,效率较低,通过CPU进行加解密计算,极大地消耗CPU资源的技术问题。
可选的,用户态代理组件包括第一用户态代理模块和第二用户态代理模块,通过用户态代理组件将接收到的报文发送给加速芯片包括:通过第一用户态代理模块接收报文;将报文存储在第一代理连接会话中;通过第二用户态代理模块从第一代理连接会话中获取报文;将报文发送给加速芯片。
上述用户态代理组件包括第一用户态代理模块和第二用户态代理模块。上述第一用户态代理模块可以为用户态TCP代理模块,上述第二用户态代理模块可以为用户态SSL代理模块,在实现SSL代理时,SSL隧道协议与数据报文经过操作***的内核TCP/IP协议栈,通过socket被送到用户态的应用进程进行SSL隧道协商以及数据加解密处理,用户态的应用进程通过Epoll机制实现异步加解密支持。也即是TCP代理是为了给SSL代理进行支持,辅助其工作。
上述第一用户态代理模块与上述用户态报文收发模块相连,接收用户态报文收发模块接收的报文,将报文存储在第一代理连接会话中。上述第二用户态代理模块与上述第一用户态代理模块相连,从第一用户态代理模块的第一代理连接会话中获取报文,将报文发送给加速芯片。
可选的,将报文存储在第一代理连接会话中包括:确定报文的特征字段;根据特征字段查找对应的第一代理连接会话;在查找不到对应的第一代理连接会话的情况下,创建特征字段对应的第一代理连接会话;将报文存储在第一代理连接会话中。
具体的,以第一用户态代理模块为用户态TCP代理模块为例,用户态TCP代理模块(如OFP TCP/IP协议栈开源库),接收IP报文,对于需要做SSL代理的TCP数据报文(如假设TCP端口443为SSL连接端口),基于TCP报文的特征字段(如5元组信息,源IP,目的IP,源端口,目的端口以及IP协议号),查找TCP代理连接会话(如果未找到,则创建新的TCP代理连接会话),同时调用SSL代理模块的回调函数,创建映射关联的SSL代理连接会话。最终根据从网卡接收到的原始TCP数据报文的特征字段(如5元组信息)找到关联的TCP代理连接会话,并把TCP数据报文缓存到此关联的TCP代理连接会话中。
可选的,通过第二用户态代理模块从第一代理连接会话中获取报文包括:建立第一用户态代理模块与第二用户态代理模块的第二代理连接会话;通过第二代理连接会话,从第一代理连接会话中获取报文。
上述第二代理连接会话与上述第一代理连接会话具有对应关系。通过第二代理连接会话,从第一代理连接会话中获取报文,可以遍历第二代理连接会话,从与其关联的第一代理连接中读取缓存的报文。
可选的,将报文发送给加速芯片包括:通过第二用户态代理模块向加速芯片发送对报文的异步加解密请求,其中,加解密请求包括报文,报文为队列中的多个报文之一;通过用户态代理组件接收加速芯片对报文进行加解密后的应用层数据包括:通过第二用户态代理模块轮询加速芯片的异步加解密响应队列,获取报文对应的异步响应事件,其中,异步响应事件与获取报文的第二代理连接会话对应;根据异步响应事件生成应用层数据。
通过第二用户态代理模块向加速芯片发送对报文的异步加解密请求,可以向用户态加速芯片驱动模块(如Intel QAT加速芯片以及引擎驱动)发送异步加解密请求,并记录当前调用栈的位置并发生用户态的执行上下文切换。
通过第二用户态代理模块轮询加速芯片的异步加解密响应队列,获取报文对应的异步响应事件,可以通过第二用户态代理模块采用启发式机制轮询用户态加速芯片驱动模块的异步加解密响应队列,并产生对应第二代理连接会话的异步响应事件。
可选的,根据异步响应事件生成应用层数据包括:获取发送异步加解密请求时,报文的调用栈的位置,根据调用栈的位置;异步响应事件以及异步响应事件对应的第二代理连接会话的状态,确定异步响应事件的输出数据;在第二代理连接会话的状态为数据传输状态的情况下,将输出数据作为应用层数据。
第二用户态代理模块针对每一个异步加解密响应事件以及此事件关联的第二代理连接会话的当前状态,恢复以前记录的调用栈位置并获取异步加解密响应事件的输出数据。
当第二代理连接会话处于握手协商状态时,则第二代理连接会话持续握手协商建立第二代理隧道,直到第二代理隧道成功建立,第二代理连接会话才会进入应用数据传输状态;当第二代理连接会话处于应用数据传输状态时,则对于解密后的明文应用数据流,通知用户态应用层模块处理解密后的明文数据。
可选的,通过用户态代理组件将应用层数据发送给用户态应用模块之后,还包括:通过第二用户态代理模块接收应用层的处理数据;将处理数据发送给加速芯片进行加解密,将加解密后的处理数据,发送给第一用户态代理模块;通过第一用户态代理模块发送给用户态报文收发模块;通过用户态报文收发模块发送处理数据。
上述用户态应用模块的数据可以通过第二用户态代理模块进行反向加解密,得到处理数据,通过第一用户态代理模块将处理数据传输给用户态报文收发模块,进行发送。
可选的,在第二代理连接会话的状态为数据传输状态的情况下,将输出数据作为应用层数据包括:在输出数据被加速芯片解密的情况下,将输出数据作为应用层数据;将处理数据发送给加速芯片进行加解密,将加解密后的处理数据,发送给第一用户态代理模块包括:将处理数据发送给加速芯片进行加密,将加密后的处理数据发送给的第一用户态代理模块。
具体的,在本实施例中,第二用户态代理模块向用户态应用模块发送数据时,需要从加速芯片中进行加密后传输,在第二用户态代理模块将用户态应用模块的数据向用户态报文收发模块发送时,需要从加速芯片中进行解密。
需要说明的是,本申请实施例还提供了一种可选的实施方式,下面对该实施方式进行详细说明。
图3是根据本发明实施方式的相关技术的SSL代理的示意图,如图3所示,目前已有的技术方案存在的主要问题:
A、利用操作***的内核态TCP/IP协议栈,作为用户态的应用进程交互应用数据报文的其中一环,在数据报文转发与传输中涉及到操作***与用户态的应用进程之间的数据拷贝,以及一系列***调用,SSL隧道连接新建速率以及SSL隧道应用数据的吞吐性能由于此设计架构制约,很难得到较大的改善与提高。
B、利用CPU资源进行加解密计算,极大的消耗CPU资源,SSL隧道连接新建速率以及SSL隧道应用数据的吞吐性能极大地受制于CPU资源限制。此方案对应的图3,移去虚线框中SSL加速卡部分。
本实施方式针对上述问题,提出了一种用户态集成的高性能SSL代理的架构与装置,在网络设备或者安全设备上,实现一种架构清晰,流程高效,技术可行的用户态集成的高性能SSL代理的架构与装置,本实施方式的***集成了用户态网卡驱动报文收发,用户态TCP/IP协议栈与SSL加速芯片异步加解密机制。此集成设计提高了CPU资源利用效率,加速了SSL非对称加解密隧道协商过程以及SSL对称加解密应用数据传输过程,从而极大地提高了SSL代理的整体处理性能与可扩展性,SSL代理连接会话的新建速率以及SSL代理连接会话的应用数据转发吞吐性能实现了质的飞跃。
本实施方式方案中所述的SSL代理性能增强分析如下:
采用了用户态集成的SSL代理设计,减少了报文在用户态与内核态的任务切换以及报文内存拷贝带来的额外开销。
采用了用户态网卡驱动收发队列与CPU核绑定的机制,减少了CPU执行进程级别上下文的频繁切换,同时提高了CPU指令缓存与数据缓存的利用效率。
利用SSL加速卡异步加解密机制,把加解密需要的大量计算任务让SSL加速卡去做,大大减轻了CPU负担,同时使用异步的加解密机制,CPU不需要阻塞等待SSL加解密请求的同步完成,提高了CPU的利用效率。
利用SSL加速卡逻辑多实例支持,CPU核与SSL加速卡逻辑实例绑定机制,实现了SSL加速卡加解密队列读写的无锁操作,提高了CPU多核并发处理能力。
利用启发式机制轮询SSL加速卡的异步加解密响应队列,提高了轮询效率以及轮询及时性,从而提高了报文转发效率。
图4是根据本发明实施方式的SSL代理的示意图,如图4所示,本实施方式的高性能SSL代理架构具体如下:
高性能SSL代理架构主要由三部分组成(图4中,用户态应用层处理部分仅是为了理解方便,不做单独的解释说明),首先是用户态网卡报文收发队列,这部分利用用户态网卡驱动直接从网卡收发报文。其次是用户态TCP/IP协议栈,由协议栈负责TCP报文的重组以及重传等处理。最后是用户态SSL代理,由SSL代理负责从用户态TCP/IP协议栈中读取TCP数据流,并根据SSL代理的当前状态,向SSL加速芯片发送异步加解密请求并轮询处理异步加解密响应。
本实施方式的高性能SSL代理技术设计方案的基本前提条件如下:
1.SSL软件架构支持针对SSL加速芯片的异步加解密机制,即CPU发出异步加解密请求,不需要同步等待加解密响应,这样可以极大地释放出CPU的等待时间。目前已有的异步加解密机制,主要是利用应用进程执行时,用户级别上下文切换机制来实现。如图5所示,CPU发送加解密请求与轮询加解密响应是异步的。
2.SSL加速芯片及其驱动支持逻辑层面的多实例,这样CPU多核即可在加解密时实现无锁的异步加解密队列操作。图5是根据本发明实施方式的CPU和加速芯片的加密逻辑的示意图,如图5所示,CPU的多个核与加解密实例之间为一一对应关系。
为了描述技术方案的方便性,以下用户态网卡驱动报文收发队列以Intel DPDK为例,用户态TCP/IP协议栈以OFP为例,SSL以支持Intel QAT加速引擎的OpenSSL为例,SSL加速卡以Intel QAT SSL加速卡为例。
图6是根据本发明实施方式的SSL代理的流程图,如图6所示,本实施方式的高性能SSL代理的完整解决方案的具体步骤如下:
a.用户态网卡驱动报文收发模块(如Intel DPDK开源库)接收进入网卡报文,并缓存到此网卡报文接收队列。
b.用户态TCP代理模块(如OFP TCP/IP协议栈开源库),从网卡接收队列接收IP报文,对于需要做SSL代理的TCP数据报文(如假设TCP端口443为SSL连接端口),则基于TCP报文的特征字段(如5元组信息,源IP,目的IP,源端口,目的端口以及IP协议号),查找TCP代理连接会话(如果未找到,则创建新的TCP代理连接会话),同时调用SSL代理模块的回调函数,创建映射关联的SSL代理连接会话。最终根据从网卡接收到的原始TCP数据报文的特征字段(如5元组信息)找到关联的TCP代理连接会话,并把TCP数据报文缓存到此关联的TCP代理连接会话中。
c.用户态SSL代理模块(如OpenSSL开源库)遍历SSL代理连接会话,从与其关联的TCP代理连接中读取缓存的TCP数据报文,并根据当前SSL代理连接会话的状态,执行SSL代理连接会话的状态机并调用OpenSSL加解密接口函数。
d.用户态SSL代理模块在调用上一步的OpenSSL加解密接口函数过程中,向用户态加速芯片驱动模块(如Intel QAT加速芯片以及引擎驱动)发送异步加解密请求,记录当前调用栈的位置并发生用户态的执行上下文切换。
e.用户态SSL代理模块采用启发式机制轮询用户态加速芯片驱动模块的异步加解密响应队列,并产生对应SSL代理连接会话的异步响应事件。
f.用户态SSL代理模块针对每一个异步加解密响应事件以及此事件关联的SSL代理连接会话的当前状态,恢复以前记录的调用栈位置并获取异步加解密响应事件的输出数据,继续执行SSL代理连接会话的状态机。当SSL代理连接会话处于握手协商状态时,则SSL代理连接会话持续握手协商建立SSL代理隧道,直到SSL代理隧道成功建立,SSL代理连接会话才会进入应用数据传输状态;当SSL代理连接会话处于应用数据传输状态时,则对于解密后的明文应用数据流,通知用户态应用层模块处理解密后的明文数据,反之,对于加密后的密文应用数据流,通知用户态TCP代理模块发送密文应用数据流。
g.用户态应用层模块根据解密后的明文应用数据流,继续进行相应的协议解析与协议识别处理,并根据相关应用协议的策略配置,分别进行相应的应用层协议处理(如IPS/AV/AI/NBC/URL Filter/Email Filter等),同时输出应用层处理后的明文应用数据流。
h.用户态SSL代理模块根据应用层处理模块输出的明文应用数据,并根据当前SSL代理连接会话的状态,再次执行SSL代理连接会话的状态机并调用OpenSSL加解密接口函数。
i.同步骤d。
j.同步骤e。
k.同步骤f。
l.用户态TCP代理模块收到来自用户态SSL代理模块的SSL隧道协商报文或者密文应用数据流,进行TCP相关的处理(如TCP分段以及重传等)。
m.用户态网卡驱动报文收发模块接收来自用户态TCP代理模块发送过来的IP报文,并放入网卡报文发送队列。
n.用户态网卡驱动报文收发模块,最终通过网卡接口向外发送IP数据报文。
本实施方式适用于网络设备(包括但不限于网络流量安全设备、网络数据转发设备、网络流量分析设备、网络流量管理设备,如FW/NGFW、IDS/IPS、WAF、ADC、BDS、Router等等),同时适用于虚拟化网络功能或者虚拟化网络设备,包括但不限于虚拟化网络流量安全功能或者设备、虚拟化网络数据转发功能或者设备,虚拟化网络流量分析功能或者设备,虚拟化网络流量管理功能或者设备,如vFW/vNGFW、vIDS/vIPS、vWAF、vADC、vBDS、vRouter等等。
本实施方式的***集成了用户态网卡驱动报文收发、用户态TCP/IP协议栈以及SSL加速卡,从架构层面设计了高性能SSL代理。为用户提供了高性能且高性价比的SSL代理技术解决方案。
1.适用范围比较广:适用于裸机、虚拟化、容器平台等多种网络设备或者安全设备或者网络功能软件或者网络安全软件。
2.扩展性强:随着CPU核数增加以及SSL加速芯片的增强,SSL代理的性能可以达到线性增加。
3.性能提升显著:此设计架构可以为SSL代理连接会话的新建速率以及SSL代理连接会话的应用数据转发吞吐性能,带来非常显著的性能提升。
本实施方式利用用户态网卡驱动报文收发,用户态TCP/IP协议栈以及SSL加速卡相集成的用户态SSL高性能代理的总体架构技术设计方案。利用以上SSL高性能代理的总体架构技术设计方案在各种网络设备或者安全设备,网络功能或者安全功能,网络软件或者安全软件,网络平台或者安全平台上的应用。这里的设备/功能/软件/平台,包括物理环境,虚拟化环境以及容器环境等各种场合的目标主体。
图7是根据本发明实施例的一种协议数据的处理装置的示意图,如图7所示,根据本发明实施例的另一方面,还提供了一种协议数据的处理装置,包括:用户态报文收发模块72和用户态代理组件74,下面对该装置进行详细说明。
用户态报文收发模块72,用于接收协议数据的报文;用户态代理组件74,与上述用户态报文收发模块72相连,用于将接收到的报文转发至加速芯片;接收加速芯片对报文进行加解密后的应用层数据;将应用层数据发送给用户态应用模块。
通过上述装置,采用通过用户态报文收发模块接收协议数据的报文;通过用户态代理组件将接收到的报文转发至加速芯片;通过用户态代理组件接收加速芯片对报文进行加解密后的应用层数据;通过用户态代理组件将应用层数据发送给用户态应用模块的方式,利用用户态的报文收发模块和代理组件,将报文转发给加速芯片进行加解密,达到了通过集成的用户态装置,进行协议数据的处理,避免了报文在用户态和内核态之间频繁切换,实现高效数据处理的目的,从而实现了提高协议数据的处理效率,降低CPU的负担,减小对CPU资源的占用的技术效果,进而解决了相关技术中的安全套接字协议SSL的操作***采用内核态进行报文转发,效率较低,通过CPU进行加解密计算,极大地消耗CPU资源的技术问题。
根据本发明实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述中任意一项的协议数据的处理方法。
根据本发明实施例的另一方面,还提供了一种计算机存储介质,计算机存储介质包括存储的程序,其中,在程序运行时控制计算机存储介质所在设备执行上述中任意一项的协议数据的处理方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种协议数据的处理方法,其特征在于,包括:
通过用户态报文收发模块接收协议数据的报文;
通过用户态代理组件将接收到的所述报文转发至加速芯片;
通过用户态代理组件接收所述加速芯片对所述报文进行加解密后的应用层数据;
通过用户态代理组件将所述应用层数据发送给用户态应用模块;
其中,所述用户态代理组件包括第一用户态代理模块和第二用户态代理模块,通过用户态代理组件接收所述加速芯片对所述报文进行加解密后的应用层数据包括:
通过所述第二用户态代理模块轮询所述加速芯片的异步加解密响应队列,获取所述报文对应的异步响应事件,其中,所述异步响应事件与获取所述报文的第二代理连接会话对应;
根据所述异步响应事件生成所述应用层数据。
2.根据权利要求1所述的方法,其特征在于,通过用户态代理组件将接收到的所述报文发送给加速芯片包括:
通过所述第一用户态代理模块接收所述报文;
将所述报文存储在第一代理连接会话中;
通过所述第二用户态代理模块从所述第一代理连接会话中获取所述报文;
将所述报文发送给所述加速芯片。
3.根据权利要求2所述的方法,其特征在于,将所述报文存储在第一代理连接会话中包括:
确定所述报文的特征字段;
根据所述特征字段查找对应的第一代理连接会话;
在查找不到对应的第一代理连接会话的情况下,创建所述特征字段对应的第一代理连接会话;
将所述报文存储在所述第一代理连接会话中。
4.根据权利要求2所述的方法,其特征在于,通过所述第二用户态代理模块从所述第一代理连接会话中获取所述报文包括:
建立所述第一用户态代理模块与所述第二用户态代理模块的第二代理连接会话;
通过所述第二代理连接会话,从所述第一代理连接会话中获取所述报文。
5.根据权利要求4所述的方法,其特征在于,将所述报文发送给所述加速芯片包括:
通过所述第二用户态代理模块向所述加速芯片发送对所述报文的异步加解密请求,其中,所述加解密请求包括所述报文,所述报文为队列中的多个报文之一。
6.根据权利要求5所述的方法,其特征在于,根据所述异步响应事件生成所述应用层数据包括:
获取发送所述异步加解密请求时,所述报文的调用栈的位置;
根据所述调用栈的位置,所述异步响应事件以及所述异步响应事件对应的所述第二代理连接会话的状态,确定所述异步响应事件的输出数据;
在所述第二代理连接会话的状态为数据传输状态的情况下,将所述输出数据作为所述应用层数据。
7.根据权利要求6所述的方法,其特征在于,通过用户态代理组件将所述应用层数据发送给用户态应用模块之后,还包括:
通过所述第二用户态代理模块接收所述应用层的处理数据;
将所述处理数据发送给所述加速芯片进行加解密,将加解密后的处理数据,发送给所述第一用户态代理模块;
通过所述第一用户态代理模块发送给所述用户态报文收发模块;
通过所述用户态报文收发模块发送所述处理数据。
8.根据权利要求7所述的方法,其特征在于,
在所述第二代理连接会话的状态为数据传输状态的情况下,将所述输出数据作为所述应用层数据包括:在所述输出数据被所述加速芯片解密的情况下,将所述输出数据作为所述应用层数据;
将所述处理数据发送给所述加速芯片进行加解密,将加解密后的处理数据,发送给所述第一用户态代理模块包括:将所述处理数据发送给所述加速芯片进行加密,将加密后的处理数据发送给所述的第一用户态代理模块。
9.一种协议数据的处理装置,其特征在于,包括:
用户态报文收发模块,用于接收协议数据的报文;
用户态代理组件,用于将接收到的所述报文转发至加速芯片;
接收所述加速芯片对所述报文进行加解密后的应用层数据;
将所述应用层数据发送给用户态应用模块;
其中,所述用户态代理组件包括第一用户态代理模块和第二用户态代理模块,接收所述加速芯片对所述报文进行加解密后的应用层数据包括:
通过所述第二用户态代理模块轮询所述加速芯片的异步加解密响应队列,获取所述报文对应的异步响应事件,其中,所述异步响应事件与获取所述报文的第二代理连接会话对应;
根据所述异步响应事件生成所述应用层数据。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至8中任意一项所述的协议数据的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111057065.6A CN113810397B (zh) | 2021-09-09 | 2021-09-09 | 协议数据的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111057065.6A CN113810397B (zh) | 2021-09-09 | 2021-09-09 | 协议数据的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113810397A CN113810397A (zh) | 2021-12-17 |
CN113810397B true CN113810397B (zh) | 2023-04-18 |
Family
ID=78940527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111057065.6A Active CN113810397B (zh) | 2021-09-09 | 2021-09-09 | 协议数据的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113810397B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115426403A (zh) * | 2022-08-23 | 2022-12-02 | 奇安信网神信息技术(北京)股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN117376012A (zh) * | 2023-11-17 | 2024-01-09 | 中科驭数(北京)科技有限公司 | 报文检测方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105245271A (zh) * | 2015-10-27 | 2016-01-13 | 航天恒星科技有限公司 | 卫星通信网络加速装置以及方法 |
CN110602155A (zh) * | 2018-06-13 | 2019-12-20 | 网宿科技股份有限公司 | 代理服务器及其处理数据报文的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101867558B (zh) * | 2009-04-17 | 2012-11-14 | 深圳市永达电子股份有限公司 | 用户态网络协议栈***及处理报文的方法 |
US11792307B2 (en) * | 2018-03-28 | 2023-10-17 | Apple Inc. | Methods and apparatus for single entity buffer pool management |
CN111835613B (zh) * | 2019-04-23 | 2022-07-08 | 厦门网宿有限公司 | 一种vpn服务器的数据传输方法及vpn服务器 |
CN110324227A (zh) * | 2019-06-26 | 2019-10-11 | 厦门网宿有限公司 | 一种vpn服务器中的数据传输方法及vpn服务器 |
CN110493329A (zh) * | 2019-08-08 | 2019-11-22 | 西藏宁算科技集团有限公司 | 一种基于用户态协议栈的并发推送服务方法和*** |
CN112699397B (zh) * | 2021-01-22 | 2023-11-14 | 山西大学 | 基于虚拟环境下的软件加解密方法和*** |
-
2021
- 2021-09-09 CN CN202111057065.6A patent/CN113810397B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105245271A (zh) * | 2015-10-27 | 2016-01-13 | 航天恒星科技有限公司 | 卫星通信网络加速装置以及方法 |
CN110602155A (zh) * | 2018-06-13 | 2019-12-20 | 网宿科技股份有限公司 | 代理服务器及其处理数据报文的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113810397A (zh) | 2021-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7634650B1 (en) | Virtualized shared security engine and creation of a protected zone | |
CN103259762B (zh) | 一种基于云存储的文件加密、解密方法及*** | |
CN113810397B (zh) | 协议数据的处理方法及装置 | |
JP2019528604A (ja) | 仮想マルチパスデータトランスポートのためのシステム及び方法 | |
US11539747B2 (en) | Secure communication session resumption in a service function chain | |
CN106790221B (zh) | 一种英特网协议安全IPSec协议加密方法和网络设备 | |
CN110535742B (zh) | 报文转发方法、装置、电子设备及机器可读存储介质 | |
US11729042B2 (en) | IPSec acceleration method, apparatus, and system | |
CN110138553B (zh) | 一种IPSec VPN网关数据包处理装置及方法 | |
CN112699397B (zh) | 基于虚拟环境下的软件加解密方法和*** | |
US6983382B1 (en) | Method and circuit to accelerate secure socket layer (SSL) process | |
CN106464596A (zh) | 开放流通信方法、***、控制器和业务网关 | |
CN108964880A (zh) | 一种数据传输方法及装置 | |
Kim et al. | A case for smartnic-accelerated private communication | |
Huang et al. | Implementing publish/subscribe pattern for CoAP in fog computing environment | |
CN109905310B (zh) | 数据传输方法、装置、电子设备 | |
CN111131245A (zh) | 数据传输方法、装置、电子设备及存储介质 | |
WO2015027931A1 (en) | Method and system for realizing cross-domain remote command | |
CN111163102B (zh) | 数据处理方法及装置、网络设备、可读存储介质 | |
CN111669374B (zh) | 一种IPsec VPN单条隧道软件加解密性能扩展方法 | |
US9219712B2 (en) | WAN optimization without required user configuration for WAN secured VDI traffic | |
WO2024040846A1 (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110995730B (zh) | 数据传输方法、装置、代理服务器和代理服务器集群 | |
JP2004328359A (ja) | パケット処理装置 | |
CN117640289B (zh) | 基于用户态WireGuard协议的网关和设备 |
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 |