CN113612837A - 数据处理方法、装置、介质和计算设备 - Google Patents
数据处理方法、装置、介质和计算设备 Download PDFInfo
- Publication number
- CN113612837A CN113612837A CN202110871642.9A CN202110871642A CN113612837A CN 113612837 A CN113612837 A CN 113612837A CN 202110871642 A CN202110871642 A CN 202110871642A CN 113612837 A CN113612837 A CN 113612837A
- Authority
- CN
- China
- Prior art keywords
- application process
- message
- working
- thread
- working thread
- 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 17
- 238000000034 method Methods 0.000 claims abstract description 375
- 230000008569 process Effects 0.000 claims abstract description 351
- 238000004891 communication Methods 0.000 claims abstract description 100
- 230000004044 response Effects 0.000 claims abstract description 97
- 238000004364 calculation method Methods 0.000 claims abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000005540 biological transmission Effects 0.000 claims description 21
- 238000004422 calculation algorithm Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 6
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
-
- 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
-
- 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 Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开的实施方式提供了一种数据处理方法、装置、介质和计算设备。该方法应用于网络设备,包括:第一应用进程构造待发送给运行在通信对端的网络设备上的第二应用进程的首报文;第一应用进程基于预设的调度策略,从守护进程中的多个工作线程中为首报文分配第一工作线程,并针对第二应用进程返回给第一应用进程的、与首报文对应的回应报文,进行反向预调度计算,以从多个工作线程中为回应报文分配第二工作线程;第一应用进程确定第一工作线程与第二工作线程是否相同;如果是,则将首报文发送至第一工作线程,由第一工作线程将首报文发送给第二应用进程,以基于第一工作线程与第二应用进程建立通信连接。本公开可以加快通信连接的建立速度。
Description
技术领域
本公开的实施方式涉及网络通信领域,更具体地,本公开的实施方式涉及一种数据处理方法、装置、介质和计算设备。
背景技术
本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
内核态和用户态是操作系统的两种运行级别。其中,用户态是最低特权级,是普通的用户进程运行的特权级,大部分直接面向用户的程序都是运行在用户态,例如:应用程序(Application,APP)。
在实际应用中,为了提升数据处理的性能,可以将操作系统中的网络协议栈功能从内核空间移动到用户空间;运行在用户态下的网络协议栈即为用户态协议栈。
发明内容
但是,在相关技术中,基于用户态协议栈的通信连接建立速度较慢,从而导致通信连接上的数据传输受到影响。
为此,非常需要一种改进的数据处理方法,以加快通信连接的建立速度,提高通信连接上的数据传输效率。
在本上下文中,本公开的实施方式期望提供一种数据处理方法、装置、介质和计算设备。
在本公开实施方式的第一方面中,提供了一种数据处理方法,应用于网络设备;其中,所述网络设备中运行了用户态协议栈;所述用户态协议栈包括与所述网络设备中运行的第一应用进程对应的守护进程,以及嵌入在所述第一应用进程中并与所述守护进程相适配的代理程序;所述守护进程包括多个用于进行数据发送和接收的工作线程;所述方法包括:
所述第一应用进程构造待发送给第二应用进程的首报文;其中,所述第二应用进程运行在通信对端的网络设备上;
所述第一应用进程基于预设的调度策略,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程,并针对所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文,进行反向预调度计算,以从所述多个工作线程中为所述回应报文分配第二工作线程;
所述第一应用进程确定第一工作线程与所述第二工作线程是否相同;如果是,则将所述首报文发送至所述第一工作线程,由所述第一工作线程将所述首报文发送给所述第二应用进程,以基于所述第一工作线程与所述第二应用进程建立通信连接。
可选地,所述针对所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文,进行反向预调度计算,以从所述多个工作线程中为所述回应报文分配第二工作线程,包括:
从所述第一应用进程维护的可用端口范围中选择出一个目标端口,作为所述首报文的源端口;
将所述目标端口作为所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文的目的端口,以基于所述回应报文的四元组从所述多个工作线程中为所述回应报文分配第二工作线程;其中,所述回应报文的源IP地址为所述首报文的目的IP地址,所述回应报文的目的IP地址为所述首报文的源IP地址,所述回应报文的源端口为所述首报文的目的端口。
可选地,所述基于所述回应报文的四元组从所述多个工作线程中为所述回应报文分配第二工作线程,包括:
确定用于接收所述回应报文的网卡,基于所述网卡在为所述回应报文分配所述守护进程中的工作线程时所采用的哈希算法,计算与所述回应报文的四元组对应的哈希值;
将所述守护进程中与所述哈希值对应的工作线程确定为所述第二工作线程。
可选地,所述哈希算法包括基于Toeplitz矩阵的哈希算法。
可选地,所述方法还包括:
所述第一应用进程在将所述首报文发送至所述第一工作线程时,将所述首报文的源端口从所述可用端口范围中删除;
所述第一应用进程在所述第一工作线程与所述第二应用进程建立的通信连接断开时,重新将所述首报文的源端口添加至所述可用端口范围。
可选地,所述第一应用进程维护的可用端口范围的数据结构为位图;
所述将所述目标端口从所述可用端口范围中删除,包括:
在所述位图中为所述目标端口设置已占用标记,以将所述目标端口从所述可用端口范围中删除;
所述重新将所述目标端口添加至所述可用端口范围,包括:
清除在所述位图中为所述目标端口设置的所述已占用标记,以重新将所述目标端口添加至所述可用端口范围。
可选地,所述方法还包括:
所述守护进程在检测到所述第一应用进程接入所述守护进程时,从所述守护进程维护的、与所述第一应用进程的IP地址对应的空闲端口范围中,选择出一段目标端口范围,并向所述第一应用进程发布所述目标端口范围,由所述第一应用进程将所述目标端口范围确定为所述可用端口范围;
所述守护进程在检测到所述第一应用进程脱离所述守护进程时,重新将所述目标端口范围添加至所述空闲端口范围。
可选地,所述基于预设的调度策略,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程,包括:
分别统计所述守护进程中的各个工作线程上建立的通信连接的数量;
基于预设的调度策略,以及所述守护进程中的各个工作线程上建立的通信连接的数量,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程。
可选地,所述预设的调度策略包括以下示出的一种或多种:轮询策略;权重选择策略;随机策略;负载均衡策略。
可选地,所述首报文包括:基于传输控制协议TCP的SYN报文;或者,基于用户数据报协议UDP的首个数据报文。
在本公开实施方式的第二方面中,提供了一种数据处理装置,应用于网络设备中运行的第一应用进程;其中,所述网络设备中运行了用户态协议栈;所述用户态协议栈包括与所述第一应用进程对应的守护进程,以及嵌入在所述第一应用进程中并与所述守护进程相适配的代理程序;所述守护进程包括多个用于进行数据发送和接收的工作线程;所述装置包括:
构造模块,用于构造待发送给第二应用进程的首报文;其中,所述第二应用进程运行在通信对端的网络设备上;
分配模块,用于基于预设的调度策略,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程,并针对所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文,进行反向预调度计算,以从所述多个工作线程中为所述回应报文分配第二工作线程;
确定模块,用于确定第一工作线程与所述第二工作线程是否相同;如果是,则将所述首报文发送至所述第一工作线程,由所述第一工作线程将所述首报文发送给所述第二应用进程,以基于所述第一工作线程与所述第二应用进程建立通信连接。
可选地,所述分配模块具体用于:
从所述第一应用进程维护的可用端口范围中选择出一个目标端口,作为所述首报文的源端口;
将所述目标端口作为所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文的目的端口,以基于所述回应报文的四元组从所述多个工作线程中为所述回应报文分配第二工作线程;其中,所述回应报文的源IP地址为所述首报文的目的IP地址,所述回应报文的目的IP地址为所述首报文的源IP地址,所述回应报文的源端口为所述首报文的目的端口。
可选地,所述分配模块具体用于:
确定用于接收所述回应报文的网卡,基于所述网卡在为所述回应报文分配所述守护进程中的工作线程时所采用的哈希算法,计算与所述回应报文的四元组对应的哈希值;
将所述守护进程中与所述哈希值对应的工作线程确定为所述第二工作线程。
可选地,所述哈希算法包括基于Toeplitz矩阵的哈希算法。
可选地,所述装置还包括:
删除模块,用于在将所述首报文发送至所述第一工作线程时,将所述首报文的源端口从所述可用端口范围中删除;
添加模块,用于在所述第一工作线程与所述第二应用进程建立的通信连接断开时,重新将所述首报文的源端口添加至所述可用端口范围。
可选地,所述第一应用进程维护的可用端口范围的数据结构为位图;
所述删除模块具体用于:
在所述位图中为所述目标端口设置已占用标记,以将所述目标端口从所述可用端口范围中删除;
所述添加模块具体用于:
清除在所述位图中为所述目标端口设置的所述已占用标记,以重新将所述目标端口添加至所述可用端口范围。
可选地,所述守护进程在检测到所述第一应用进程接入所述守护进程时,从所述守护进程维护的、与所述第一应用进程的IP地址对应的空闲端口范围中,选择出一段目标端口范围,并向所述第一应用进程发布所述目标端口范围,由所述第一应用进程将所述目标端口范围确定为所述可用端口范围;
所述守护进程在检测到所述第一应用进程脱离所述守护进程时,重新将所述目标端口范围添加至所述空闲端口范围。
可选地,所述分配模块具体用于:
分别统计所述守护进程中的各个工作线程上建立的通信连接的数量;
基于预设的调度策略,以及所述守护进程中的各个工作线程上建立的通信连接的数量,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程。
可选地,所述预设的调度策略包括以下示出的一种或多种:轮询策略;权重选择策略;随机策略;负载均衡策略。
可选地,所述首报文包括:基于传输控制协议TCP的SYN报文;或者,基于用户数据报协议UDP的首个数据报文。
在本公开实施方式的第三方面中,提供了一种介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据处理方法。
在本公开实施方式的第四方面中,提供了一种计算设备,包括:
处理器;
用于存储处理器可执行程序的存储器;
其中,所述处理器通过运行所述可执行程序以实现上述任一数据处理方法。
根据本公开实施方式的数据处理方法,对于运行了用户态协议栈的网络设备而言,该网络设备中运行的第一应用进程一方面可以基于预设的调度策略,从守护进程中的多个工作线程中为待发送给运行在通信对端的网络设备上的第二应用进程的首报文分配第一工作线程,另一方面可以针对该第二应用进程返回给该第一应用进程的、与该首报文对应的回应报文,进行反向预调度计算,以从该守护进程中的多个工作线程中为该回应报文分配第二工作线程,如果确定该第一工作线程与该第二工作线程相同,则可以由该第一工作线程将该首报文发送给该第二应用进程,使该第一应用进程可以基于该第一工作线程在与该第二应用进程之间建立通信连接。
采用上述方式,在建立通信连接之前,通过对通信对端返回的应答报文进行了反向预调度计算,可以保证发送给通信对端的首报文,以及通信对端返回的、与该首报文对应的应答报文被分配给守护进程中的同一个工作线程,因此需要发送一次建立该通信连接的首报文,就能成功基于该工作线程与通信对端建立通信连接,从而可以加快通信连接的建立速度,提高通信连接上的数据传输效率。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
图1示意性地示出了相关技术中的一种用户态协议栈的示意图;
图2示意性地示出了根据本公开实施方式的一种通信网络的示意图;
图3示意性地示出了根据本公开实施方式的一种数据处理方法的流程图;
图4示意性地示出了根据本公开实施方式的一种应用进程的示意图;
图5示意性地示出了根据本公开实施方式的另一种应用进程的示意图;
图6示意性地示出了根据本公开实施方式的一种介质的示意图;
图7示意性地示出了根据本公开实施方式的一种数据处理装置的框图;
图8示意性地示出了根据本公开实施方式的一种计算设备的示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本公开的实施方式,提出了一种数据处理方法、装置、介质和计算设备。
在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。
发明概述
参考图1,图1示意性地示出了相关技术中的一种用户态协议栈的示意图。其中,该用户态协议栈可以运行在具有计算能力的网络设备上,例如:服务器、计算机,以及带有CPU(Central Processing Unit,中央处理器)的路由器、交换机等设备。
如图1所示,该用户态协议栈中通常包括嵌入在与应用程序对应的应用进程中的代理程序(Agent),以及与该应用进程对应的守护进程(Daemon)。其中,该应用进程中的代理程序与该守护进程相适配,即该应用程序可以通过运行该代理程序,实现与该守护进程相关的功能,例如:与该守护进程之间进行数据传输;该守护进程则可以实现网络协议栈功能。
具体地,上述守护进程通常包括一个用于与上述应用进程之间进行控制信令的交互(例如:应用创建与销毁、端口监听启动与关闭等)的主线程,以及多个用于进行数据发送和接收的工作线程。
上述应用程序在向运行在通信对端的网络设备上的应用程序发送报文时,可以先将该报文发送给上述守护进程,由该守护进程将该报文发送给该应用程序所在的网络设备上搭载的网卡,再由该网卡将该报文发送给运行在通信对端的网络设备上的应用程序。
在实际应用中,为了节省设备资源,上述守护进程中的主线程通常不会绑定CPU;而上述守护进程中的各个工作线程中则加载了DPDK(Data Plane Development Kit,数据平面开发套件),始终占用该工作线程所绑定的CPU。上述网卡则采用了RSS(Receive SideScaling,接收端缩放)技术,可以将接收到的报文在多个CPU之间进行高效的分发。
上述网卡可以先接收到运行在通信对端的网络设备上的应用程序向上述应用程序返回的报文,并采用预设的哈希函数,计算与该报文的四元组(包括源IP地址、目的IP地址、源端口和目的端口)对应的哈希值,以将该报文分发给与该哈希值对应的CPU,即将该报文分配给上述守护进程中与该CPU绑定的工作线程;后续,可以将该报文发送给该工作线程,由该工作线程将该报文发送给该应用进程。
然而,在相关技术中,上述守护进程中的主线程和多个工作线程不会同时运行。也即,在该主线程处于睡眠(sleeping)状态时,各个工作线程则处于运行(running)状态,可以进行数据的发送和接收;而当该主线程被唤醒且有工作需要处理时,各个工作线程则会暂停发送和接收数据。
此外,上述守护进程中的主线程具有对公共数据的读/写权限,而该守护进程中的各个工作线程则只有对公共数据的只读权限。
在这种情况下,以TCP(Transmission Control Protocol,传输控制协议)为例,针对上述应用程序发送给运行在通信对端的网络设备上的应用程序的SYN报文(即为建立TCP连接的首报文),上述守护进程中的主线程可以从维护的端口范围中,为该SYN报文选择一个端口作为源端口,以将确定了源端口的该SYN报文发送出去,并对已发送的该SYN报文的报文信息进行记录;后续,针对运行在通信对端的网络设备上的应用程序返回给该应用程序的SYN ACK报文,网卡可以将该SYN ACK报文发送给为该SYN ACK报文分配的该守护进程中的工作线程,由该工作线程查询该主线程维护的记录表,以确定该SYN ACK报文的目的端口(即为该SYN报文的源端口)是否为与该工作线程对应的端口,如果是,则可以成功建立TCP连接,否则,该应用程序需要重新发送SYN报文,即该主线程需要重新为该SYN报文选择源端口。
由此可见,在相关技术中,通常需要多次尝试发送建立通信连接的首报文,才能成功建立该通信连接,因此,通信连接建立速度较慢,从而导致通信连接上的数据传输受到影响。
为了解决上述问题,本公开提出了一种数据处理的技术方案,对于运行了用户态协议栈的网络设备而言,该网络设备中运行的第一应用进程一方面可以基于预设的调度策略,从守护进程中的多个工作线程中为待发送给运行在通信对端的网络设备上的第二应用进程的首报文分配第一工作线程,另一方面可以针对该第二应用进程返回给该第一应用进程的、与该首报文对应的回应报文,进行反向预调度计算,以从该守护进程中的多个工作线程中为该回应报文分配第二工作线程,如果确定该第一工作线程与该第二工作线程相同,则可以由该第一工作线程将该首报文发送给该第二应用进程,使该第一应用进程可以基于该第一工作线程在与该第二应用进程之间建立通信连接。
采用上述方式,在建立通信连接之前,通过对通信对端返回的应答报文进行了反向预调度计算,可以保证发送给通信对端的首报文,以及通信对端返回的、与该首报文对应的应答报文被分配给守护进程中的同一个工作线程,因此需要发送一次建立该通信连接的首报文,就能成功基于该工作线程与通信对端建立通信连接,从而可以加快通信连接的建立速度,提高通信连接上的数据传输效率。
在介绍了本公开的基本原理之后,下面具体介绍本公开的各种非限制性实施方式。
应用场景总览
首先参考图2,图2示意性地示出了根据本公开实施方式的一种通信网络的示意图。
如图2所示,在该通信网络中,可以包括至少两个网络设备,例如:网络设备1和网络设备2。其中,网络设备1和网络设备2互为通信对端的网络设备。
上述网络设备1中可以运行用户态协议栈,并搭载网卡。其中,与如图1所示的用户态协议栈类似地,该用户态协议栈可以包括与网络设备1中运行的应用进程(称为第一应用进程)对应的守护进程,以及嵌入在该第一应用进程中、与该守护进程相适配的代理程序;该守护进程可以包括多个用于进行数据发送和接收的工作线程,例如:工作线程1-N。
上述网络设备2中也可以运行应用进程(称为第二应用进程)。
上述第一应用进程和上述第二应用进程之间可以基于建立的通信连接,进行数据传输。
在实际应用中,上述网络设备可以是具有计算能力的网络设备,例如:服务器、计算机,以及带有CPU的路由器、交换机等设备。
示例性方法
下面结合图2的应用场景,参考图3-5来描述根据本公开示例性实施方式的用于数据处理的方法。需要注意的是,上述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
参考图3,图3示意性地示出了根据本公开实施方式的一种数据处理方法的流程图。
该数据处理方法可以应用与如图2所示的网络设备1;该数据处理方法可以包括以下步骤:
步骤301,所述第一应用进程构造待发送给第二应用进程的首报文;所述第二应用进程运行在通信对端的网络设备上;
步骤302,所述第一应用进程基于预设的调度策略,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程,并针对所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文,进行反向预调度计算,以从所述多个工作线程中为所述回应报文分配第二工作线程;
步骤303,所述第一应用进程确定第一工作线程与所述第二工作线程是否相同;如果是,则将所述首报文发送至所述第一工作线程,由所述第一工作线程将所述首报文发送给所述第二应用进程,以基于所述第一工作线程与所述第二应用进程建立通信连接。
在本实施例中,上述网络设备1中可以运行用户态协议栈。其中,与如图1所示的用户态协议栈类似地,该用户态协议栈可以包括与网络设备1中运行的应用进程(称为第一应用进程)对应的守护进程,以及嵌入在该第一应用进程中、与该守护进程相适配的代理程序;该守护进程可以包括多个用于进行数据发送和接收的工作线程。
如果运行在上述网络设备1中的上述第一应用进程,需要与运行在通信对端的上述网络设备2上的应用进程(称为第二应用进程)之间进行数据传输,则该第一应用进程和该第二应用进程可以先基于TCP建立通信连接,再基于该通信连接进行数据传输;或者,该第一应用进程和该第二应用进程可以基于UDP(User Datagram Protocol,用户数据报协议)进行数据传输,即可以视为基于UDP建立了通信连接。
为了与上述第二应用进程建立通信连接,上述第一应用进程可以构造待发送给该第二应用进程的首报文。
具体地,上述首报文可以包括基于TCP协议的SYN报文;或者,该首报文可以包括基于UDP协议的首个数据报文。
在实际应用中,上述第二应用进程在接收到上述第一应用进程发送的上述首报文的情况下,可以向该第一应用进程返回与该首报文对应的回应报文。
以TCP为例,上述第二应用进程在接收到上述第一应用进程发送的SYN报文的情况下,可以向该第一应用进程返回与该SYN报文对应的SYN ACK报文。
以UDP为例,上述第二应用进程在接收到上述第一应用进程发送的首个数据报文的情况下,可以根据实际的数据传输需求,向该第一应用进程返回报文内容与该首个数据报文的报文内容对应的数据报文;该第二应用进程返回给该第一应用进程的数据报文即可视为与该首个数据报文对应的回应报文。
上述第一应用进程在构造了上述首报文后,一方面,可以基于预设的调度策略,从上述守护进程中的多个工作线程中为该首报文分配工作线程(称为第一工作线程);另一方面,可以针对上述第二应用进程在接收到该首报文的情况下,将要返回给该第一应用进程的、与该首报文对应的回应报文,进行反向预调度计算,以从该守护进程的多个工作线程中为该回应报文分配工作线程(称为第二工作线程)。
具体地,对上述回应报文进行反向预调度计算,即为模拟上述网卡对该回应报文的报文信息进行计算,以预测该网卡会将该回应报文分配给上述守护进程中的哪个工作线程,从而可以将预测出的工作线程确定为上述第二工作线程。
后续,上述第一应用进程可以进一步确定,为上述首报文分配的上述第一工作线程,与为上述回应报文分配的上述第二工作线程是否相同。如果该第一工作线程与该第二工作线程相同,则说明在这种情况下,该第一应用进程发送给上述第二应用进程的报文,与该第二应用进程发送给该第一应用进程的报文,将会分配给上述守护进程中的同一个工作线程进行处理;因此,该第一应用进程可以将该首报文发送给该第一工作线程,由该第一工作线程将该首报文发送给该第二应用进程,即该第一应用进程可以基于该第一工作线程与该第二应用进程建立通信连接。
需要说明的是,上述守护进程中的各个工作线程可以分别维护各自的用于记录的已发送的首报文的报文信息的记录表。上述第一工作线程在接收到上述第二应用进程返回给上述第一应用进程的应答报文时,可以查询该第一工作线程维护的记录表,以确定该应答报文的目的端口(即为上述首报文的源端口)是否为与该第一工作线程对应的端口,如果是,则可以成功建立通信连接。
通过上述反向预调度计算,可以保证发送上述首报文的工作线程,与接收上述应答报文的工作线程,是同一个工作线程(均为上述第一工作线程)。因此,只需要发送一次建立通信连接的首报文,就能成功建立该通信连接。
下面从端口管理、连接调度和端口选择这三个方面,对本实施例进行详细描述。
(1)端口管理
在实际应用中,可以由上述守护进程维护与各个IP地址对应的空闲端口范围。
在示出的一种实施方式中,上述守护进程在检测到上述第一应用进程接入(attach)该守护进程时,可以从该守护进程维护的、与该第一应用进程的IP地址对应的空闲端口范围中,选择出一段端口范围(称为目标端口范围),并向该第一应用进程发布该目标端口范围;该第一应用进程则可以将该目标端口范围确定为可用端口范围。
具体地,上述守护进程可以将上述目标端口范围发布至嵌入在上述第一应用进程中的与该守护进程相适配的代理程序;该第一应用进程则可以通过该代理程序,将该目标端口范围作为上述可用端口范围进行维护。
在实际应用中,不同的应用进程在进行网络通信时所采用的IP地址通常不同;而上述守护进程维护的与不同的IP地址对应的空闲端口范围可以相同,也可以不同。
然而,如果接入上述守护进程的多个应用程序在进行网络通信时所采用的IP地址相同,则该守护进程可以为这多个应用进程分别分配不同的与该IP地址对应的上述可用端口范围。
举例来说,假设接入上述守护进程的应用进程包括应用进程1和应用进程2,其中,应用进程1和应用进程2在进行网络通信时所采用的IP地址均为10.0.0.101;进一步假设该守护进程维护的与10.0.0.101这一IP地址对应的空闲端口范围包括30000~59999,则该守护进程可以将30000~39999这一端口范围分配给应用进程1,由应用进程1将30000~39999作为可用端口范围进行维护,并将40000~49999这一端口范围分配给应用进程2,由应用进程2将30000~39999作为可用端口范围进行维护;此时该守护进程维护的与10.0.0.101这一IP地址对应的空闲端口范围更新为50000~59999。
在实际应用中,守护进程为一个应用进程分配的端口范围中的端口数量,可以由技术人员预先设置,或者,也可以是默认的缺省值,本公开对此不作限制。
相应地,上述守护进程在检测到上述第一应用进程脱离(detach)该守护进程时,可以重新将为该第一应用进程分配的上述目标端口范围添加至上述空闲端口范围。
通过上述端口管理的过程,可以避免为IP地址相同的应用进程分配的可用端口范围重复,以保证与运行在通信对端的网络设备上的应用进程之间的数据传输不会出现异常。
为了使该可用端口范围中的各个端口的占用状态更加清晰,从而提高从该可用端口范围中选择端口的效率,在示出的一种实施方式中,参考图4,图4示意性地示出了根据本公开实施方式的一种应用进程的示意图。
如图4所示,上述第一应用进程可以通过该第一应用进程中部署的端口管理装置,采用位图的数据结构,对上述可用端口范围进行维护。
在这种情况下,针对上述可用端口范围中的某个端口,上述第一应用进程在将该端口从该可用端口范围中删除时,可以在上述位图中为该端口设置已占用标记,例如:如图4所示的“■”这一标记,以实现将该端口从该可用端口范围中删除;而在重新将该端口添加至该可用端口范围时,可以清除在上述位图中为该端口设置的已占用标记,以实现重新将该端口添加至该可用端口范围。
(2)连接调度
在本实施例中,上述第一应用进程在构造了上述首报文后,可以基于预设的调度策略,从上述守护进程中的多个工作线程中为该首报文分配上述第一工作线程。
在示出的一种实施方式中,参考图5,图5示意性地示出了根据本公开实施方式的另一种应用进程的示意图。
如图5所示,上述第一应用进程可以通过该第一应用进程中部署的连接调度装置,基于预设的调度策略,为上述首报文分配上述第一工作线程。
具体地,上述第一应用进程可以通过上述连接调度装置中的统计器,分别统计上述守护进程中的各个工作线程上建立的通信连接的数量。
在为上述首报文分配上述第一工作线程时,上述第一应用进程可以通过上述连接调度装置中的决策器,基于预设的调度策略,以及上述统计器统计出的上述守护进程中的各个工作线程上建立的通信连接的数量,从该守护进程中的多个工作线程中为该首报文分配该第一工作线程。
在示出的一种实施方式中,上述调度策略可以包括以下示出的一种或多种:轮询策略;权重选择策略;随机策略;负载均衡策略。
在仅有一种调用策略的情况下,上述第一应用进程可以基于该调度策略为上述首报文分配上述第一工作线程;在有多种调用策略的情况下,该第一应用进程可以基于其中任意一种调度策略为该首报文分配该第一工作线程,或者,根据由技术任意预先设置的主次关系,选择主要的调度策略为该首报文分配该第一工作线程。
通过上述连接调度的过程,可以根据实际需求,分配上述守护进程中的各个工作线程上建立的通信连接的数量,例如:在基于负载均衡策略进行连接调度时,可以保证该守护进程中的各个工作线程上建立的通信连接的数量基本相同,从而避免由于通信连接的数量分配不均匀而导致的工作线程的数据处理能力的超负荷或浪费的问题。
(3)端口选择
在本实施例中,上述第一应用进程在构造了上述首报文后,可以针对上述第二应用进程在接收到该首报文的情况下,将要返回给该第一应用进程的、与该首报文对应的回应报文,进行反向预调度计算,以从该守护进程的多个工作线程中为该回应报文分配上述第二工作线程。
在示出的一种实施方式中,在针对上述回应报文进行反向预调度计算,以为该回应报文分配上述第二工作线程时,可以先确定上述首报文的四元组,再基于该首报文的四元组,确定该回应报文的四元组,最后基于该回应报文的四元组,为该回应报文分配该第二工作线程。
在实际应用中,对于任意一个报文而言,该报文的四元组包括:该报文的源IP地址、目的IP地址、源端口和目的端口。
需要说明的是,上述首报文的源IP地址即为与上述第一应用程序对应的IP地址,目的IP地址即为与上述第二应用程序对应的IP地址,目的端口即为该第二应用程序所在的上述网络设备2中,与该第二应用程序对应的端口。
由于上述首报文为上述第一应用进程发送给上述第二应用进程的报文,而上述回应报文则为该第二应用进程返回给该第一应用进程的报文,因此该回应报文的四元组与该首报文的四元组互为倒置关系。也即,该回应报文的源IP地址即为与上述第二应用程序对应的IP地址,目的IP地址即为与上述第一应用程序对应的IP地址,源端口即为该第二应用程序所在的上述网络设备2中,与该第二应用程序对应的端口。
在这种情况下,可以先从上述第一应用进程维护的上述可用端口范围中选择出一个端口(称为目标端口),作为上述首报文的源端口。其中,该目标端口即为上述回应报文的目的端口。
后续,可以基于上述回应报文的四元组,从上述守护进程中的多个工作线程中为该回应报文分配上述第二工作线程。
进一步地,在实际应用中,上述第一应用进程可以维护哈希值与上述守护进程中的工作线程的对应关系,例如:哈希值与工作线程的线程标识的对应关系。
在示出的一种实施方式中,在基于上述回应报文的四元组,为该回应报文分配上述第二工作线程时,可以先确定用于接收该回应报文的网卡,再基于该网卡将要在为该回应报文分配上述守护进程中的工作线程时所采用的哈希算法,计算与该回应报文的四元组对应的哈希值。
后续,可以将上述守护进程中与上述哈希值对应的工作线程确定为上述第二工作线程。
再进一步地,在示出的一种实施方式中,上述哈希算法可以包括基于Toeplitz矩阵的哈希算法。
为了避免上述第一应用进程对上述可用端口范围中的端口的复用,在示出的一种实施方式中,该第一应用进程在将上述首报文发送至上述第一工作线程时,可以将该首报文的源端口(即为上述目标端口)从该可用端口范围中删除。
相应地,上述第一应用进程在上述第一工作线程与上述第二应用进程建立的通信连接断开时,可以重新将上述首报文的源端口添加至上述可用端口范围。
综上所述,根据本公开实施方式的数据处理方法,对于运行了用户态协议栈的网络设备而言,该网络设备中运行的第一应用进程一方面可以基于预设的调度策略,从守护进程中的多个工作线程中为待发送给运行在通信对端的网络设备上的第二应用进程的首报文分配第一工作线程,另一方面可以针对该第二应用进程返回给该第一应用进程的、与该首报文对应的回应报文,进行反向预调度计算,以从该守护进程中的多个工作线程中为该回应报文分配第二工作线程,如果确定该第一工作线程与该第二工作线程相同,则可以由该第一工作线程将该首报文发送给该第二应用进程,使该第一应用进程可以基于该第一工作线程在与该第二应用进程之间建立通信连接。
采用上述方式,在建立通信连接之前,通过对通信对端返回的应答报文进行了反向预调度计算,可以保证发送给通信对端的首报文,以及通信对端返回的、与该首报文对应的应答报文被分配给守护进程中的同一个工作线程,因此需要发送一次建立该通信连接的首报文,就能成功基于该工作线程与通信对端建立通信连接,从而可以加快通信连接的建立速度,提高通信连接上的数据传输效率。
示例性介质
在介绍了本公开示例性实施方式的方法之后,接下来,参考图6对本公开示例性实施方式的介质进行说明。
本示例性实施方式中,可以通过程序产品实现上述方法,如可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
该程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RE等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如C语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性装置
在介绍了本公开示例性实施方式的介质之后,接下来,参考图7对本公开示例性实施方式的装置进行说明。
下述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。
图7示意性地示出了根据本公开实施方式的一种数据处理装置,应用于网络设备中运行的第一应用进程;其中,所述网络设备中运行了用户态协议栈;所述用户态协议栈包括与所述第一应用进程对应的守护进程,以及嵌入在所述第一应用进程中并与所述守护进程相适配的代理程序;所述守护进程包括多个用于进行数据发送和接收的工作线程;所述装置包括:
构造模块701,用于构造待发送给第二应用进程的首报文;其中,所述第二应用进程运行在通信对端的网络设备上;
分配模块702,用于基于预设的调度策略,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程,并针对所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文,进行反向预调度计算,以从所述多个工作线程中为所述回应报文分配第二工作线程;
确定模块703,用于确定第一工作线程与所述第二工作线程是否相同;如果是,则将所述首报文发送至所述第一工作线程,由所述第一工作线程将所述首报文发送给所述第二应用进程,以基于所述第一工作线程与所述第二应用进程建立通信连接。
可选地,所述分配模块702具体用于:
从所述第一应用进程维护的可用端口范围中选择出一个目标端口,作为所述首报文的源端口;
将所述目标端口作为所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文的目的端口,以基于所述回应报文的四元组从所述多个工作线程中为所述回应报文分配第二工作线程;其中,所述回应报文的源IP地址为所述首报文的目的IP地址,所述回应报文的目的IP地址为所述首报文的源IP地址,所述回应报文的源端口为所述首报文的目的端口。
可选地,所述分配模块702具体用于:
确定用于接收所述回应报文的网卡,基于所述网卡在为所述回应报文分配所述守护进程中的工作线程时所采用的哈希算法,计算与所述回应报文的四元组对应的哈希值;
将所述守护进程中与所述哈希值对应的工作线程确定为所述第二工作线程。
可选地,所述哈希算法包括基于Toeplitz矩阵的哈希算法。
可选地,所述装置还包括:
删除模块704,用于在将所述首报文发送至所述第一工作线程时,将所述首报文的源端口从所述可用端口范围中删除;
添加模块705,用于在所述第一工作线程与所述第二应用进程建立的通信连接断开时,重新将所述首报文的源端口添加至所述可用端口范围。
可选地,所述第一应用进程维护的可用端口范围的数据结构为位图;
所述删除模块704具体用于:
在所述位图中为所述目标端口设置已占用标记,以将所述目标端口从所述可用端口范围中删除;
所述添加模块705具体用于:
清除在所述位图中为所述目标端口设置的所述已占用标记,以重新将所述目标端口添加至所述可用端口范围。
可选地,所述守护进程在检测到所述第一应用进程接入所述守护进程时,从所述守护进程维护的、与所述第一应用进程的IP地址对应的空闲端口范围中,选择出一段目标端口范围,并向所述第一应用进程发布所述目标端口范围,由所述第一应用进程将所述目标端口范围确定为所述可用端口范围;
所述守护进程在检测到所述第一应用进程脱离所述守护进程时,重新将所述目标端口范围添加至所述空闲端口范围。
可选地,所述分配模块702具体用于:
分别统计所述守护进程中的各个工作线程上建立的通信连接的数量;
基于预设的调度策略,以及所述守护进程中的各个工作线程上建立的通信连接的数量,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程。
可选地,所述预设的调度策略包括以下示出的一种或多种:轮询策略;权重选择策略;随机策略;负载均衡策略。
可选地,所述首报文包括:基于传输控制协议TCP的SYN报文;或者,基于用户数据报协议UDP的首个数据报文。
示例性计算设备
在介绍了本公开示例性实施方式的方法、介质和装置之后,接下来,参考图8对本公开示例性实施方式的计算设备进行说明。
图8显示的计算设备800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,计算设备800以通用计算设备的形式表现。计算设备800的组件可以包括但不限于:上述至少一个处理单元801、上述至少一个存储单元802,连接不同系统组件(包括处理单元801和存储单元802)的总线803。
总线803包括数据总线、控制总线和地址总线。
存储单元802可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)8021和/或高速缓存存储器8022,可以进一步包括非易失性存储器形式的可读介质,例如只读存储器(ROM)8023。
存储单元802还可以包括具有一组(至少一个)程序模块8024的程序/实用工具8025,这样的程序模块8024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备800也可以与一个或多个外部设备804(例如键盘、指向设备等)通信。
这种通信可以通过输入/输出(I/O)接口805进行。并且,计算设备800还可以通过网络适配器806与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图8所示,网络适配器806通过总线803与计算设备800的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了数据处理装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种数据处理方法,应用于网络设备;其中,所述网络设备中运行了用户态协议栈;所述用户态协议栈包括与所述网络设备中运行的第一应用进程对应的守护进程,以及嵌入在所述第一应用进程中并与所述守护进程相适配的代理程序;所述守护进程包括多个用于进行数据发送和接收的工作线程;所述方法包括:
所述第一应用进程构造待发送给第二应用进程的首报文;其中,所述第二应用进程运行在通信对端的网络设备上;
所述第一应用进程基于预设的调度策略,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程,并针对所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文,进行反向预调度计算,以从所述多个工作线程中为所述回应报文分配第二工作线程;
所述第一应用进程确定第一工作线程与所述第二工作线程是否相同;如果是,则将所述首报文发送至所述第一工作线程,由所述第一工作线程将所述首报文发送给所述第二应用进程,以基于所述第一工作线程与所述第二应用进程建立通信连接。
2.根据权利要求1所述的方法,所述针对所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文,进行反向预调度计算,以从所述多个工作线程中为所述回应报文分配第二工作线程,包括:
从所述第一应用进程维护的可用端口范围中选择出一个目标端口,作为所述首报文的源端口;
将所述目标端口作为所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文的目的端口,以基于所述回应报文的四元组从所述多个工作线程中为所述回应报文分配第二工作线程;其中,所述回应报文的源IP地址为所述首报文的目的IP地址,所述回应报文的目的IP地址为所述首报文的源IP地址,所述回应报文的源端口为所述首报文的目的端口。
3.根据权利要求2所述的方法,所述基于所述回应报文的四元组从所述多个工作线程中为所述回应报文分配第二工作线程,包括:
确定用于接收所述回应报文的网卡,基于所述网卡在为所述回应报文分配所述守护进程中的工作线程时所采用的哈希算法,计算与所述回应报文的四元组对应的哈希值;
将所述守护进程中与所述哈希值对应的工作线程确定为所述第二工作线程。
4.根据权利要求2所述的方法,所述方法还包括:
所述第一应用进程在将所述首报文发送至所述第一工作线程时,将所述首报文的源端口从所述可用端口范围中删除;
所述第一应用进程在所述第一工作线程与所述第二应用进程建立的通信连接断开时,重新将所述首报文的源端口添加至所述可用端口范围。
5.根据权利要求1所述的方法,所述方法还包括:
所述守护进程在检测到所述第一应用进程接入所述守护进程时,从所述守护进程维护的、与所述第一应用进程的IP地址对应的空闲端口范围中,选择出一段目标端口范围,并向所述第一应用进程发布所述目标端口范围,由所述第一应用进程将所述目标端口范围确定为所述可用端口范围;
所述守护进程在检测到所述第一应用进程脱离所述守护进程时,重新将所述目标端口范围添加至所述空闲端口范围。
6.根据权利要求1所述的方法,所述基于预设的调度策略,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程,包括:
分别统计所述守护进程中的各个工作线程上建立的通信连接的数量;
基于预设的调度策略,以及所述守护进程中的各个工作线程上建立的通信连接的数量,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程。
7.根据权利要求1所述的方法,所述首报文包括:基于传输控制协议TCP的SYN报文;或者,基于用户数据报协议UDP的首个数据报文。
8.一种数据处理装置,应用于网络设备中运行的第一应用进程;其中,所述网络设备中运行了用户态协议栈;所述用户态协议栈包括与所述第一应用进程对应的守护进程,以及嵌入在所述第一应用进程中并与所述守护进程相适配的代理程序;所述守护进程包括多个用于进行数据发送和接收的工作线程;所述装置包括:
构造模块,用于构造待发送给第二应用进程的首报文;其中,所述第二应用进程运行在通信对端的网络设备上;
分配模块,用于基于预设的调度策略,从所述守护进程中的多个工作线程中为所述首报文分配第一工作线程,并针对所述第二应用进程返回给所述第一应用进程的、与所述首报文对应的回应报文,进行反向预调度计算,以从所述多个工作线程中为所述回应报文分配第二工作线程;
确定模块,用于确定第一工作线程与所述第二工作线程是否相同;如果是,则将所述首报文发送至所述第一工作线程,由所述第一工作线程将所述首报文发送给所述第二应用进程,以基于所述第一工作线程与所述第二应用进程建立通信连接。
9.一种介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
10.一种计算设备,包括:
处理器;
用于存储处理器可执行程序的存储器;
其中,所述处理器通过运行所述可执行程序以实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110871642.9A CN113612837B (zh) | 2021-07-30 | 2021-07-30 | 数据处理方法、装置、介质和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110871642.9A CN113612837B (zh) | 2021-07-30 | 2021-07-30 | 数据处理方法、装置、介质和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113612837A true CN113612837A (zh) | 2021-11-05 |
CN113612837B CN113612837B (zh) | 2023-08-08 |
Family
ID=78306266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110871642.9A Active CN113612837B (zh) | 2021-07-30 | 2021-07-30 | 数据处理方法、装置、介质和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113612837B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6314471B1 (en) * | 1998-11-13 | 2001-11-06 | Cray Inc. | Techniques for an interrupt free operating system |
US20030061257A1 (en) * | 2001-09-25 | 2003-03-27 | Javier Cardona | Multithreaded universal daemon for network data exchanges |
US7412623B1 (en) * | 2005-06-13 | 2008-08-12 | Sun Microsystems, Inc. | State machine simulator for testing computer systems |
CN102710497A (zh) * | 2012-04-24 | 2012-10-03 | 汉柏科技有限公司 | 多核多线程网络设备的报文处理方法及系统 |
CN102868731A (zh) * | 2012-08-27 | 2013-01-09 | 济南大学 | 软件在线升级及加速下载的方法和装置 |
CN103283209A (zh) * | 2011-04-18 | 2013-09-04 | 北京新媒传信科技有限公司 | 一种应用服务平台系统及其实现方法 |
US20140019980A1 (en) * | 2012-07-10 | 2014-01-16 | Sap Ag | Thread Scheduling and Control Framework |
CN103825759A (zh) * | 2014-02-13 | 2014-05-28 | 北京百度网讯科技有限公司 | 获取网络拓扑信息的方法和系统 |
CN106357554A (zh) * | 2015-07-13 | 2017-01-25 | 中兴通讯股份有限公司 | 一种设备内部处理器网口收包方法及装置 |
WO2018018611A1 (zh) * | 2016-07-29 | 2018-02-01 | 华为技术有限公司 | 一种任务处理方法以及网卡 |
CN107766218A (zh) * | 2017-10-12 | 2018-03-06 | 广东欧珀移动通信有限公司 | 系统优化方法、装置、存储介质及终端设备 |
CN107844325A (zh) * | 2017-10-27 | 2018-03-27 | 上海斐讯数据通信技术有限公司 | 一种分布式数据的获取方法及系统 |
CN108924050A (zh) * | 2018-06-29 | 2018-11-30 | 优刻得科技股份有限公司 | 数据转发方法及其装置、存储介质和网卡设备 |
CN110830442A (zh) * | 2019-10-09 | 2020-02-21 | 贝壳技术有限公司 | 报文处理方法、装置及网关 |
WO2021027363A1 (zh) * | 2019-08-15 | 2021-02-18 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN112422681A (zh) * | 2020-11-18 | 2021-02-26 | 中盈优创资讯科技有限公司 | 一种跨平台分布式通讯调用方法及装置 |
-
2021
- 2021-07-30 CN CN202110871642.9A patent/CN113612837B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6314471B1 (en) * | 1998-11-13 | 2001-11-06 | Cray Inc. | Techniques for an interrupt free operating system |
US20030061257A1 (en) * | 2001-09-25 | 2003-03-27 | Javier Cardona | Multithreaded universal daemon for network data exchanges |
US7412623B1 (en) * | 2005-06-13 | 2008-08-12 | Sun Microsystems, Inc. | State machine simulator for testing computer systems |
CN103283209A (zh) * | 2011-04-18 | 2013-09-04 | 北京新媒传信科技有限公司 | 一种应用服务平台系统及其实现方法 |
CN102710497A (zh) * | 2012-04-24 | 2012-10-03 | 汉柏科技有限公司 | 多核多线程网络设备的报文处理方法及系统 |
US20140019980A1 (en) * | 2012-07-10 | 2014-01-16 | Sap Ag | Thread Scheduling and Control Framework |
CN102868731A (zh) * | 2012-08-27 | 2013-01-09 | 济南大学 | 软件在线升级及加速下载的方法和装置 |
CN103825759A (zh) * | 2014-02-13 | 2014-05-28 | 北京百度网讯科技有限公司 | 获取网络拓扑信息的方法和系统 |
CN106357554A (zh) * | 2015-07-13 | 2017-01-25 | 中兴通讯股份有限公司 | 一种设备内部处理器网口收包方法及装置 |
WO2018018611A1 (zh) * | 2016-07-29 | 2018-02-01 | 华为技术有限公司 | 一种任务处理方法以及网卡 |
CN107766218A (zh) * | 2017-10-12 | 2018-03-06 | 广东欧珀移动通信有限公司 | 系统优化方法、装置、存储介质及终端设备 |
CN107844325A (zh) * | 2017-10-27 | 2018-03-27 | 上海斐讯数据通信技术有限公司 | 一种分布式数据的获取方法及系统 |
CN108924050A (zh) * | 2018-06-29 | 2018-11-30 | 优刻得科技股份有限公司 | 数据转发方法及其装置、存储介质和网卡设备 |
WO2021027363A1 (zh) * | 2019-08-15 | 2021-02-18 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN110830442A (zh) * | 2019-10-09 | 2020-02-21 | 贝壳技术有限公司 | 报文处理方法、装置及网关 |
CN112422681A (zh) * | 2020-11-18 | 2021-02-26 | 中盈优创资讯科技有限公司 | 一种跨平台分布式通讯调用方法及装置 |
Non-Patent Citations (3)
Title |
---|
. RANDHAWA; J. RICHARDS: ""Implementation of a kernel mode IPv6 AODV routing daemon to improve data throughput"", 《IEEE INTERNATIONAL CONFERENCE ON COMMUNICATIONS, 2005. ICC 2005. 2005》 * |
杨朝红,宫云战,桑伟前,刘海燕,李庆艳: "基于主从异步复制技术的容灾实时系统研究与实现", 计算机研究与发展, no. 07 * |
武特;陈莉君;: "基于inotify的内核态与用户态跨平台数据交互", 西安邮电学院学报, no. 04 * |
Also Published As
Publication number | Publication date |
---|---|
CN113612837B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3226493B1 (en) | Method, device, and system for discovering the relationship of applied topology | |
US10110671B2 (en) | Method, system, and device for managing server hardware resources in a cloud scheduling environment | |
US8516509B2 (en) | Methods and computer program products for monitoring system calls using safely removable system function table chaining | |
US20080126831A1 (en) | System and Method for Caching Client Requests to an Application Server Based on the Application Server's Reliability | |
CN107193673B (zh) | 一种报文处理方法及设备 | |
CN110196770B (zh) | 云系统内存数据处理方法、装置、设备及存储介质 | |
US10089131B2 (en) | Compute cluster load balancing based on disk I/O cache contents | |
US9509627B2 (en) | Resource over-subscription | |
US8458702B1 (en) | Method for implementing user space up-calls on java virtual machine before/after garbage collection | |
EP2161660A2 (en) | Information processing device having load sharing function | |
CN109857545B (zh) | 一种数据传输方法及装置 | |
US11991241B2 (en) | Server system and method of managing server system | |
CN116233018A (zh) | 报文处理方法、装置、电子设备及存储介质 | |
WO2024103690A1 (zh) | 一种数据请求方法、装置、设备及非易失性可读存储介质 | |
CN109361749B (zh) | 报文处理方法、相关设备及计算机存储介质 | |
CN113612837B (zh) | 数据处理方法、装置、介质和计算设备 | |
CN111221642B (zh) | 一种数据处理方法、装置、存储介质及终端 | |
CN113946376A (zh) | 负载调整方法、装置、电子设备及存储介质 | |
CN107615259B (zh) | 一种数据处理方法及系统 | |
CN111556043B (zh) | 一种报文处理方法、装置、系统、设备及可读存储介质 | |
CN114553778A (zh) | 心跳控制方法及装置、存储介质、电子设备 | |
CN115809222A (zh) | 一种日志处理方法、装置、设备以及计算机存储介质 | |
CN115878309A (zh) | 资源分配方法、装置、处理核、设备和计算机可读介质 | |
KR102064466B1 (ko) | 가상화 시스템에서의 가상 데스크톱을 할당하는 방법 및 그 가상화 시스템 | |
CN114553771A (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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 310052 Room 301, Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: Hangzhou NetEase Shuzhifan Technology Co.,Ltd. Address before: 310052 Room 301, Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province Patentee before: HANGZHOU LANGHE TECHNOLOGY Ltd. |