CN117596310A - 数据处理方法及装置、处理器 - Google Patents
数据处理方法及装置、处理器 Download PDFInfo
- Publication number
- CN117596310A CN117596310A CN202311515493.8A CN202311515493A CN117596310A CN 117596310 A CN117596310 A CN 117596310A CN 202311515493 A CN202311515493 A CN 202311515493A CN 117596310 A CN117596310 A CN 117596310A
- Authority
- CN
- China
- Prior art keywords
- socket
- receiving
- size
- window
- proxy
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 30
- 238000000034 method Methods 0.000 claims abstract description 50
- 238000012545 processing Methods 0.000 claims description 80
- 230000006870 function Effects 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 abstract description 42
- 238000005516 engineering process Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 20
- 238000004590 computer program Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003068 static effect 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
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
- H04L47/225—Determination of shaping rate, e.g. using a moving window
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- 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
- H04L67/562—Brokering proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种数据处理方法及装置、处理器。该方法包括:当代理设备接收到发送设备发送的目标请求时,获取第一套接字的接收队列的长度和第二套接字的发送队列的长度;获取代理设备的数据信息集合;依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备。通过本申请,解决了相关技术中难以及时调整代理设备的接收窗口的大小,导致代理设备与发送端和接收端之间的TCP连接容易出现阻塞的情况,进而导致利用TCP传输控制协议传输数据的效率较低的问题。
Description
技术领域
本申请涉及数据传输技术领域,具体而言,涉及一种数据处理方法及装置、处理器。
背景技术
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。且TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。例如,图1是根据现有技术提供的一种TCP传输的示意图,如图1所示,可以在发送端和接收端之间建立TCP连接,并可以利用建立的该TCP连接进行发送端和接收端之间的数据传输。
另外,图2是根据现有技术提供的一种TCP代理传输的示意图,如图2所示,TCP代理一般是指在网络通信的发送端和接收端中间,插入一台代理设备,代理设备与发送端和接收端分别建立TCP连接,并且由代理设备转发运行在TCP协议之上的应用层协议数据,如HTTP代理(一种中间服务器,用于在客户端和目标服务器之间传递HTTP请求和响应)。
而且,由于TCP协议是可靠传输,发送端和接收端会在建立TCP连接时确定各自的发送窗口和接收窗口,以及TCP窗口扩张因子(window scale),在基于TCP连接传输数据时,发送端和接收端会根据当前网络状态,以及应用层读取TCP数据的快慢,动态调整TCP接收窗口,以获得良好的数据传输速度,充分利用带宽。
但是,当代理设备介入时,由于打破了原始的TCP连接,在两侧网络质量相差很大、并发连接数很多、尤其是在代理设备自身资源(如内存、CPU等)有限的场景下,如何平衡两侧TCP连接的传输速度,保证良好的TCP代理效果,需要代理设备来协调,对代理设备来说是很大的挑战。
相关技术通过获取UE(用户设备)的接收窗口的大小,TCP网络代理与UE之间的第一时延,以及TCP网络代理与互联网服务器之间的第二时延,来确定TCP网络代理的接收窗口的大小。但是,由于网络质量是动态的,TCP窗口也需要动态调整,故仅依据UE设备的初始接收窗口大小和时延,只能在初始时刻确定TCP网络代理设备的初始窗口大小,且一旦网络质量发生波动,相关技术无法及时调整代理设备的窗口,可能频繁出现零窗口,导致TCP连接被阻塞等情况,进而导致利用TCP传输控制协议传输数据的效率较低。
针对相关技术中难以及时调整代理设备的接收窗口的大小,导致代理设备与发送端和接收端之间的TCP连接容易出现阻塞的情况,进而导致利用TCP传输控制协议传输数据的效率较低的问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种数据处理方法及装置、处理器,以解决相关技术中难以及时调整代理设备的接收窗口的大小,导致代理设备与发送端和接收端之间的TCP连接容易出现阻塞的情况,进而导致利用TCP传输控制协议传输数据的效率较低的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种数据处理方法。该方法应用在数据处理系统中,所述数据处理系统中至少包括:代理设备、用于发送目标报文的发送设备和用于接收所述目标报文的接收设备,所述代理设备中至少包括第一套接字和第二套接字,所述第一套接字用于建立所述代理设备与所述发送设备之间的第一TCP连接,所述第二套接字用于建立所述代理设备与所述接收设备之间的第二TCP连接,所述第一TCP连接和所述第二TCP连接用于传输所述目标报文,所述目标报文中至少包括待从所述发送设备发送至所述接收设备的数据,所述数据处理方法包括:当所述代理设备接收到所述发送设备发送的目标请求时,获取所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,其中,所述目标请求用于请求发送所述目标报文至所述接收设备,所述接收队列用于接收所述目标报文,所述发送队列用于发送所述目标报文;获取所述代理设备的数据信息集合,其中,所述数据信息集合中至少包括:所述代理设备的CPU利用率、所述代理设备的内存利用率和所述代理设备当前可接收的报文数量;依据所述第一套接字的接收队列的长度、所述第二套接字的发送队列的长度和所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;通过所述调整后的第一套接字的接收窗口响应所述目标请求,并将所述目标报文发送至所述接收设备。
进一步地,依据所述第一套接字的接收队列的长度、所述第二套接字的发送队列的长度和所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:依据所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,确定所述第一套接字的接收窗口的大小;基于所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口。
进一步地,基于所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口包括:判断所述数据信息集合中所述代理设备当前可接收的报文数量是否小于预设数量;若所述数据信息集合中所述代理设备当前可接收的报文数量小于所述预设数量,则将所述第一套接字的接收窗口的大小调整为0;若所述数据信息集合中所述代理设备当前可接收的报文数量不小于所述预设数量,则判断所述数据信息集合中所述代理设备的CPU利用率是否大于第一预设利用率,并判断所述数据信息集合中所述代理设备的内存利用率是否大于第二预设利用率,得到判断结果;依据所述判断结果调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口。
进一步地,依据所述判断结果调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口包括:若所述数据信息集合中所述代理设备的CPU利用率大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率不大于所述第二预设利用率,则将所述第一套接字的接收窗口缩小至目标数值;若所述数据信息集合中所述代理设备的CPU利用率不大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率大于所述第二预设利用率,则将所述第一套接字的接收窗口缩小至所述目标数值;若所述数据信息集合中所述代理设备的CPU利用率不大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率不大于所述第二预设利用率,则不调整所述第一套接字的接收窗口的大小;若所述数据信息集合中所述代理设备的CPU利用率大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率大于所述第二预设利用率,则基于所述代理设备的CPU利用率和所述代理设备的内存利用率调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口。
进一步地,基于所述代理设备的CPU利用率和所述代理设备的内存利用率调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口包括:基于所述代理设备的CPU利用率计算所述第一套接字的接收窗口的大小,得到所述接收窗口对应的第一大小;基于所述代理设备的内存利用率计算所述第一套接字的接收窗口的大小,得到所述接收窗口对应的第二大小;比较所述第一大小和所述第二大小对应的数值,得到所述第一大小和所述第二大小中较小的数值;将所述第一套接字的接收窗口的大小调整为所述第一大小和所述第二大小中较小的数值,得到所述调整后的第一套接字的接收窗口。
进一步地,依据所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,确定所述第一套接字的接收窗口的大小包括:获取所述第一套接字的接收窗口的初始大小;依据所述第一套接字的接收窗口的初始大小、所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,确定所述第一套接字的接收窗口的大小。
进一步地,在通过所述调整后的第一套接字的接收窗口响应所述目标请求,并将所述目标报文发送至所述接收设备之后,所述方法还包括:当检测到所述第一套接字在预设时间段内向所述发送设备发送目标通知信息,则重新计算所述第一套接字的接收窗口的大小,得到重新计算的第一套接字的接收窗口的大小,其中,所述预设时间段为在所述发送设备发送所述目标请求之后,且在所述接收设备接收到所述目标报文之前的时间段,所述目标通知信息用于通知所述发送设备所述第一套接字的接收窗口的大小为0;在所述重新计算的第一套接字的接收窗口的大小大于预设值的情况下,通过所述第一套接字向所述发送设备发送窗口更新报文,其中,所述窗口更新报文用于通知所述发送设备所述第一套接字的接收窗口的大小不为0。
进一步地,通过所述调整后的第一套接字的接收窗口响应所述目标请求,并将所述目标报文发送至所述接收设备包括:获取所述目标报文的序列号,并基于所述目标报文的序列号,判断所述调整后的第一套接字的接收窗口是否允许接收所述目标报文;若所述调整后的第一套接字的接收窗口不允许接收所述目标报文,则禁止将所述目标报文发送至所述接收设备;若所述调整后的第一套接字的接收窗口允许接收所述目标报文,则将所述目标报文添加至所述第一套接字的接收队列中;从所述第一套接字的接收队列中读取所述目标报文,并将所述目标报文添加至所述第二套接字的发送队列中;将所述第二套接字的发送队列中的所述目标报文发送至所述接收设备。
为了实现上述目的,根据本申请的另一方面,提供了一种数据处理装置。该装置应用在数据处理系统中,所述数据处理系统中至少包括:代理设备、用于发送目标报文的发送设备和用于接收所述目标报文的接收设备,所述代理设备中至少包括第一套接字和第二套接字,所述第一套接字用于建立所述代理设备与所述发送设备之间的第一TCP连接,所述第二套接字用于建立所述代理设备与所述接收设备之间的第二TCP连接,所述第一TCP连接和所述第二TCP连接用于传输所述目标报文,所述目标报文中至少包括待从所述发送设备发送至所述接收设备的数据,所述数据处理装置包括:第一获取模块,用于当所述代理设备接收到所述发送设备发送的目标请求时,获取所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,其中,所述目标请求用于请求发送所述目标报文至所述接收设备,所述接收队列用于接收所述目标报文,所述发送队列用于发送所述目标报文;第二获取模块,用于获取所述代理设备的数据信息集合,其中,所述数据信息集合中至少包括:所述代理设备的CPU利用率、所述代理设备的内存利用率和所述代理设备当前可接收的报文数量;第一处理模块,用于依据所述第一套接字的接收队列的长度、所述第二套接字的发送队列的长度和所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;第一发送模块,用于通过所述调整后的第一套接字的接收窗口响应所述目标请求,并将所述目标报文发送至所述接收设备。
进一步地,所述第一处理模块包括:第一确定单元,用于依据所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,确定所述第一套接字的接收窗口的大小;第一处理单元,用于基于所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口。
进一步地,所述第一处理单元包括:第一判断子模块,用于判断所述数据信息集合中所述代理设备当前可接收的报文数量是否小于预设数量;第一处理子模块,用于若所述数据信息集合中所述代理设备当前可接收的报文数量小于所述预设数量,则将所述第一套接字的接收窗口的大小调整为0;第二判断子模块,用于若所述数据信息集合中所述代理设备当前可接收的报文数量不小于所述预设数量,则判断所述数据信息集合中所述代理设备的CPU利用率是否大于第一预设利用率,并判断所述数据信息集合中所述代理设备的内存利用率是否大于第二预设利用率,得到判断结果;第二处理子模块,用于依据所述判断结果调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口。
进一步地,所述第二处理子模块包括:第一缩小子单元,用于若所述数据信息集合中所述代理设备的CPU利用率大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率不大于所述第二预设利用率,则将所述第一套接字的接收窗口缩小至目标数值;第二缩小子单元,用于若所述数据信息集合中所述代理设备的CPU利用率不大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率大于所述第二预设利用率,则将所述第一套接字的接收窗口缩小至所述目标数值;第一处理子单元,用于若所述数据信息集合中所述代理设备的CPU利用率不大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率不大于所述第二预设利用率,则不调整所述第一套接字的接收窗口的大小;第二处理子单元,用于若所述数据信息集合中所述代理设备的CPU利用率大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率大于所述第二预设利用率,则基于所述代理设备的CPU利用率和所述代理设备的内存利用率调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口。
进一步地,所述第二处理子单元包括:计算子单元一,用于基于所述代理设备的CPU利用率计算所述第一套接字的接收窗口的大小,得到所述接收窗口对应的第一大小;计算子单元二,用于基于所述代理设备的内存利用率计算所述第一套接字的接收窗口的大小,得到所述接收窗口对应的第二大小;比较子单元一,用于比较所述第一大小和所述第二大小对应的数值,得到所述第一大小和所述第二大小中较小的数值;调整子单元一,用于将所述第一套接字的接收窗口的大小调整为所述第一大小和所述第二大小中较小的数值,得到所述调整后的第一套接字的接收窗口。
进一步地,所述第一确定单元包括:第一获取子模块,用于获取所述第一套接字的接收窗口的初始大小;第一确定子模块,用于依据所述第一套接字的接收窗口的初始大小、所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,确定所述第一套接字的接收窗口的大小。
进一步地,所述装置还包括:第一检测模块,用于在通过所述调整后的第一套接字的接收窗口响应所述目标请求,并将所述目标报文发送至所述接收设备之后,当检测到所述第一套接字在预设时间段内向所述发送设备发送目标通知信息,则重新计算所述第一套接字的接收窗口的大小,得到重新计算的第一套接字的接收窗口的大小,其中,所述预设时间段为在所述发送设备发送所述目标请求之后,且在所述接收设备接收到所述目标报文之前的时间段,所述目标通知信息用于通知所述发送设备所述第一套接字的接收窗口的大小为0;第二发送模块,用于在所述重新计算的第一套接字的接收窗口的大小大于预设值的情况下,通过所述第一套接字向所述发送设备发送窗口更新报文,其中,所述窗口更新报文用于通知所述发送设备所述第一套接字的接收窗口的大小不为0。
进一步地,所述第一发送模块包括:第二处理单元,用于获取所述目标报文的序列号,并基于所述目标报文的序列号,判断所述调整后的第一套接字的接收窗口是否允许接收所述目标报文;第三处理单元,用于若所述调整后的第一套接字的接收窗口不允许接收所述目标报文,则禁止将所述目标报文发送至所述接收设备;第一添加单元,用于若所述调整后的第一套接字的接收窗口允许接收所述目标报文,则将所述目标报文添加至所述第一套接字的接收队列中;第二添加单元,用于从所述第一套接字的接收队列中读取所述目标报文,并将所述目标报文添加至所述第二套接字的发送队列中;第一发送单元,用于将所述第二套接字的发送队列中的所述目标报文发送至所述接收设备。
为了实现上述目的,根据本申请的另一方面,提供了一种用于数据处理的处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述的任意一项所述的数据处理方法。
通过本申请,采用以下步骤:当代理设备接收到发送设备发送的目标请求时,获取第一套接字的接收队列的长度和第二套接字的发送队列的长度,其中,目标请求用于请求发送目标报文至接收设备,接收队列用于接收目标报文,发送队列用于发送目标报文;获取代理设备的数据信息集合,其中,数据信息集合中至少包括:代理设备的CPU利用率、代理设备的内存利用率和代理设备当前可接收的报文数量;依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备,解决了相关技术中难以及时调整代理设备的接收窗口的大小,导致代理设备与发送端和接收端之间的TCP连接容易出现阻塞的情况,进而导致利用TCP传输控制协议传输数据的效率较低的问题。通过获取第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合,并依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口,再通过调整后的第一套接字的接收窗口响应发送设备发送的目标请求,并将目标报文发送至接收设备,从而可以及时调整代理设备的接收窗口的大小,并避免代理设备与发送端和接收端之间的TCP连接出现阻塞的情况,确保TCP代理的稳定性,进而达到了提升利用TCP传输控制协议传输数据的效率的效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据现有技术提供的一种TCP传输的示意图;
图2是根据现有技术提供的一种TCP代理传输的示意图;
图3是根据本申请实施例提供的数据处理方法的流程图;
图4是根据本申请实施例提供的可选的数据处理方法的示意图;
图5是本申请实施例中主动通知窗口更新的示意图;
图6是根据本申请实施例提供的数据处理装置的示意图;
图7是根据本申请实施例提供的电子设备的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
套接字(socket)是计算机网络中的一种通信机制,它允许不同计算机之间的进程进行通信。通过套接字,可以在网络上发送和接收数据,实现进程之间的数据交换。
CPU:全称为Central Processing Unit,为中央处理器,是计算机的重要组成部分,也被称为处理器或微处理器,是计算机的计算和控制中心,它决定了计算机的处理能力和响应速度。
下面结合优选的实施步骤对本发明进行说明,图3是根据本申请实施例提供的数据处理方法的流程图,如图3所示,该方法包括如下步骤:
步骤S301,当代理设备接收到发送设备发送的目标请求时,获取第一套接字的接收队列的长度和第二套接字的发送队列的长度,其中,目标请求用于请求发送目标报文至接收设备,接收队列用于接收目标报文,发送队列用于发送目标报文。
例如,图4是根据本申请实施例提供的可选的数据处理方法的示意图,且上述的发送设备可以为图4中的发送端,且该发送端可以用于向代理设备发送报文请求(上述的目标请求),再通过代理设备将该报文请求(上述的目标请求)发送至接收端(上述的接收设备);上述的接收设备可以为图4中的接收端,且该接收端可以用于接收发送端发送的报文请求,并基于该报文请求向代理设备返回报文,再通过代理设备将接收端返回的报文发送至发送端;上述的第一套接字可以为图4中的sock0套接字,且如图4所示,代理设备与发送端通过sock0(上述的第一套接字)建立TCP连接;上述的第二套接字可以为图4中的sock1套接字,且如图4所示,代理设备与接收端通过sock1(上述的第二套接字)建立TCP连接;上述的第一套接字的接收队列可以为sock0(上述的第一套接字)的接收队列;上述的第二套接字的发送队列可以为sock1(上述的第二套接字)的发送队列。
例如,如图4所示,在TCP代理场景下,通过创建两个用户态socket(即创建sock0套接字和sock1套接字),并关联这两个socket(套接字),且sock0(上述的第一套接字)的接收窗口可以受sock0(上述的第一套接字)的接收队列长度、以及sock1(上述的第二套接字)的发送队列长度的共同控制:
sock0_rcv_wnd=default_wnd-(sock0_rcv_queue+sock1_send_queue)
其中,sock0_rcv_wnd表示sock0的接收窗口的大小,default_wnd表示默认窗口的大小,且default_wnd可约定默认值为128KB,sock0_rcv_queue表示sock0的接收队列长度,sock1_send_queue表示sock1的发送队列长度。
步骤S302,获取代理设备的数据信息集合,其中,数据信息集合中至少包括:代理设备的CPU利用率、代理设备的内存利用率和代理设备当前可接收的报文数量。
例如,上述的数据信息集合中可以包括代理设备实时的CPU利用率、内存利用率和剩余报文数等。故可以获取代理设备实时系统状态,可以包括CPU利用率、内存利用率和剩余报文数(上述的代理设备当前可接收的报文数量)等。
步骤S303,依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
例如,可以根据sock0(上述的第一套接字)的接收队列长度、以及sock1(上述的第二套接字)的发送队列长度、以及代理设备的CPU利用率、内存利用率和剩余报文数等计算并调整sock0的接收窗口的大小。
步骤S304,通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备。
例如,在调整sock0(上述的第一套接字)的接收窗口的大小之后,可以基于调整后的sock0的接收窗口将发送端(上述的发送设备)发送的报文请求(上述的目标请求)发送给接收端(上述的接收设备)。
通过上述的步骤S301至S304,通过获取第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合,并依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口,再通过调整后的第一套接字的接收窗口响应发送设备发送的目标请求,并将目标报文发送至接收设备,从而可以及时调整代理设备的接收窗口的大小,并避免代理设备与发送端和接收端之间的TCP连接出现阻塞的情况,确保TCP代理的稳定性,进而达到了提升利用TCP传输控制协议传输数据的效率的效果。
可选地,在本申请实施例提供的数据处理方法中,依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:依据第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小;基于代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
例如,可以先根据sock0(上述的第一套接字)的接收队列长度、以及sock1(上述的第二套接字)的发送队列长度计算出sock0(上述的第一套接字)的接收窗口的初始大小,然后可以根据代理设备的CPU利用率、内存利用率和剩余报文数等对计算得到的sock0(上述的第一套接字)的接收窗口的初始大小进行调整,并得到调整后的sock0的接收窗口。
通过上述的方案,根据设备的实时系统状态可以动态调整TCP的接收窗口的大小。
可选地,在本申请实施例提供的数据处理方法中,依据第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小包括:获取第一套接字的接收窗口的初始大小;依据第一套接字的接收窗口的初始大小、第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小。
在TCP代理场景下,通过创建两个用户态socket(即创建sock0套接字和sock1套接字),并关联这两个socket(套接字),且sock0(上述的第一套接字)的接收窗口可以受sock0(上述的第一套接字)的接收队列长度、以及sock1(上述的第二套接字)的发送队列长度的共同控制:
sock0_rcv_wnd=default_wnd-(sock0_rcv_queue+sock1_send_queue)
其中,sock0_rcv_wnd表示sock0的接收窗口的大小,default_wnd表示默认窗口的大小(对应上述的接收窗口的初始大小),且default_wnd可约定默认值为128KB,sock0_rcv_queue表示sock0的接收队列长度,sock1_send_queue表示sock1的发送队列长度。
同理,sock1(上述的第二套接字)的接收窗口受sock1(上述的第二套接字)的接收队列长度、以及sock0(上述的第一套接字)的发送队列长度的共同控制:
sock1_rcv_Wnd=default_wnd-(sock1_rcv_queue+sock0_send_queue)
其中,sock1_rcv_wnd表示sock1的接收窗口的大小,default_wnd表示默认窗口的大小(对应上述的接收窗口的初始大小),且default_wnd可约定默认值为128KB,sock1_rcv_queue表示sock1的接收队列长度,sock0_send_queue表示sock0的发送队列长度。
综上所述,在两侧网络质量不一致的情况下,两侧的TCP连接仍然是独立的,可以基于TCP连接可靠传输的特性,保证数据可靠传输,同时通过动态调整sock0和sock1的接收窗口,平衡两侧的TCP连接传输速度,避免出现由于应用层处理慢,导致TCP连接数据传输出现阻塞的情况。
可选地,在本申请实施例提供的数据处理方法中,基于代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:判断数据信息集合中代理设备当前可接收的报文数量是否小于预设数量;若数据信息集合中代理设备当前可接收的报文数量小于预设数量,则将第一套接字的接收窗口的大小调整为0;若数据信息集合中代理设备当前可接收的报文数量不小于预设数量,则判断数据信息集合中代理设备的CPU利用率是否大于第一预设利用率,并判断数据信息集合中代理设备的内存利用率是否大于第二预设利用率,得到判断结果;依据判断结果调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
例如,在动态调整TCP窗口时,可以先判断代理设备的剩余报文数是否小于阈值(上述的预设数量);如果代理设备的剩余报文数小于阈值(上述的预设数量),则可以将sock0(上述的第一套接字)的接收窗口的大小设置为0;如果代理设备的剩余报文数不小于阈值(上述的预设数量),则可以再判断代理设备的CPU利用率是否大于90%(上述的第一预设利用率),并判断代理设备的内存利用率是否大于95%(上述的第二预设利用率);再根据两者(CPU利用率和内存利用率)的判断结果对sock0(上述的第一套接字)的接收窗口进行动态调整。另外,上述的第一预设利用率和上述的第二预设利用率对应的数值可以相同,也可以不相同,也即,上述的第一预设利用率和上述的第二预设利用率可以都设置为90%,也可以将上述的第一预设利用率设置为90%,将上述的第二预设利用率设置为95%。
通过上述的方案,当系统剩余报文数低于阈值时,sock0可以关闭TCP窗口,并拒绝新的TCP连接,防止报文资源被进一步消耗,而影响到其他TCP连接。
可选地,在本申请实施例提供的数据处理方法中,依据判断结果调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:若数据信息集合中代理设备的CPU利用率大于第一预设利用率,数据信息集合中代理设备的内存利用率不大于第二预设利用率,则将第一套接字的接收窗口缩小至目标数值;若数据信息集合中代理设备的CPU利用率不大于第一预设利用率,数据信息集合中代理设备的内存利用率大于第二预设利用率,则将第一套接字的接收窗口缩小至目标数值;若数据信息集合中代理设备的CPU利用率不大于第一预设利用率,数据信息集合中代理设备的内存利用率不大于第二预设利用率,则不调整第一套接字的接收窗口的大小;若数据信息集合中代理设备的CPU利用率大于第一预设利用率,数据信息集合中代理设备的内存利用率大于第二预设利用率,则基于代理设备的CPU利用率和代理设备的内存利用率调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
例如,当代理设备的CPU利用率大于90%(上述的第一预设利用率),且代理设备的内存利用率不大于95%(上述的第二预设利用率)时,sock0可以在原有窗口的基础上,乘以一个系数,也即,当CPU利用率超过90%,则接下来CPU利用率越高,TCP窗口越小;当代理设备的CPU利用率不大于90%(上述的第一预设利用率),且代理设备的内存利用率大于95%(上述的第二预设利用率)时,sock0可以在原有窗口的基础上,乘以一个系数,也即,当内存利用率超过95%,则接下来内存利用率越高,TCP窗口越小;当代理设备的CPU利用率不大于90%(上述的第一预设利用率),且代理设备的内存利用率不大于95%(上述的第二预设利用率)时,则无需调整sock0(上述的第一套接字)的接收窗口;当代理设备的CPU利用率大于90%(上述的第一预设利用率),且代理设备的内存利用率大于95%(上述的第二预设利用率)时,则可以根据代理设备的CPU利用率和内存利用率对sock0(上述的第一套接字)的接收窗口大小进行调整。
通过上述的方案,当系统的CPU利用率或者内存利用率超过预设数值时可以使TCP窗口变小,从而可以保证系统的稳定性,并防止影响到已经代理的TCP连接。
可选地,在本申请实施例提供的数据处理方法中,基于代理设备的CPU利用率和代理设备的内存利用率调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:基于代理设备的CPU利用率计算第一套接字的接收窗口的大小,得到接收窗口对应的第一大小;基于代理设备的内存利用率计算第一套接字的接收窗口的大小,得到接收窗口对应的第二大小;比较第一大小和第二大小对应的数值,得到第一大小和第二大小中较小的数值;将第一套接字的接收窗口的大小调整为第一大小和第二大小中较小的数值,得到调整后的第一套接字的接收窗口。
例如,当代理设备的CPU利用率大于90%(上述的第一预设利用率),且代理设备的内存利用率大于95%(上述的第二预设利用率)时,则sock0可以在原有窗口的基础上,乘以一个系数,并确定基于CPU利用率计算得到的sock0(上述的第一套接字)的接收窗口大小,确定基于内存利用率计算得到的sock0(上述的第一套接字)的接收窗口大小,再取计算得到的两个接收窗口中的较小的一个窗口作为sock0(上述的第一套接字)的最终接收窗口。
通过上述的方案,当系统的CPU利用率和内存利用率均超过预设数值时可以将较小的一个窗口作为sock0的最终接收窗口,从而可以保证系统的稳定性,并防止影响到已经代理的TCP连接。
可选地,在本申请实施例提供的数据处理方法中,通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备包括:获取目标报文的序列号,并基于目标报文的序列号,判断调整后的第一套接字的接收窗口是否允许接收目标报文;若调整后的第一套接字的接收窗口不允许接收目标报文,则禁止将目标报文发送至接收设备;若调整后的第一套接字的接收窗口允许接收目标报文,则将目标报文添加至第一套接字的接收队列中;从第一套接字的接收队列中读取目标报文,并将目标报文添加至第二套接字的发送队列中;将第二套接字的发送队列中的目标报文发送至接收设备。
例如,图4是根据本申请实施例提供的可选的数据处理方法的示意图,如图4所示,代理设备与发送端通过sock0建立TCP连接,与接收端通过sock1建立TCP连接,且可选的数据处理方法包括如下步骤:
(1)发送端发送请求到代理设备;
(2)代理设备计算并调整自身的接收窗口,当收到的报文sequence(序列号)在接收窗口允许的范围内时,允许接收该报文,并将其放入sock0的接收队列;
(3)应用层读取sock0的接收队列,按序读取,并取出报文,处理结束后将报文放入sock1的发送队列;
(4)代理设备通过sock1将报文发送给接收端;
(5)接收端返的回报文到达代理设备;
(6)代理设备计算并调整自身的接收窗口,当收到的报文sequence(序列号)在接收窗口允许的范围内时,允许接收该报文,并将其放入sock1的接收队列;
(7)应用层读取sock1的接收队列,按序读取,并取出报文,处理结束后将报文放入sock0的发送队列;
(8)代理设备通过sock0将报文发送给发送端。
综上所述,通过创建的两个用户态socket套接字可以避免出现TCP连接被阻塞的情况,并可以为用户提供高性能、稳定的TCP代理方案。
可选地,在本申请实施例提供的数据处理方法中,在通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备之后,该方法还包括:当检测到第一套接字在预设时间段内向发送设备发送目标通知信息,则重新计算第一套接字的接收窗口的大小,得到重新计算的第一套接字的接收窗口的大小,其中,预设时间段为在发送设备发送目标请求之后,且在接收设备接收到目标报文之前的时间段,目标通知信息用于通知发送设备第一套接字的接收窗口的大小为0;在重新计算的第一套接字的接收窗口的大小大于预设值的情况下,通过第一套接字向发送设备发送窗口更新报文,其中,窗口更新报文用于通知发送设备第一套接字的接收窗口的大小不为0。
例如,图5是本申请实施例中主动通知窗口更新的示意图,如图5所示,代理设备在完成对sock1接收队列的报文处理后,主动检查一次sock0最近是否出现过零窗口,并重新计算一次sock0的接收窗口大小(由于此时sock0的接收队列已被清空,此时sock0的接收窗口大概率会更新并扩大);如果sock0最近向外通告过零窗口,且当前sock0的窗口已经更新(假如上述的预设值可以为16KB,即重新计算的sock0的接收窗口大小超过16KB),则sock0可以主动向发送端发送一个窗口更新报文(window update),使得TCP连接恢复数据传输。另外,如果sock0最近向外通告过零窗口,但是重新计算的sock0的接收窗口大小不超过16KB,则sock0不可以主动向发送端发送窗口更新报文。
通过上述的方案,可以避免TCP连接长时间处于空闲状态,从而可以大大提升数据的传输效率。
例如,本实施例提供了一种在代理模式下控制TCP接收窗口的方案,通过创建用户态TCP socket(套接字),并关联两侧socket,结合系统实时CPU利用率、内存利用率、系统剩余可用报文数,动态调整TCP窗口,并在TCP连接出现零窗口时,主动发送TCP窗口更新报文,避免TCP连接长时间处于等待或拥塞状态,可以使得网络代理设备在大并发的场景下拥有良好的TCP代理新建性能和吞吐表现。
另外,图4是根据本申请实施例提供的可选的数据处理方法的示意图,如图4所示,代理设备与发送端通过sock0建立TCP连接,与接收端通过sock1建立TCP连接,且可选的数据处理方法包括如下步骤:
(1)发送端发送请求到代理设备;
(2)代理设备计算并调整自身的接收窗口,当收到的报文sequence(序列号)在接收窗口允许的范围内时,允许接收该报文,并将其放入sock0的接收队列;
(3)应用层读取sock0的接收队列,按序读取,并取出报文,处理结束后将报文放入sock1的发送队列;
(4)代理设备通过sock1将报文发送给接收端;
(5)接收端返的回报文到达代理设备;
(6)代理设备计算并调整自身的接收窗口,当收到的报文sequence(序列号)在接收窗口允许的范围内时,允许接收该报文,并将其放入sock1的接收队列;
(7)应用层读取sock1的接收队列,按序读取,并取出报文,处理结束后将报文放入sock0的发送队列;
(8)代理设备通过sock0将报文发送给发送端。
例如,关联两侧socket可以具体为:
例如,如图4所示,在TCP代理场景下,通过创建两个用户态socket(即创建sock0套接字和sock1套接字),并关联这两个socket(套接字),且sock0的接收窗口可以受sock0的接收队列长度、以及sock1的发送队列长度的共同控制:
sock0_rcv_wnd=default_wnd-(sock0_rcv_queue+sock1_send_queue)
其中,sock0_rcv_wnd表示sock0的接收窗口的大小,default_wnd表示默认窗口的大小,且default_wnd可约定默认值为128KB,sock0_rcv_queue表示sock0的接收队列长度,sock1_send_queue表示sock1的发送队列长度。
同理,sock1的接收窗口受sock1的接收队列长度、以及sock0的发送队列长度的共同控制:
sock1_rcv_wnd=default_wnd-(sock1_rcv_queue+sock0_send_queue)
其中,sock1_rcv_wnd表示sock1的接收窗口的大小,default_wnd表示默认窗口的大小,且default_wnd可约定默认值为128KB,sock1_rcv_queue表示sock1的接收队列长度,sock0_send_queue表示sock0的发送队列长度。
这样在两侧网络质量不一致的情况下,两侧的TCP连接仍然是独立的,可以基于TCP连接可靠传输的特性,保证数据可靠传输,同时通过动态调整sock0和sock1的接收窗口,平衡两侧的TCP连接传输速度,避免出现由于应用层处理慢,导致TCP连接数据传输出现阻塞的情况。
例如,动态调整TCP窗口可以具体如下:
当同时有多个发送端发起TCP连接请求时,即出现大量并发TCP连接的情况下,由于初始状态两侧socket的接收队列和发送队列都处于空闲状态,此时sock0计算出来的TCP接收窗口为default_wnd(可约定默认值为128KB),但是由于此时并发TCP连接数多,代理设备的剩余资源很紧张的情况下,sock0向发送端通告一个128KB的窗口是不合适的,很容易造成TCP连接拥塞,并且会导致代理设备的系统资源进一步被消耗,甚至影响其他TCP连接的数据传输。
在本实施例中,可以充分考虑代理设备实时系统状态,包括CPU利用率(以c表示,且0%≤c≤100%)、内存利用率(以m表示,且0%≤m≤100%)、剩余报文数(以p表示,且p不应低于阈值Pthresh,且该阈值支持配置),并可以通过如下方式动态计算出TCP连接的接收窗口。
其中,sock0_rcv_wnd表示sock0的接收窗口的大小,Km和Kc均表示系数,wnd表示默认窗口(基础窗口)的大小。
(1)当p<Pthresh,即系统剩余报文数低于阈值时,sock0应该关闭TCP窗口,拒绝新的TCP连接,防止报文资源被进一步消耗,而影响到其他TCP连接;
(2)当m≥90%,c<90%,sock0应在原有窗口的基础上,乘以一个系数,当内存利用率超过90%,则接下来内存利用率越高,TCP窗口越小;
(3)当m<90%,c≥90%,sock0应在原有窗口的基础上,乘以一个系数,当CPU利用率超过90%,则接下来CPU利用率越高,TCP窗口越小;
(4)当m≥90%,c≥90%,sock0应在原有窗口的基础上,乘以一个系数,且取窗口较小的一个。
例如,主动通知窗口更新的过程可以具体为:
在实际应用中,由于存在各种各样的影响因素(如应用层处理慢导致接收队列出现积压),难免会出现TCP零窗口现象,当sock0出现TCP零窗口时(即sock0向发送端通告的接收窗口为0),意味着发送端无法再向代理设备发送数据,当前按照TCP固有机制,只能在200ms后,由发送端发送一个窗口探测报文(window probe)到代理设备,代理设备如果此时已经将接收中的报文处理完毕,则会更新sock0的接收窗口并通告给发送端;但是一般情况下,在200ms内代理设备早已将sock1接收队列中的数据处理完了,并早已经具备再次接收数据的能力,如果代理设备一直被动的更新窗口,则该200ms时间内该TCP连接无数据传输,导致数据传输低效。
例如,图5是本申请实施例中主动通知窗口更新的示意图,如图5所示,代理设备在完成对sock1接收队列的报文处理后,主动检查一次sock0最近是否出现过零窗口,并重新计算一次sock0的接收窗口大小(由于此时sock0的接收队列已被清空,此时sock0的接收窗口大概率会更新并扩大);如果sock0最近向外通告过零窗口,且当前sock0的窗口已经更新,则sock0主动向发送端发送一个窗口更新报文(window update),使得TCP连接恢复数据传输,避免TCP连接长时间处于空闲状态,可以大大提升数据传输效率。
例如,通过本申请实施例提供的方法可以适用于网络代理设备(包括但不限于网络流量安全设备、网络数据转发设备、网络流量分析设备、网络流量管理设备,如FW(Firewall,防火墙)/NGFW(Next-Generation Firewall,下一代防火墙)、IDS(IntrusionDetection System,入侵检测系统)/IPS(Intrusion Prevention System,入侵防御系统)、WAF(Web Application Firewall,网络应用防火墙)、ADC(ADC(Application DeliveryController,负载均衡是指通过将网络流量分发到不同的应用服务器,以实现网络负载均衡的一种技术)、BDS(一种用于网络安全防护的平台)等等),同时适用于虚拟化网络功能或者虚拟化网络设备(包括但不限于虚拟化网络流量安全功能或者设备、虚拟化网络数据转发功能或者设备,虚拟化网络流量分析功能或者设备,虚拟化网络流量管理功能或者设备。
而且,可以应用于在网络代理设备上,基于用户态的TCP socket,实现对TCP连接的代理,在本TCP代理基础之上,可以实现多种应用层功能。
例如,本实施例通过创建用户态TCP socket,为用户提供了高性能、稳定的TCP代理方案,并具有如下有益效果:
(1)适用范围比较广
适用于裸机、虚拟化、容器平台等多种网络设备或者安全设备或者网络功能软件或者网络安全软件。
(2)可以实现稳定的TCP代理
通过关联两侧socket,动态调整TCP窗口,并在TCP连接出现零窗口时,主动发送窗口更新报文,多重手段确保TCP代理的稳定性和高性能的数据传输。
而且,通过创建用户态TCP socket,可以实现TCP连接代理;且通过关联两侧socket,并通过高效的关联窗口调整算法,可以动态调整TCP接收窗口;另外,在出现零窗口时,通过主动发送窗口更新报文,可以实现TCP连接的高效数据传输。
综上,本申请实施例提供的数据处理方法,通过当代理设备接收到发送设备发送的目标请求时,获取第一套接字的接收队列的长度和第二套接字的发送队列的长度,其中,目标请求用于请求发送目标报文至接收设备,接收队列用于接收目标报文,发送队列用于发送目标报文;获取代理设备的数据信息集合,其中,数据信息集合中至少包括:代理设备的CPU利用率、代理设备的内存利用率和代理设备当前可接收的报文数量;依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备,解决了相关技术中难以及时调整代理设备的接收窗口的大小,导致代理设备与发送端和接收端之间的TCP连接容易出现阻塞的情况,进而导致利用TCP传输控制协议传输数据的效率较低的问题。通过获取第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合,并依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口,再通过调整后的第一套接字的接收窗口响应发送设备发送的目标请求,并将目标报文发送至接收设备,从而可以及时调整代理设备的接收窗口的大小,并避免代理设备与发送端和接收端之间的TCP连接出现阻塞的情况,确保TCP代理的稳定性,进而达到了提升利用TCP传输控制协议传输数据的效率的效果。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种数据处理装置,需要说明的是,本申请实施例的数据处理装置可以用于执行本申请实施例所提供的用于数据处理方法。以下对本申请实施例提供的数据处理装置进行介绍。
图6是根据本申请实施例提供的数据处理装置的示意图。如图6所示,该装置包括:第一获取模块601、第二获取模块602、第一处理模块603和第一发送模块604。
具体地,第一获取模块601,用于当代理设备接收到发送设备发送的目标请求时,获取第一套接字的接收队列的长度和第二套接字的发送队列的长度,其中,目标请求用于请求发送目标报文至接收设备,接收队列用于接收目标报文,发送队列用于发送目标报文;
第二获取模块602,用于获取代理设备的数据信息集合,其中,数据信息集合中至少包括:代理设备的CPU利用率、代理设备的内存利用率和代理设备当前可接收的报文数量;
第一处理模块603,用于依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;
第一发送模块604,用于通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备。
综上,本申请实施例提供的数据处理装置,通过第一获取模块601当代理设备接收到发送设备发送的目标请求时,获取第一套接字的接收队列的长度和第二套接字的发送队列的长度,其中,目标请求用于请求发送目标报文至接收设备,接收队列用于接收目标报文,发送队列用于发送目标报文;第二获取模块602获取代理设备的数据信息集合,其中,数据信息集合中至少包括:代理设备的CPU利用率、代理设备的内存利用率和代理设备当前可接收的报文数量;第一处理模块603依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;第一发送模块604通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备,解决了相关技术中难以及时调整代理设备的接收窗口的大小,导致代理设备与发送端和接收端之间的TCP连接容易出现阻塞的情况,进而导致利用TCP传输控制协议传输数据的效率较低的问题。通过获取第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合,并依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口,再通过调整后的第一套接字的接收窗口响应发送设备发送的目标请求,并将目标报文发送至接收设备,从而可以及时调整代理设备的接收窗口的大小,并避免代理设备与发送端和接收端之间的TCP连接出现阻塞的情况,确保TCP代理的稳定性,进而达到了提升利用TCP传输控制协议传输数据的效率的效果。
可选地,在本申请实施例提供的数据处理装置中,第一处理模块603包括:第一确定单元,用于依据第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小;第一处理单元,用于基于代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
可选地,在本申请实施例提供的数据处理装置中,第一处理单元包括:第一判断子模块,用于判断数据信息集合中代理设备当前可接收的报文数量是否小于预设数量;第一处理子模块,用于若数据信息集合中代理设备当前可接收的报文数量小于预设数量,则将第一套接字的接收窗口的大小调整为0;第二判断子模块,用于若数据信息集合中代理设备当前可接收的报文数量不小于预设数量,则判断数据信息集合中代理设备的CPU利用率是否大于第一预设利用率,并判断数据信息集合中代理设备的内存利用率是否大于第二预设利用率,得到判断结果;第二处理子模块,用于依据判断结果调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
可选地,在本申请实施例提供的数据处理装置中,第二处理子模块包括:第一缩小子单元,用于若数据信息集合中代理设备的CPU利用率大于第一预设利用率,数据信息集合中代理设备的内存利用率不大于第二预设利用率,则将第一套接字的接收窗口缩小至目标数值;第二缩小子单元,用于若数据信息集合中代理设备的CPU利用率不大于第一预设利用率,数据信息集合中代理设备的内存利用率大于第二预设利用率,则将第一套接字的接收窗口缩小至目标数值;第一处理子单元,用于若数据信息集合中代理设备的CPU利用率不大于第一预设利用率,数据信息集合中代理设备的内存利用率不大于第二预设利用率,则不调整第一套接字的接收窗口的大小;第二处理子单元,用于若数据信息集合中代理设备的CPU利用率大于第一预设利用率,数据信息集合中代理设备的内存利用率大于第二预设利用率,则基于代理设备的CPU利用率和代理设备的内存利用率调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
可选地,在本申请实施例提供的数据处理装置中,第二处理子单元包括:计算子单元一,用于基于代理设备的CPU利用率计算第一套接字的接收窗口的大小,得到接收窗口对应的第一大小;计算子单元二,用于基于代理设备的内存利用率计算第一套接字的接收窗口的大小,得到接收窗口对应的第二大小;比较子单元一,用于比较第一大小和第二大小对应的数值,得到第一大小和第二大小中较小的数值;调整子单元一,用于将第一套接字的接收窗口的大小调整为第一大小和第二大小中较小的数值,得到调整后的第一套接字的接收窗口。
可选地,在本申请实施例提供的数据处理装置中,第一确定单元包括:第一获取子模块,用于获取第一套接字的接收窗口的初始大小;第一确定子模块,用于依据第一套接字的接收窗口的初始大小、第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小。
可选地,在本申请实施例提供的数据处理装置中,该装置还包括:第一检测模块,用于在通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备之后,当检测到第一套接字在预设时间段内向发送设备发送目标通知信息,则重新计算第一套接字的接收窗口的大小,得到重新计算的第一套接字的接收窗口的大小,其中,预设时间段为在发送设备发送目标请求之后,且在接收设备接收到目标报文之前的时间段,目标通知信息用于通知发送设备第一套接字的接收窗口的大小为0;第二发送模块,用于在重新计算的第一套接字的接收窗口的大小大于预设值的情况下,通过第一套接字向发送设备发送窗口更新报文,其中,窗口更新报文用于通知发送设备第一套接字的接收窗口的大小不为0。
可选地,在本申请实施例提供的数据处理装置中,第一发送模块604包括:第二处理单元,用于获取目标报文的序列号,并基于目标报文的序列号,判断调整后的第一套接字的接收窗口是否允许接收目标报文;第三处理单元,用于若调整后的第一套接字的接收窗口不允许接收目标报文,则禁止将目标报文发送至接收设备;第一添加单元,用于若调整后的第一套接字的接收窗口允许接收目标报文,则将目标报文添加至第一套接字的接收队列中;第二添加单元,用于从第一套接字的接收队列中读取目标报文,并将目标报文添加至第二套接字的发送队列中;第一发送单元,用于将第二套接字的发送队列中的目标报文发送至接收设备。
数据处理装置包括处理器和存储器,上述的第一获取模块601、第二获取模块602、第一处理模块603和第一发送模块604等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来提升利用TCP传输控制协议传输数据的效率。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述数据处理方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据处理方法。
如图7所示,本发明实施例提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:当代理设备接收到发送设备发送的目标请求时,获取第一套接字的接收队列的长度和第二套接字的发送队列的长度,其中,目标请求用于请求发送目标报文至接收设备,接收队列用于接收目标报文,发送队列用于发送目标报文;获取代理设备的数据信息集合,其中,数据信息集合中至少包括:代理设备的CPU利用率、代理设备的内存利用率和代理设备当前可接收的报文数量;依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备。
处理器执行程序时还实现以下步骤:依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:依据第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小;基于代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
处理器执行程序时还实现以下步骤:基于代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:判断数据信息集合中代理设备当前可接收的报文数量是否小于预设数量;若数据信息集合中代理设备当前可接收的报文数量小于预设数量,则将第一套接字的接收窗口的大小调整为0;若数据信息集合中代理设备当前可接收的报文数量不小于预设数量,则判断数据信息集合中代理设备的CPU利用率是否大于第一预设利用率,并判断数据信息集合中代理设备的内存利用率是否大于第二预设利用率,得到判断结果;依据判断结果调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
处理器执行程序时还实现以下步骤:依据判断结果调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:若数据信息集合中代理设备的CPU利用率大于第一预设利用率,数据信息集合中代理设备的内存利用率不大于第二预设利用率,则将第一套接字的接收窗口缩小至目标数值;若数据信息集合中代理设备的CPU利用率不大于第一预设利用率,数据信息集合中代理设备的内存利用率大于第二预设利用率,则将第一套接字的接收窗口缩小至目标数值;若数据信息集合中代理设备的CPU利用率不大于第一预设利用率,数据信息集合中代理设备的内存利用率不大于第二预设利用率,则不调整第一套接字的接收窗口的大小;若数据信息集合中代理设备的CPU利用率大于第一预设利用率,数据信息集合中代理设备的内存利用率大于第二预设利用率,则基于代理设备的CPU利用率和代理设备的内存利用率调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
处理器执行程序时还实现以下步骤:基于代理设备的CPU利用率和代理设备的内存利用率调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:基于代理设备的CPU利用率计算第一套接字的接收窗口的大小,得到接收窗口对应的第一大小;基于代理设备的内存利用率计算第一套接字的接收窗口的大小,得到接收窗口对应的第二大小;比较第一大小和第二大小对应的数值,得到第一大小和第二大小中较小的数值;将第一套接字的接收窗口的大小调整为第一大小和第二大小中较小的数值,得到调整后的第一套接字的接收窗口。
处理器执行程序时还实现以下步骤:依据第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小包括:获取第一套接字的接收窗口的初始大小;依据第一套接字的接收窗口的初始大小、第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小。
处理器执行程序时还实现以下步骤:在通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备之后,该方法还包括:当检测到第一套接字在预设时间段内向发送设备发送目标通知信息,则重新计算第一套接字的接收窗口的大小,得到重新计算的第一套接字的接收窗口的大小,其中,预设时间段为在发送设备发送目标请求之后,且在接收设备接收到目标报文之前的时间段,目标通知信息用于通知发送设备第一套接字的接收窗口的大小为0;在重新计算的第一套接字的接收窗口的大小大于预设值的情况下,通过第一套接字向发送设备发送窗口更新报文,其中,窗口更新报文用于通知发送设备第一套接字的接收窗口的大小不为0。
处理器执行程序时还实现以下步骤:通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备包括:获取目标报文的序列号,并基于目标报文的序列号,判断调整后的第一套接字的接收窗口是否允许接收目标报文;若调整后的第一套接字的接收窗口不允许接收目标报文,则禁止将目标报文发送至接收设备;若调整后的第一套接字的接收窗口允许接收目标报文,则将目标报文添加至第一套接字的接收队列中;从第一套接字的接收队列中读取目标报文,并将目标报文添加至第二套接字的发送队列中;将第二套接字的发送队列中的目标报文发送至接收设备。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:当代理设备接收到发送设备发送的目标请求时,获取第一套接字的接收队列的长度和第二套接字的发送队列的长度,其中,目标请求用于请求发送目标报文至接收设备,接收队列用于接收目标报文,发送队列用于发送目标报文;获取代理设备的数据信息集合,其中,数据信息集合中至少包括:代理设备的CPU利用率、代理设备的内存利用率和代理设备当前可接收的报文数量;依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:依据第一套接字的接收队列的长度、第二套接字的发送队列的长度和代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:依据第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小;基于代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:基于代理设备的数据信息集合调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:判断数据信息集合中代理设备当前可接收的报文数量是否小于预设数量;若数据信息集合中代理设备当前可接收的报文数量小于预设数量,则将第一套接字的接收窗口的大小调整为0;若数据信息集合中代理设备当前可接收的报文数量不小于预设数量,则判断数据信息集合中代理设备的CPU利用率是否大于第一预设利用率,并判断数据信息集合中代理设备的内存利用率是否大于第二预设利用率,得到判断结果;依据判断结果调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:依据判断结果调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:若数据信息集合中代理设备的CPU利用率大于第一预设利用率,数据信息集合中代理设备的内存利用率不大于第二预设利用率,则将第一套接字的接收窗口缩小至目标数值;若数据信息集合中代理设备的CPU利用率不大于第一预设利用率,数据信息集合中代理设备的内存利用率大于第二预设利用率,则将第一套接字的接收窗口缩小至目标数值;若数据信息集合中代理设备的CPU利用率不大于第一预设利用率,数据信息集合中代理设备的内存利用率不大于第二预设利用率,则不调整第一套接字的接收窗口的大小;若数据信息集合中代理设备的CPU利用率大于第一预设利用率,数据信息集合中代理设备的内存利用率大于第二预设利用率,则基于代理设备的CPU利用率和代理设备的内存利用率调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:基于代理设备的CPU利用率和代理设备的内存利用率调整第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:基于代理设备的CPU利用率计算第一套接字的接收窗口的大小,得到接收窗口对应的第一大小;基于代理设备的内存利用率计算第一套接字的接收窗口的大小,得到接收窗口对应的第二大小;比较第一大小和第二大小对应的数值,得到第一大小和第二大小中较小的数值;将第一套接字的接收窗口的大小调整为第一大小和第二大小中较小的数值,得到调整后的第一套接字的接收窗口。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:依据第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小包括:获取第一套接字的接收窗口的初始大小;依据第一套接字的接收窗口的初始大小、第一套接字的接收队列的长度和第二套接字的发送队列的长度,确定第一套接字的接收窗口的大小。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备之后,该方法还包括:当检测到第一套接字在预设时间段内向发送设备发送目标通知信息,则重新计算第一套接字的接收窗口的大小,得到重新计算的第一套接字的接收窗口的大小,其中,预设时间段为在发送设备发送目标请求之后,且在接收设备接收到目标报文之前的时间段,目标通知信息用于通知发送设备第一套接字的接收窗口的大小为0;在重新计算的第一套接字的接收窗口的大小大于预设值的情况下,通过第一套接字向发送设备发送窗口更新报文,其中,窗口更新报文用于通知发送设备第一套接字的接收窗口的大小不为0。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:通过调整后的第一套接字的接收窗口响应目标请求,并将目标报文发送至接收设备包括:获取目标报文的序列号,并基于目标报文的序列号,判断调整后的第一套接字的接收窗口是否允许接收目标报文;若调整后的第一套接字的接收窗口不允许接收目标报文,则禁止将目标报文发送至接收设备;若调整后的第一套接字的接收窗口允许接收目标报文,则将目标报文添加至第一套接字的接收队列中;从第一套接字的接收队列中读取目标报文,并将目标报文添加至第二套接字的发送队列中;将第二套接字的发送队列中的目标报文发送至接收设备。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法应用在数据处理系统中,所述数据处理系统中至少包括:代理设备、用于发送目标报文的发送设备和用于接收所述目标报文的接收设备,所述代理设备中至少包括第一套接字和第二套接字,所述第一套接字用于建立所述代理设备与所述发送设备之间的第一TCP连接,所述第二套接字用于建立所述代理设备与所述接收设备之间的第二TCP连接,所述第一TCP连接和所述第二TCP连接用于传输所述目标报文,所述目标报文中至少包括待从所述发送设备发送至所述接收设备的数据,所述数据处理方法包括:
当所述代理设备接收到所述发送设备发送的目标请求时,获取所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,其中,所述目标请求用于请求发送所述目标报文至所述接收设备,所述接收队列用于接收所述目标报文,所述发送队列用于发送所述目标报文;
获取所述代理设备的数据信息集合,其中,所述数据信息集合中至少包括:所述代理设备的CPU利用率、所述代理设备的内存利用率和所述代理设备当前可接收的报文数量;
依据所述第一套接字的接收队列的长度、所述第二套接字的发送队列的长度和所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;
通过所述调整后的第一套接字的接收窗口响应所述目标请求,并将所述目标报文发送至所述接收设备。
2.根据权利要求1所述的方法,其特征在于,依据所述第一套接字的接收队列的长度、所述第二套接字的发送队列的长度和所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口包括:
依据所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,确定所述第一套接字的接收窗口的大小;
基于所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口。
3.根据权利要求2所述的方法,其特征在于,基于所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口包括:
判断所述数据信息集合中所述代理设备当前可接收的报文数量是否小于预设数量;
若所述数据信息集合中所述代理设备当前可接收的报文数量小于所述预设数量,则将所述第一套接字的接收窗口的大小调整为0;
若所述数据信息集合中所述代理设备当前可接收的报文数量不小于所述预设数量,则判断所述数据信息集合中所述代理设备的CPU利用率是否大于第一预设利用率,并判断所述数据信息集合中所述代理设备的内存利用率是否大于第二预设利用率,得到判断结果;
依据所述判断结果调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口。
4.根据权利要求3所述的方法,其特征在于,依据所述判断结果调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口包括:
若所述数据信息集合中所述代理设备的CPU利用率大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率不大于所述第二预设利用率,则将所述第一套接字的接收窗口缩小至目标数值;
若所述数据信息集合中所述代理设备的CPU利用率不大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率大于所述第二预设利用率,则将所述第一套接字的接收窗口缩小至所述目标数值;
若所述数据信息集合中所述代理设备的CPU利用率不大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率不大于所述第二预设利用率,则不调整所述第一套接字的接收窗口的大小;
若所述数据信息集合中所述代理设备的CPU利用率大于所述第一预设利用率,所述数据信息集合中所述代理设备的内存利用率大于所述第二预设利用率,则基于所述代理设备的CPU利用率和所述代理设备的内存利用率调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口。
5.根据权利要求4所述的方法,其特征在于,基于所述代理设备的CPU利用率和所述代理设备的内存利用率调整所述第一套接字的接收窗口的大小,得到所述调整后的第一套接字的接收窗口包括:
基于所述代理设备的CPU利用率计算所述第一套接字的接收窗口的大小,得到所述接收窗口对应的第一大小;
基于所述代理设备的内存利用率计算所述第一套接字的接收窗口的大小,得到所述接收窗口对应的第二大小;
比较所述第一大小和所述第二大小对应的数值,得到所述第一大小和所述第二大小中较小的数值;
将所述第一套接字的接收窗口的大小调整为所述第一大小和所述第二大小中较小的数值,得到所述调整后的第一套接字的接收窗口。
6.根据权利要求2所述的方法,其特征在于,依据所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,确定所述第一套接字的接收窗口的大小包括:
获取所述第一套接字的接收窗口的初始大小;
依据所述第一套接字的接收窗口的初始大小、所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,确定所述第一套接字的接收窗口的大小。
7.根据权利要求1所述的方法,其特征在于,在通过所述调整后的第一套接字的接收窗口响应所述目标请求,并将所述目标报文发送至所述接收设备之后,所述方法还包括:
当检测到所述第一套接字在预设时间段内向所述发送设备发送目标通知信息,则重新计算所述第一套接字的接收窗口的大小,得到重新计算的第一套接字的接收窗口的大小,其中,所述预设时间段为在所述发送设备发送所述目标请求之后,且在所述接收设备接收到所述目标报文之前的时间段,所述目标通知信息用于通知所述发送设备所述第一套接字的接收窗口的大小为0;
在所述重新计算的第一套接字的接收窗口的大小大于预设值的情况下,通过所述第一套接字向所述发送设备发送窗口更新报文,其中,所述窗口更新报文用于通知所述发送设备所述第一套接字的接收窗口的大小不为0。
8.根据权利要求1所述的方法,其特征在于,通过所述调整后的第一套接字的接收窗口响应所述目标请求,并将所述目标报文发送至所述接收设备包括:
获取所述目标报文的序列号,并基于所述目标报文的序列号,判断所述调整后的第一套接字的接收窗口是否允许接收所述目标报文;
若所述调整后的第一套接字的接收窗口不允许接收所述目标报文,则禁止将所述目标报文发送至所述接收设备;
若所述调整后的第一套接字的接收窗口允许接收所述目标报文,则将所述目标报文添加至所述第一套接字的接收队列中;
从所述第一套接字的接收队列中读取所述目标报文,并将所述目标报文添加至所述第二套接字的发送队列中;
将所述第二套接字的发送队列中的所述目标报文发送至所述接收设备。
9.一种数据处理装置,其特征在于,所述装置应用在数据处理系统中,所述数据处理系统中至少包括:代理设备、用于发送目标报文的发送设备和用于接收所述目标报文的接收设备,所述代理设备中至少包括第一套接字和第二套接字,所述第一套接字用于建立所述代理设备与所述发送设备之间的第一TCP连接,所述第二套接字用于建立所述代理设备与所述接收设备之间的第二TCP连接,所述第一TCP连接和所述第二TCP连接用于传输所述目标报文,所述目标报文中至少包括待从所述发送设备发送至所述接收设备的数据,所述数据处理装置包括:
第一获取模块,用于当所述代理设备接收到所述发送设备发送的目标请求时,获取所述第一套接字的接收队列的长度和所述第二套接字的发送队列的长度,其中,所述目标请求用于请求发送所述目标报文至所述接收设备,所述接收队列用于接收所述目标报文,所述发送队列用于发送所述目标报文;
第二获取模块,用于获取所述代理设备的数据信息集合,其中,所述数据信息集合中至少包括:所述代理设备的CPU利用率、所述代理设备的内存利用率和所述代理设备当前可接收的报文数量;
第一处理模块,用于依据所述第一套接字的接收队列的长度、所述第二套接字的发送队列的长度和所述代理设备的数据信息集合调整所述第一套接字的接收窗口的大小,得到调整后的第一套接字的接收窗口;
第一发送模块,用于通过所述调整后的第一套接字的接收窗口响应所述目标请求,并将所述目标报文发送至所述接收设备。
10.一种用于数据处理的处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至8中任意一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311515493.8A CN117596310A (zh) | 2023-11-14 | 2023-11-14 | 数据处理方法及装置、处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311515493.8A CN117596310A (zh) | 2023-11-14 | 2023-11-14 | 数据处理方法及装置、处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117596310A true CN117596310A (zh) | 2024-02-23 |
Family
ID=89909189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311515493.8A Pending CN117596310A (zh) | 2023-11-14 | 2023-11-14 | 数据处理方法及装置、处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117596310A (zh) |
-
2023
- 2023-11-14 CN CN202311515493.8A patent/CN117596310A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200195537A1 (en) | Load balancing web service by rejecting connections | |
KR101632187B1 (ko) | 무상태 및 유상태 서버 부하 분산 결합 방법 | |
CN101815033B (zh) | 负载均衡的方法、设备及系统 | |
WO2018112877A1 (zh) | 路径计算和访问请求分发方法、装置及系统 | |
US9654483B1 (en) | Network communication rate limiter | |
EP3665893A1 (en) | Context-aware path computation and selection | |
US20030145236A1 (en) | Server computer protection apparatus and method for controlling data transfer by the same | |
US10178033B2 (en) | System and method for efficient traffic shaping and quota enforcement in a cluster environment | |
US20230139633A1 (en) | Data Packet Sending Method and Apparatus | |
CN112839081A (zh) | 一种云集群的负载均衡方法 | |
JP2016531372A (ja) | メモリモジュールアクセス方法および装置 | |
US20140297844A1 (en) | Application Traffic Prioritization | |
JP2022527363A (ja) | 通信方法、装置、エンティティ及びコンピュータプログラム | |
CN116633934A (zh) | 负载均衡方法、装置、节点及存储介质 | |
WO2024088353A1 (zh) | 数据流的速率控制方法、智能网卡、云端设备及存储介质 | |
CN109639589A (zh) | 一种负载均衡方法及装置 | |
US10887236B2 (en) | Method, network interface card, and computer program product for load balance | |
CN117596310A (zh) | 数据处理方法及装置、处理器 | |
US11831707B2 (en) | Redirect processing for content delivery networks | |
Takiguchi et al. | A new application‐level link aggregation and its implementation on Android terminals | |
US20220141153A1 (en) | Server communication method, broadband access server, and system | |
CN112953984B (zh) | 数据处理方法、装置、介质及系统 | |
JP2013222407A (ja) | 流量制御機能を有するシステム | |
CN109905320B (zh) | 一种聚合端口的报文分配方法和装置 | |
KR101676653B1 (ko) | Http 세션 정보 동적 유지 방법, 이를 사용한 웹 애플리케이션 서버 및 웹 서버 |
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 |