一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

传输数据处理方法及装置与流程

2022-04-09 03:02:33 来源:中国专利 TAG:


1.本发明涉及数据传输领域,具体而言,涉及一种传输数据处理方法及装置。


背景技术:

2.众所周知,当前大多数应用层协议都是基于tcp协议(transmission control protocol,传输控制协议)的,如http(hyper text transfer protocol,超文本传输协议)、ftp(file transfer protocol,文本传输协议)、pop3(post office protocol-version3,邮局协议版本3)、smtp(simple mail transfer protocol,简单邮件传输协议)、imap(internet message access protocol,因特网消息访问协议,别名交互邮件访问协议)等等,tcp代理有着广泛的应用,尤其是在网络设备中,如防火墙设备,waf(web application firewall,web应用防护系统,别名web应用防火墙)设备等,需要通过tcp代理获取tcp payload(tcp有效载荷)数据,以实现对报文的检查,流量监控,防病毒等功能。
3.下面对常见的tcp代理应用场景做简要介绍:
4.常见tcp代理应用场景一:图2是现有技术中的tcp简单代理流程的示意图,如图2所示,网络设备通过对tcp连接做简单代理,解析tcp之上承载的应用层协议报文,获取报文内容,并做应用安全检查:如url过滤,防病毒,ips,关键字过滤,电子邮件过滤,文件过滤等,实现对流量的监控。该场景下,网络设备通常只能查看报文内容,无法对tcp连接承载的数据做过多修改,仅根据需要修改tcp连接的若干字段,之后直接转发该条连接的报文。
5.常见tcp代理应用场景二:图3是现有技术中的tcp全代理流程的示意图,如图3所示,网络设备对tcp连接做全代理,打破客户端与服务端的原始tcp连接,实现对复杂应用的审计,如基于tcp全代理的ssl解密功能,可以实现对加密流量的审计。由于打破了原始tcp连接,客户端和服务端之间不再直接通信,往往会因tcp连接不是透明的而引发各种连接问题,比如:应用识别出来某个协议不用代理后,如果没有tcp透明代理,那么无法退出代理模式,也就无法实现应用层筛选;另外,tcp代理普遍都存在性能问题,tcp代理的介入后,往往会造成报文转发速率的降低。
6.与本技术相关的现有技术有:常见的tcp代理解决方案是基于内核态驱动网卡收发包,和基于内核态tcp/ip协议栈,代理设备与客户端(发起tcp连接的一侧)和服务端(被动接受tcp连接的一侧),分别建立tcp连接,之后获取客户端发送的请求数据,在通过应用层检查之后,再由另一侧的tcp连接发送给服务端。由于涉及到报文在内核态和用户态之间的拷贝,以及一系列的系统调用,tcp代理性能往往受到制约。
7.与本技术相关的现有技术中为了实现用户态tcp代理,常见的解决方案是基于用户态网卡收发包驱动,和用户态的tcp/ip协议栈,但在用户态下如何实现tcp透明代理,并保证tcp代理的稳定性和高性能,目前业界存在一些方案,但解决问题的角度相对比较单一,具体如下:
8.图4是现有技术中的现有用户态tcp全代理的示意图,与本技术相关的现有技术方案如图4所示,从图4可以看出目前现有的技术方案存在的主要问题如有:(1).基于用户态
tcp/ip协议栈,虽然比基于内核态tcp/ip协议栈转发效率更高,但是代理设备与客户端和服务端分别进行tcp握手,这增加了报文交互次数;(2).通常两侧的tcp连接是互相独立的,分别由用户态的src socket(源套接字)和dst socket(目的套接字)来维护,这就导致两侧的tcp连接信息有区别,如两侧的tcp header、tcp option并不完全一致,并不是完全透明的tcp代理;(3).当进行tcp数据交互时,若两侧的网络速率不匹配,或是代理设备在处理应用层业务耗时较长时,很容易造成报文堆积在中间代理设备上,消耗系统资源(如pak资源,即包资源,内存资源),上述包资源通常可理解为设备专门用于接收网络报文的一种内存资源。
9.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

10.本发明实施例提供了一种传输数据处理方法及装置,以至少解决相关技术中的传输控制协议tcp数据,在通过tcp代理传输时,效率低的技术问题。
11.根据本发明实施例的一个方面,提供了传输数据处理方法,包括:通过用户态驱动网卡接收发送端发送的传输控制协议tcp报文,其中,所述tcp报文包括握手报文或者数据报文;通过处理器对所述tcp报文进行处理,其中,所述用户态驱动网卡在接收到所述tcp报文后,将所述tcp报文发送给所述处理器;通过所述处理器在协议栈中对所述tcp报文的目标字段直接进行拷贝,根据拷贝的所述目标字段将所述tcp报文发送给接收端,其中,所述处理器包括所述协议栈,所述协议栈存储所述tcp报文的目标字段。
12.可选的,所述处理器的数量为多个,通过所述用户态驱动网卡接收发送端发送的传输控制协议tcp报文之后,所述方法还包括:通过所述用户态驱动网卡,根据所述tcp报文的五元组哈希值,将所述tcp报文分发到对应的收发队列;将所述收发队列按照预设分发方式,分发给所述多个处理器,对所述收发队列的tcp报文进行并发处理。
13.可选的,所述tcp报文为握手报文的情况下,通过所述处理器在协议栈中对所述tcp报文的目标字段直接进行拷贝,根据拷贝的所述目标字段将所述tcp发送给接收端包括:通过所述处理器在协议栈中对所述握手报文的目标字段直接进行拷贝,其中,所述目标字段包括标头header或选项option,所述握手报文为syn报文,或ack报文;根据拷贝的所述目标字段将所述握手报文发送给接收端。
14.可选的,根据拷贝的所述目标字段将所述握手报文发送给接收端之后,所述方法还包括:在客户端与服务端之间的tcp握手完成的情况下,创建第一tcp连接,以及第二tcp连接,其中,所述第一tcp连接为与所述客户端之间的tcp连接,所述第二tcp连接为与所述服务端之间的tcp连接;并将所述第一tcp连接和所述第二tcp连接的状态设置为已创建状态,其中,在所述已创建状态所述第一tcp连接和所述第二tcp连接能够对数据进行传输;其中,所述发送端为客户端或服务端,所述接收端为服务端或客户端,在所述发送端为客户端的情况下,所述接收端为服务端,在所述发送端为服务端的情况下,所述接收端为客户端。
15.可选的,通过所述处理器在协议栈中对所述tcp报文的目标字段直接进行拷贝,根据拷贝的所述目标字段将所述tcp报文发送给接收端之后,还包括:根据所述处理器的可用处理资源对接收窗口的大小实时调整,其中,所述接收窗口用于为所述用户态驱动网卡接收所述发送端的所述tcp报文,所述接收窗口越大,接收所述数据报文的速率越快。
16.可选的,根据所述处理器的可用处理资源对接收窗口的大小实时调整包括:按照预设频率,根据所述处理器的最大处理数据量,与所述处理器正在处理的数据量,确定所述处理器的可用处理资源;将所述接收窗口的大小调整为与所述可用处理资源匹配的目标尺寸。
17.可选的,根据所述处理器的最大处理数据量,与所述处理器正在处理的数据量,确定所述处理器的可用处理资源包括:根据处理器正在处理的接收报文的数据量以及发送报文的数据量,确定所述处理器正在处理的数据量;将所述最大处理数据量减去所述正在处理的数据量,得到所述可用处理资源的数据量。
18.根据本发明实施例的另一方面,还提供了一种传输数据处理装置,包括:接收模块,通过用户态驱动网卡接收发送端发送的传输控制协议tcp报文,其中,所述tcp报文包括握手报文或者数据报文;处理模块,通过处理器对所述tcp报文进行处理,其中,所述用户态驱动网卡在接收到所述tcp报文后,将所述tcp报文发送给所述处理器;发送模块,通过所述处理器在协议栈中对所述tcp报文的目标字段直接进行拷贝,根据拷贝的所述目标字段将所述tcp报文发送给接收端,其中,所述处理器包括所述协议栈,所述协议栈存储所述tcp报文的目标字段。
19.根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的传输数据处理方法。
20.根据本发明实施例的另一方面,还提供了一种计算机存储介质,所述计算机存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机存储介质所在设备执行上述中任意一项所述的传输数据处理方法。
21.在本发明实施例中,通过用户态驱动网卡接收发送端发送的传输控制协议tcp报文,其中,tcp报文包括握手报文或者数据报文;通过处理器对tcp报文进行处理,其中,用户态驱动网卡在接收到tcp报文后,将tcp报文发送给处理器;通过处理器在协议栈中对tcp报文的目标字段直接进行拷贝,根据拷贝的目标字段将tcp报文发送给接收端,其中,处理器包括协议栈,协议栈存储tcp报文的目标字段,通过对目标字段进行直接拷贝转发的方式,达到了对tcp代理进行一定程度的透明化的目的,实现了提高tcp代理的数据传输速率的技术效果,进而解决了相关技术中的传输控制协议tcp数据,在通过tcp代理传输时,效率低的技术问题。
附图说明
22.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
23.图1是根据本发明实施例的一种传输数据处理方法的流程图;
24.图2是现有技术中的tcp简单代理流程的示意图;
25.图3是现有技术中的tcp全代理流程的示意图;
26.图4是现有技术中的现有用户态tcp全代理的示意图;
27.图5是根据本发明实施方式的基于用户态的tcp透明代理方案的示意图;
28.图6是根据本发明实施方式的多核并发处理报文的示意图;
29.图7是根据本发明实施方式的tcp透明代理的实现的示意图;
30.图8是根据本发明实施方式的tcp代理动态调节接收窗口的示意图;
31.图9是根据本发明实施例的一种传输数据处理装置的示意图。
具体实施方式
32.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
33.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
34.根据本发明实施例,提供了一种传输数据处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
35.图1是根据本发明实施例的一种传输数据处理方法的流程图,如图1所示,该方法包括如下步骤:
36.步骤s102,通过用户态驱动网卡接收发送端发送的传输控制协议tcp报文,其中,tcp报文包括握手报文或者数据报文;
37.步骤s104,通过处理器对tcp报文进行处理,其中,用户态驱动网卡在接收到tcp报文后,将tcp报文发送给处理器;
38.步骤s106,通过处理器在协议栈中对tcp报文的目标字段直接进行拷贝,根据拷贝的目标字段将tcp报文发送给接收端,其中,处理器包括协议栈,协议栈存储tcp报文的目标字段。
39.通过上述步骤,通过用户态驱动网卡接收发送端发送的传输控制协议tcp报文,其中,tcp报文包括握手报文或者数据报文;通过处理器对tcp报文进行处理,其中,用户态驱动网卡在接收到tcp报文后,将tcp报文发送给处理器;通过处理器在协议栈中对tcp报文的目标字段直接进行拷贝,根据拷贝的目标字段将tcp报文发送给接收端,其中,处理器包括协议栈,协议栈存储tcp报文的目标字段,通过对目标字段进行直接拷贝转发的方式,达到了对tcp代理进行一定程度的透明化的目的,实现了提高tcp代理的数据传输速率的技术效果,进而解决了相关技术中的传输控制协议tcp数据,在通过tcp代理传输时,效率低的技术问题。
40.上述步骤的执行主体可以为tcp代理设备。如图6所示,tcp代理设备设置在客户端和服务端之间,为客户端和服务端进行tcp报文的转发和处理。
41.上述用户动态驱动网卡可以分别与进行数据发送的发送端和对发送端进行数据接收的接收端进行连接,上述发送端与接收端可以是客户端或者服务端,客户端与服务端中数据的发出者即可以是发送端,对发送数据进行接收的即可以接收端,上述用户动态驱动网卡可以接收发送端发送的传输控制协议tcp报文,可以将tcp报文通过五元组哈希值,将tcp报文发送到对应的收发队列,上述报文可以是握手报文或者数据报文,如果上述动态驱动网卡接收到的是握手报文,可以对握手报文的目标字段,即标头字段或选项字段,进行直接拷贝转发给接收端,tcp握手后,可以将上述连接的连接状态修改为建立状态,在tcp的连接的建立状态可以进行数据传输,进行数据报文的传输。
42.上述握手过程不再使用现有技术中增加tcp握手阶段的报文数据的方式实现tcp代理,即可以提高tcp的握手效率,避免额外的tcp握手开销;将tcp的连接状态修改为建立状态,进行tcp数据报文传输,可以减少tcp报文数据传输的握手次数。
43.上述处理器可以访问处理上述用户动态驱动网卡的收发队列,可以采用多个处理器并发的方式将上述tcp握手报文的目标字段进行直接拷贝转发给接收端,或者将tcp数据报文转发给接收端。如图5所示,上述处理器可以包括协议栈,解析模块,用户态应用层,上述协议栈存储tcp报文的目标字段,在多处理器的场景下,每个处理器都包括协议栈,解析模块和用户态应用层,上述用户态应用层可以为用户态的数据报文提供相应的处理操作,例如加解密,分析等操作。上述通过处理器对tcp报文进行处理,也即是通过上述协议栈和解析模块将tcp报文转发给用户态应用层,经过用户态应用层处理后,将处理后的数据,通过解析模块和协议栈在发送给用户态驱动网卡,转发给接收端。
44.通过对目标字段进行直接拷贝转发的方式,达到了对tcp代理进行一定程度的透明化的目的,实现了提高tcp代理的数据传输速率的技术效果,进而解决了相关技术中的传输控制协议tcp数据,在通过tcp代理传输时,效率低的技术问题。
45.上述处理器还可以对tcp报文的数据包的接收的窗口进行调整,可以根据处理器的可用处理资源情况对接收窗口的大小进行动态调整,以此来提升tcp代理的稳定性和吞吐能力。
46.可选的,处理器的数量为多个,通过用户态驱动网卡接收发送端发送的传输控制协议tcp报文之后,方法还包括:通过用户态驱动网卡,根据tcp报文的五元组哈希值,将tcp报文分发到对应的收发队列;将收发队列按照预设分发方式,分发给多个处理器,对收发队列的tcp报文进行并发处理。
47.通过用户态驱动网卡,可以将tcp报文的数据流量按照五元组哈希值,将tcp报文发到对应的用户态网卡收发队列,如果存在多个处理器的情况下,每个处理器上运行的进程都可以对用户态网卡的收发队列进行访问连接,通过处理器可以将tcp报文进行报文并发处理,以此可以提升报文转发性能。
48.例如,实现多核(即上述多个处理器)并发处理流量,基于用户态的驱动网卡收发队列,在网卡收到报文后,按五元组hash哈希,将报文分发到对应的收发队列,在多核场景下,每个cpu上运行的进程都可以尝试将网卡收发队列中的报文进行获取,实现报文并发处理,提升报文转发性能。
49.通过利用多个处理器对收发队列tcp报文进行并发处理,达到了快速处理tcp报文的目的,实现了提升报文转发性能的技术效果。
50.可选的,tcp报文为握手报文的情况下,通过处理器在协议栈中对tcp报文的目标字段直接进行拷贝,根据拷贝的目标字段将tcp发送给接收端包括:通过处理器在协议栈中对握手报文的目标字段直接进行拷贝,其中,目标字段包括标头header或选项option,握手报文为syn报文,或ack报文;根据拷贝的目标字段将握手报文发送给接收端。
51.如果tcp报文为握手报文,可以通过处理器在协议栈中对tcp报文中的目标字段直接进行拷贝,上述目标字段可以包括标头header字段或选项option字段,然后可以将拷贝的目标字段直接进行转发。
52.上述握手报文可以为包含syn信息的请求建立连接的syn报文,也可是包含ack确认信息ack报文。tcp第一次握手可以由客户端将带有syn请求握手的syn报文发送,通过处理器在协议栈中对syn报文的目标字段进行直接拷贝转发给服务端,服务端收到请求信息后可以进行第二次握手,服务端可以将带有syn请求握手的syn报文与ack确认信息的ack报文进行发送,再通过处理器在协议栈中对ack报文中的目标字段进行直接拷贝转发给客户端,客户端接收到ack报文后可以进行第三次握手,客户端可以将带有ack确认信息的ack报文进行发送,再通过处理器在协议栈中对ack报文中的目标字段进行直接拷贝转发给服务端,服务端接收到来自客户端的ack报文后,可以确认客户端与服务端可以进行通信。上述为本实施例中三次握手建立tcp连接过程,在tcp四次握手也可以通过将目标字段进行直接拷贝转发。由于直接转发了syn、syn/ack,则可以不再增加tcp握手阶段的报文数量,以此来提高握手效率。
53.具体的,当收到客户端发来的syn报文时,在用户态tcp/ip协议栈中直接拷贝记录该syn报文的tcp header(标头)、tcp option(选项)等目标字段,然后将该syn报文直接转发给服务端,而不是由代理设备自己回syn/ack报文给客户端,当服务端返回syn/ack报文时,再拷贝服务器侧的tcp header、tcp option字段。
54.通过将目标字段进行直接拷贝转发给客户端或服务端,达到了利用目标字段实现tcp握手连接的目的,实现了不再增加tcp握手阶段的报文数量,提高客户端与服务端之间的tcp握手效率。
55.可选的,根据拷贝的目标字段将握手报文发送给接收端之后,方法还包括:在客户端与服务端之间的tcp握手完成的情况下,创建第一传输控制协议tcp连接,以及第二tcp连接,其中,第一tcp连接为与客户端之间的tcp连接,第二tcp连接为与服务端之间的tcp连接;并将第一tcp连接和第二tcp连接的状态设置为已创建状态,其中,在已创建状态第一tcp连接和第二tcp连接能够对数据进行传输;其中,发送端为客户端或服务端,接收端为服务端或客户端,在发送端为客户端的情况下,接收端为服务端,在发送端为服务端的情况下,接收端为客户端。
56.在客户端与服务端经过用户态驱动网卡、处理器并发处理,实现客户端与服务端的握手情况下,可以在发送端与用户动态驱动网卡以及用户态驱动网卡与接收端分别建立tcp连接,发送端与用户动态驱动网卡的间可以建立第一传输控制协议tcp连接,用户态驱动网卡与接收端可以建立第二传输控制协议tcp连接,并且,为减少tcp握手的次数,可以在tcp握手完成的情况下,第一tcp连接以及第二tcp连接状态可以切换为建立状态,如果第一tcp连接状态与第二tcp连接状态为建立状态,那么在接收端与发送之间可以将数据通过用户态驱动网卡以及处理器并发处理进行数据传输。
57.由于客户端与服务端之间可以进行数据的相互发送,因此客户端与服务端均可以作为数据的发送端,同时客户端与服务端也均可以作为数据的接收端,如果发送端为客户端,那么接收端可以为服务端,如果发送端为服务端,那么接收端可以为客户端。
58.例如,当客户端与服务端tcp三次握手之后,代理设备与客户端和服务端分别建立一条虚拟的tcp连接,tcp代理设备与客户端之间的tcp连接为第一tcp连接,tcp代理设备与服务端之间的tcp连接为第二tcp连接,并将第一tcp连接和第二tcp连接的状态置为established(创建状态)。
59.通过发送端与用户动态驱动网卡以及用户态驱动网卡与接收端分别建立tcp连接,并且将连接状态设置为建立状态,达到了利用用户动态驱动网卡建立发送端与接收端的tcp连接的目的,实现了减少数据传输中tcp握手次数,提高数据传输速度的技术效果。
60.可选的,通过处理器在协议栈中对tcp报文的目标字段直接进行拷贝,根据拷贝的目标字段将tcp报文发送给接收端之后,还包括:根据处理器的可用处理资源对接收窗口的大小实时调整,其中,接收窗口用于为用户态驱动网卡接收发送端的tcp报文,接收窗口越大,接收数据报文的速率越快。
61.在tcp报文数据的传输过程中,为保证数据传输的稳定性和传输速率,可以根据处理器的可用处理资源情况,对接收tcp报文数据包的接收窗口大小进行实时调整,还可以将接收窗口大小实时反馈给发送端,通知发送端对发送的tcp报文数据包大小或发送速度进行调整,如果处理器的可用处理资源较多,那么接收窗口可以相应扩大,则接收数据报文的速率越快,如果处理器的可用处理资源较少,那么接收窗口可以相应缩小,则接收数据报文的速率越慢,通过对接收窗口的大小进行实施调整,可以以此来防止处理器处理不过来,造成报文堆积,消耗系统报文资源和存储资源的情况发生或者处理器资源存在大部分空闲,报文数据传输速率过低的情况发生。
62.tcp协议通过通告接收窗口的大小,告知对端,当前还能接收多少数据,如果通知过小,会导致tcp传输速率低,而如果通知的过大,tcp并发连接数过多时,cpu处理不过来,则会造成报文堆积在本地,消耗系统报文资源和内存资源;为了保证tcp代理传输数据的稳定性和传输速率,本实施例兼顾了两侧用户态套接字的接收能力和当前cpu的处理能力,动态调节通告出去的tcp接收窗口大小,使得tcp代理可以自适应网络环境,
63.通过动态调节窗口进行tcp报文数据的传输,达到了处理器资源的动态调度的目的,实现了提高处理器资源利用率的技术效果。
64.可选的,根据处理器的可用处理资源对接收窗口的大小实时调整包括:按照预设频率,根据处理器的最大处理数据量,与处理器正在处理的数据量,确定处理器的可用处理资源;将接收窗口的大小调整为与可用处理资源匹配的目标尺寸。
65.对接收窗口的大小进行实时调整可以按照预设的频率对处理器的可用处理资源进行计算,可以通过处理器的最大处理数据量与处理器正在处理的数据量确定处理器计算处理器的可用处理资源,根据处理器可用的处理资源可以将接收窗口调节成与处理器可用处理资源匹配的窗口大小,也即上述目标尺寸。
66.可选的,根据处理器的最大处理数据量,与处理器正在处理的数据量,确定处理器的可用处理资源包括:根据处理器正在处理的接收报文的数据量以及发送报文的数据量,确定处理器正在处理的数据量;将最大处理数据量减去正在处理的数据量,得到可用处理
资源的数据量。
67.可以根据处理器正在处理的接收报文的数据量以及发送报文的数据量,确定处理器正在处理的数据量,根据处理器的最大处理数据量和已得到的正在处理数据量,可以确定处理器的可用处理资源的数据量,通过处理器的最大处理数据量减去正在处理的数据量可以得到可用处理资源的数据量。
68.例如,dst socket通告给服务端的tcp接收窗口,按如下计算:
69.window(窗口大小)=max_buff_size(cpu的最大处理能力)

rcv_q_len(接收数据的数据量)

peer_write_q_len(发送数据的数据量)
70.需要说明的是,本技术实施例还提供了一种可选的实施方式,下面对该实施方式进行详细说明。
71.本实施方式提供了一种基于用户状态的高性能tcp透明代理方案,本实施方式主要提出了基于用户态网卡驱动,集成用户态tcp(transmission control protocol,传输控制协议)协议栈,实现的一种高性能tcp透明代理方案,在本实施方式中充分的考虑了tcp代理的性能,通过主动识别,判断流量是否需要tcp代理,灵活控制tcp代理的介入时机,并通过复制tcp header(tcp报文标头字段)、tcp option(tcp选项字段)关键字段,实现透明代理,同时通过动态调节tcp接收窗口,自适应网络环境,避免出现网络拥塞,实现了高性能的用户态tcp代理。
72.本实施方式为了提升用户态的tcp代理性能,在网络设备或者安全设备上,实现一种流程高效,技术可行的用户态集成的高性能tcp透明代理方案,方案总体思路如下:
73.(1)集成了用户态网卡驱动报文收发,用户态tcp/ip协议栈,减少了报文在用户态与内核态的任务切换以及报文内存拷贝带来的额外开销,并通过对流量进行hash(哈希)实现多核并发处理。
74.(2)直接修改并转发syn(synchronize sequence numbers,同步序列编号,)报文,也即是tcp连接的第一个握手报文、syn/ack(ackknowledgement,确认)报文,当原始client端(即客户端)与server端(即服务器端)tcp连接建立成功后,直接将tcp代理的连接的状态修改为establish(建立状态),减少tcp握手次数。
75.(3)通过拷贝tcp header、tcp option字段实现透明代理。
76.(4)通过关联两侧的tcp socket,实现对tcp接收窗口的动态调节,自适应网络环境,可以大大提升tcp代理的稳定性和吞吐性能。
77.图5是根据本发明实施方式的基于用户态的tcp透明代理方案的示意图,如图5所示,实现应用层检查功能的整体框架,主要包含三部分内容,首先是用户态网卡报文收发队列,这部分利用用户态网卡驱动直接从网卡收发报文,并通过流量hash,将流量分发到多个核进行并发处理。其次是经过改造的用户态tcp/ip协议栈,由该协议栈负责tcp连接的代理,并且实现报文重组,ack应答,报文重传等处理。最后是基于tcp代理的应用层处理,负责解析tcp payload(tcp有效载荷)数据,实现ssl(secure sockets layer,安全套接字协议)解密,文件过滤,防病毒等功能。
78.1.实现多核并发处理流量:
79.图6是根据本发明实施方式的多核并发处理报文的示意图,如图6所示,基于用户态的驱动网卡收发队列,在网卡收到报文后,按五元组hash,将报文分发到对应的收发队
列,在多核场景下,每个cpu(central processing unit,中央处理器)上运行的进程都可以尝试poll(一个动作:进程主动询问收包队列,并获取队列中待取出的报文)对应的网卡收包队列,实现报文并发处理,提升报文转发性能。
80.2.实现tcp透明代理:
81.图7是根据本发明实施方式的tcp透明代理的实现的示意图,图7所示,当收到客户端发来的syn报文时,在用户态tcp/ip协议栈中直接拷贝记录该syn报文的tcp header(标头)、tcp option(选项)等字段,然后将该syn报文直接转发给服务端,而不是由代理设备自己回syn/ack报文给客户端,当服务端返回syn/ack报文时,再拷贝服务器侧的tcp header、tcp option字段,当客户端与服务端tcp三次握手之后,代理设备与客户端和服务端分别建立一条虚拟的tcp连接,并将tcp连接的状态置为established(创建状态)。
82.3.减少tcp握手包的数量:
83.由于直接转发了syn报文、syn/ack报文,tcp全代理时并不会增加tcp握手阶段的报文数量,提高了握手效率,tcp代理协议栈在转发syn报文、syn/ack报文后状态机直接进入establish状态。
84.4.实现tcp窗口动态调节:
85.图8是根据本发明实施方式的tcp代理动态调节接收窗口的示意图,如图8所示,tcp协议通过通告接收窗口的大小,告知对端,当前还能接收多少数据,如果通知过小,会导致tcp传输速率低,而如果通知的过大,tcp并发连接数过多时,cpu处理不过来,则会造成报文堆积在本地,消耗系统报文资源和内存资源;为了保证tcp代理传输数据的稳定性和传输速率,本实施方式兼顾了两侧用户态套接字的接收能力和当前cpu的处理能力,动态调节通告出去的tcp接收窗口大小,使得tcp代理可以自适应网络环境,例如dst socket通告给服务端的tcp接收窗口,按如下计算:
86.window(窗口大小)=max_buff_size(cpu的最大处理能力)

rcv_q_len(接收数据的数据量)

peer_write_q_len(发送数据的数据量)
87.且当cpu利用率超过某个阈值时,new_wnd(即下一次tcp通告出去的新窗口大小)进行相应的缩减,避免因cpu忙导致在并发tcp连接数多时造成报文堆积。
88.本实施方式适用于网络设备(包括但不限于网络流量安全设备、网络数据转发设备、网络流量分析设备、网络流量管理设备,如fw/ngfw、ids/ips、waf、adc、bds、router等等),同时适用于虚拟化网络功能或者虚拟化网络设备(包括但不限于虚拟化网络流量安全功能或者设备、虚拟化网络数据转发功能或者设备,虚拟化网络流量分析功能或者设备,虚拟化网络流量管理功能或者设备。
89.本实施方式可以应用于在网络设备上,基于tcp透明代理,实现对加密流量的审计,url(uniform resource locator,统一资源定位器)过滤,防病毒,ips(intrusion prevention system,电脑网络安全设施),关键字过滤,电子邮件过滤,文件过滤等功能。
90.本实施方式集成了用户态网卡驱动报文收发、改造后的用户态tcp/ip协议栈,从架构层面设计了高性能tcp透明代理方案。为用户提供了高性能、稳定的tcp代理方案。
91.本实施方式适用范围比较广:适用于裸机、虚拟化、容器平台等多种网络设备或者安全设备或者网络功能软件或者网络安全软件;本实施方式可以减少代理时所需tcp握手次数:通过直接修改并转发syn报文、syn/ack报文,避免引入的额外的tcp握手开销;本实施
方式可实现tcp透明代理:通过tcp透明代理,使得客户端和服务端感知不到连接被代理,避免出现tcp连接异常;本实施方式采用高性能、稳定的tcp代理框架:本实施方式可以为网络设备提供一套基于用户态的tcp代理方案,并可基于该方案实现各种应用层功能。
92.本实施方式的关键在于利用用户态网卡驱动报文收发,基于用户态tcp/ip协议栈实现的高性能tcp透明代理技术设计方案。利用上述高性能tcp透明代理的总体架构技术设计方案在各种网络设备或者安全设备,网络功能或者安全功能,网络软件或者安全软件,网络平台或者安全平台上的应用。(备注:这里设备/功能/软件/平台,包括物理环境,虚拟化环境以及容器环境等各种场合的目标主体)
93.图9是根据本发明实施例的一种传输数据处理装置的示意图,如图9所示,根据本发明实施例的另一方面,还提供了一种传输数据处理装置,包括:接受模块92,生处理模块94和发送模块96,下面对该装置进行详细说明。
94.接收模块92,通过用户态驱动网卡接收发送端发送的传输控制协议tcp报文,其中,tcp报文包括握手报文或者数据报文;处理模块94,与上述接收模块92相连,通过处理器对tcp报文进行处理,其中,用户态驱动网卡在接收到tcp报文后,将tcp报文发送给处理器;发送模块96,与上述处理模块94相连,通过处理器在协议栈中对tcp报文的目标字段直接进行拷贝,根据拷贝的目标字段将tcp报文发送给接收端,其中,处理器包括协议栈,协议栈存储tcp报文的目标字段。
95.通过上述装置,通过用户态驱动网卡接收发送端发送的传输控制协议tcp报文,其中,tcp报文包括握手报文或者数据报文;通过处理器对tcp报文进行处理,其中,用户态驱动网卡在接收到tcp报文后,将tcp报文发送给处理器;通过处理器在协议栈中对tcp报文的目标字段直接进行拷贝,根据拷贝的目标字段将tcp报文发送给接收端,其中,处理器包括协议栈,协议栈存储tcp报文的目标字段,通过对目标字段进行直接拷贝转发的方式,达到了对tcp代理进行一定程度的透明化的目的,实现了提高tcp代理的数据传输速率的技术效果,进而解决了相关技术中的传输控制协议tcp数据,在通过tcp代理传输时,效率低的技术问题。
96.根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的传输数据处理方法。
97.根据本发明实施例的另一方面,还提供了一种计算机存储介质,所述计算机存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机存储介质所在设备执行上述中任意一项所述的传输数据处理方法。
98.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
99.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
100.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
101.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
102.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
103.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
104.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献