CN104811431B - 基于并行协议栈实例的数据包处理方法和装置 - Google Patents
基于并行协议栈实例的数据包处理方法和装置 Download PDFInfo
- Publication number
- CN104811431B CN104811431B CN201410043721.0A CN201410043721A CN104811431B CN 104811431 B CN104811431 B CN 104811431B CN 201410043721 A CN201410043721 A CN 201410043721A CN 104811431 B CN104811431 B CN 104811431B
- Authority
- CN
- China
- Prior art keywords
- protocol stack
- protocol
- packet
- target socket
- stack instance
- 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
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
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
Abstract
本发明提供一种基于并行协议栈实例的数据包处理方法和装置,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
Description
技术领域
本发明涉及通信技术,尤其涉及一种基于并行协议栈实例的数据包处理方法和装置。
背景技术
随着云计算的快速发展,对协议栈实例的处理能力提出了更高的要求。目前,通常采用多个协议栈实例共享套接字(socket)的方式,因此存在多协议栈实例之间对socket的竞争问题,进而提出了在中央处理器(central processing unit,CPU)的多核架构下并行协议栈实例,该并行协议栈实例包括至少两个协议栈实例,每个协议栈实例运行在CPU的一个虚拟中央处理器(virtual CPU,VCPU)上,采用独占协议栈实例所关联的socket的方式从而避免上述多协议栈实例之间对socket的竞争问题。当网卡根据分流策略,向各协议栈实例分流数据包时,各协议栈实例可利用与该协议栈实例关联的socket对数据包并行进行协议处理。
但是应用(Application,APP)在指示创建进行上述协议处理所需的socket时,指定了socket与协议栈实例之间的关联关系,从而仅可由APP指定的相关联的协议栈实例占用该socket对数据包进行协议处理,当网卡将数据包所分流到的协议栈实例,与该APP指定的socket相关联的协议栈实例不同时,即出现了APP指定的协议栈实例与网卡指定的协议栈实例冲突的情况,无法对数据包进行协议处理。
发明内容
为解决现有技术的问题,本发明实施例提供一种基于并行协议栈实例的数据包处理方法和装置。
第一方面是提供一种基于并行协议栈实例的数据包处理方法,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述方法包括:利用所述第一协议栈实例对网卡向所述第一协议栈实例分流的所述数据包进行低层协议处理;确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket;根据所述目标socket,确定与所述目标socket关联的第二协议栈实例;利用所述目标socket和所述第二协议栈实例对所述低层协议处理后的所述数据包进行所述上层协议处理;其中,所述低层协议处理和所述上层协议处理共同完成对所述数据包的完整协议处理。
在第一方面的第一种可能的实现方式中,所述根据所述目标socket,确定与所述目标socket关联的第二协议栈实例,包括:根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例;所述目标socket与所述每个协议栈实例之间的亲和性用于指示所述网卡向所述每个协议栈实例已分流的数据包中,需要利用所述目标socket进行上层协议处理的数据包数量。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例之前,还包括:根据所述低层协议处理后的所述数据包的个数,更新所述亲和性图谱中所记载的所述目标socket与所述第一协议栈实例之间的亲和性。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述低层协议处理后的所述数据包的个数,更新所述亲和性图谱中所记载的所述目标socket与所述第一协议栈实例之间的亲和性之后,还包括:判断n×A是否大于B,其中,A为所述目标socket与所述第一协议栈实例之间的亲和性,B为所述亲和性图谱中记载的所述目标socket与关联的协议栈实例之间的亲和性,n为预设系数;则所述根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例,包括:若n×A不大于B,则确定将所述亲和性图谱中记载的所述目标socket关联的协议栈实例作为与所述目标socket关联的所述第二协议栈实例。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例,还包括:若n×A大于B,则将所述第一协议栈实例确定为与所述目标socket关联的所述第二协议栈实例,并将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述第一协议栈实例。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket,包括:在socket表中进行检索,获得对所述低层协议处理后的所述数据包进行上层协议处理所需的所述目标socket。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第一方面的第六种可能的实现方式中,所述利用所述目标socket和所述第二协议栈实例对所述低层协议处理后的所述数据包进行所述上层协议处理,包括:将所述低层协议处理后的所述数据包加入到所述目标socket的底层数据接收队列中;当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket时,利用所述第二协议栈实例对所述底层数据接收队列中的所述数据包进行所述上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第一方面的第七种可能的实现方式中,所述确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket之前,还包括:利用所述并行协议栈实例包括的各协议栈实例中的一个父协议栈实例,创建与所述各协议栈实例均不存在关联关系的所述目标socket;所述父协议栈实例是应用APP采用随机方式或者参数指定方式或者负载均衡方式选定的。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第一方面的第八种可能的实现方式中,所述方法还包括:接收所述应用APP发送的第一数据包;确定对所述第一数据包进行协议处理所需要的所述目标套接字socket;确定与所述目标socket关联的所述第二协议栈实例;利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理。
第二方面是提供一种基于并行协议栈实例的数据包处理方法,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述方法包括:接收应用APP发送的第一数据包;确定对所述第一数据包进行协议处理所需要的目标套接字socket;根据所述目标socket与第二协议栈实例的关联关系,确定与所述目标socket关联的所述第二协议栈实例;利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理;其中,所述目标socket与所述第二协议栈实例的关联关系,是所述第一协议栈实例和所述第二协议栈实例对第二数据包进行协议处理时确定的,所述第一协议栈实例对所述第二数据包进行低层协议处理,所述第二协议栈实例对所述第二数据包进行上层协议处理,所述低层协议处理和所述上层协议处理共同完成对所述第二数据包的完整协议处理。
在第二方面的第一种可能的实现方式中,所述利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理,包括:将所述第一数据包加入到所述目标socket的APP数据发送队列中;当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket的APP数据发送队列时,利用所述目标socket和所述第二协议栈实例对所述APP数据发送队列中的所述第一数据包分别进行低层协议处理和上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
在第二方面的第二种可能的实现方式中,所述根据所述目标socket与第二协议栈实例的关联关系,确定与所述目标socket关联的第二协议栈实例,包括:根据亲和性图谱,判断所述目标socket是否存在关联的协议栈实例;所述亲和性图谱用于记载与所述目标socket关联的协议栈实例;若所述目标socket存在关联的协议栈实例,则确定所述与所述目标socket关联的协议栈实例为所述第二协议栈实例。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述方法还包括:若所述目标socket不存在关联的协议栈实例,则将控制消息加入到所述目标socket的父协议栈实例的接收队列中;所述目标socket的父协议栈实例是用于创建所述目标socket的协议栈实例;所述控制消息用于指示对所述第一数据包进行协议处理;当轮询到所述父协议栈实例的接收队列中的所述控制消息时,对所述控制消息进行解析,获得所述第一数据包;利用所述父协议栈实例对所述第一数据包进行协议处理;将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述父协议栈实例。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式和第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述确定对所述第一数据包进行协议处理所需要的目标套接字socket,包括:在socket表中进行检索,确定对所述第一数据包进行协议处理所需的所述目标socket。
结合第二方面的第三种可能的实现方式,在第二方面的第五种可能的实现方式中,所述确定对所述第一数据包进行协议处理所需要的目标套接字socket之前,还包括:利用所述父协议栈实例,创建与所述并行协议栈实例包括的各协议栈实例均不存在关联关系的所述目标socket,所述父协议栈实例是所述APP采用随机方式或者参数指定方式或者负载均衡方式在所述各协议栈实例中选定的。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式和第二方面的第三种可能的实现方式,在第二方面的第六种可能的实现方式中,所述利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理之后,还包括:将所述协议处理后的第一数据包加入到网卡的发送队列中,以使所述网卡发送所述协议处理后的第一数据包。
第三方面是提供一种基于并行协议栈实例的数据包处理装置,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述装置包括:低层处理模块,用于利用所述第一协议栈实例对网卡向所述第一协议栈实例分流的所述数据包进行低层协议处理;第一确定模块,用于确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket;第二确定模块,用于根据所述目标socket,确定与所述目标socket关联的第二协议栈实例;上层处理模块,用于利用所述目标socket和所述第二协议栈实例对所述低层协议处理后的所述数据包进行所述上层协议处理;其中,所述低层协议处理模块和所述上层协议处理模块共同完成对所述数据包的完整协议处理。
在第三方面的第一种可能的实现方式中,所述第二确定模块,具体用于根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例;所述目标socket与所述每个协议栈实例之间的亲和性用于指示所述网卡向所述每个协议栈实例已分流的数据包中,需要利用所述目标socket进行上层协议处理的数据包数量。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述装置,还包括:更新模块,用于根据所述低层协议处理后的所述数据包的个数,更新所述亲和性图谱中所记载的所述目标socket与所述第一协议栈实例之间的亲和性。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述装置,还包括:判断模块,用于判断n×A是否大于B,其中,A为所述目标socket与所述第一协议栈实例之间的亲和性,B为所述亲和性图谱中记载的所述目标socket与关联的协议栈实例之间的亲和性,n为预设系数;则所述第二确定模块,包括:第一确定单元,用于若n×A不大于B,则确定将所述亲和性图谱中记载的所述目标socket关联的协议栈实例作为与所述目标socket关联的所述第二协议栈实例。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述第二确定模块,还包括:第二确定单元,用于若n×A大于B,则将所述第一协议栈实例确定为与所述目标socket关联的所述第二协议栈实例,并将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述第一协议栈实例。
结合第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式和第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述第一确定模块,具体用于在socket表中进行检索,获得对所述低层协议处理后的数据包进行上层协议处理所需的所述目标socket。
结合第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式和第三方面的第四种可能的实现方式,在第三方面的第六种可能的实现方式中,所述上层处理模块,包括:队列单元,用于将所述低层协议处理后的所述数据包加入到所述目标socket的底层数据接收队列中;上层处理单元,用于当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket时,利用所述第二协议栈实例对所述底层数据接收队列中的所述数据包进行所述上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
结合第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式和第三方面的第四种可能的实现方式,在第三方面的第七种可能的实现方式中,所述装置,还包括:创建模块,用于利用所述并行协议栈实例包括的各协议栈实例中的一个父协议栈实例,创建与所述各协议栈实例均不存在关联关系的所述目标socket;所述父协议栈实例是应用APP采用随机方式或者参数指定方式或者负载均衡方式选定的。
结合第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式和第三方面的第四种可能的实现方式,在第三方面的第八种可能的实现方式中,所述装置,还包括:接收模块,用于接收所述应用APP发送的第一数据包;所述第一确定模块,还用于确定对所述第一数据包进行协议处理所需要的所述目标套接字socket;所述第二确定模块,还用于确定对所述第一数据包进行协议处理所需要的所述目标套接字socket之后,确定与所述目标socket关联的所述第二协议栈实例;协议处理模块,用于利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理。
第四方面是提供一种基于并行协议栈实例的数据包处理装置,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述装置包括:接收模块,用于接收应用APP发送的第一数据包;第一确定模块,用于确定对所述第一数据包进行协议处理所需要的目标套接字socket;第二确定模块,用于根据所述目标socket与第二协议栈实例的关联关系,确定与所述目标socket关联的所述第二协议栈实例;第一处理模块,用于利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理;其中,所述目标socket与所述第二协议栈实例的关联关系,是所述第一协议栈实例和所述第二协议栈实例对第二数据包进行协议处理时确定的,所述第一协议栈实例对所述第二数据包进行低层协议处理,所述第二协议栈实例对所述第二数据包进行上层协议处理,所述低层协议处理和所述上层协议处理共同完成对所述第二数据包的完整协议处理。
在第四方面的第一种可能的实现方式中,所述第一处理模块,包括:队列单元,用于将所述第一数据包加入到所述目标socket的APP数据发送队列中;处理单元,用于当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket的APP数据发送队列时,利用所述目标socket和所述第二协议栈实例对所述APP数据发送队列中的所述第一数据包分别进行低层协议处理和上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
在第四方面的第二种可能的实现方式中,所述第二确定模块,包括:判断单元,用于根据亲和性图谱,判断所述目标socket是否存在关联的协议栈实例;所述亲和性图谱用于记载与所述目标socket关联的协议栈实例;确定单元,用于若所述目标socket存在关联的协议栈实例,则确定所述与所述目标socket关联的协议栈实例为所述第二协议栈实例。
结合第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述装置,还包括:队列模块,用于若所述目标socket不存在关联的协议栈实例,则将控制消息加入到所述目标socket的父协议栈实例的接收队列中;所述目标socket的父协议栈实例是用于创建所述目标socket的协议栈实例;所述控制消息用于指示对所述第一数据包进行协议处理;解析模块,用于当轮询到所述父协议栈实例的接收队列中的所述控制消息时,对所述控制消息进行解析,获得所述第一数据包;第二处理模块,用于利用所述父协议栈实例对所述第一数据包进行协议处理;更新模块,用于将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述父协议栈实例。
结合第四方面、第四方面的第一种可能的实现方式、第四方面的第二种可能的实现方式和第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,所述第一确定模块,具体用于在socket表中进行检索,确定对所述第一数据包进行协议处理所需的所述目标socket。
结合第四方面的第三种可能的实现方式,在第四方面的第五种可能的实现方式中,所述装置,还包括:创建模块,用于利用所述父协议栈实例,创建与所述并行协议栈实例包括的各协议栈实例均不存在关联关系的所述目标socket,所述父协议栈实例是所述APP采用随机方式或者参数指定方式或者负载均衡方式在所述各协议栈实例中选定的。
结合第四方面、第四方面的第一种可能的实现方式、第四方面的第二种可能的实现方式和第四方面的第三种可能的实现方式,在第四方面的第六种可能的实现方式中,所述装置,还包括:发送模块,用于将所述协议处理后的第一数据包加入到网卡的发送队列中,以使所述网卡发送所述协议处理后的第一数据包。
本发明实施例提供的方法和装置,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种基于并行协议栈实例的数据包处理方法的流程示意图;
图2为本发明一实施例提供的另一种基于并行协议栈实例的数据包处理方法的流程示意图;
图3为本发明另一实施例提供的一种基于并行协议栈实例的数据包处理方法的流程示意图;
图4为本发明另一实施例提供的另一种基于并行协议栈实例的数据包处理方法的流程示意图;
图5为本发明一实施例提供的一种基于并行协议栈实例的数据包处理装置的结构示意图;
图6为本发明一实施例提供的另一种基于并行协议栈实例的数据包处理装置的结构示意图;
图7为本发明另一实施例提供的一种基于并行协议栈实例的数据包处理装置的结构示意图;
图8为本发明另一实施例提供的另一种基于并行协议栈实例的数据包处理装置的结构示意图;
图9为本发明又一实施例提供的一种基于并行协议栈实例的数据包处理装置的结构示意图;
图10为本发明又一实施例提供的另一种基于并行协议栈实例的数据包处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的一种基于并行协议栈实例的数据包处理方法的流程示意图,本实施例所提供的方法由并行协议栈实例执行,该并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,如图1所示,包括:
101、利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理。
可选的,网卡包括多个物理队列,从与第一协议栈实例对应的物理队列中,获取向第一协议栈实例分流的数据包,利用第一协议栈实例对该数据包进行低层协议处理。其中,低层协议处理可为开放式系统互联(Open System Interconnect,OSI)中所规定的三层及以下的协议处理。
102、确定对低层协议处理后的数据包进行上层协议处理所需的目标socket。
可选的,在socket表中进行检索,获得对所述数据包进行上层协议处理所需的目标socket。其中,上层协议可为OSI中所规定的四层及以上的协议处理,socket表用于记录数据包的散列值与socket之间的对应关系,该散列值可为数据包的五元组信息,从而可根据数据包的散列值,在socket表中进行检索,获得对数据包进行上层协议处理所需的目标socket。
103、根据所述目标socket,确定与目标socket关联的第二协议栈实例。
可选的,预先利用各协议栈实例中的一个用于初始建立该目标socket的父协议栈实例,创建与各协议栈实例均不存在关联关系的所述目标socket,如将目标socket创建在内存的共享区,父协议栈实例是APP采用随机方式或者参数指定方式或者负载均衡方式所选定的。根据所述并行协议栈实例所包括的各协议栈实例与所述目标socket之间的亲和性,或者采用负载均衡策略,或者随机地,从各协议栈实例中,确定第二协议栈实例,建立所述目标socket与所述第二协议栈实例之间的关联关系。其中,协议栈实例与目标socket之间的亲和性用于指示网卡向该协议栈实例已分流的数据包中,需要利用所述目标socket进行上层协议处理的数据包总数。
104、利用所述目标socket和与所述目标socket关联的所述第二协议栈实例,对所述低层协议处理后的数据包进行上层协议处理,获得用户数据。
其中,所述低层协议处理和所述上层协议处理共同完成对所述数据包的完整协议处理,例如,底层协议处理完成数据包的OSI中所规定的三层及以下的协议处理,上层协议处理完成OSI中所规定的四层及以上的协议处理,低层协议处理和所述上层协议处理共同完成对所述数据包的OSI中所规定的七层协议处理。
可选的,将低层协议处理后的数据包加入到所述目标socket的底层数据接收队列中,当根据第二协议栈实例对应的协议栈实例关联链表,轮询到目标socket时,利用所述第二协议栈实例对所述底层数据接收队列中的所述数据包进行上层协议处理,获得数据包所携带的用户数据。其中,第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
进一步,本实施例所提供的基于并行协议栈实例的数据包处理方法,还可用于接收APP发送的第一数据包,继而确定对第一数据包进行协议处理所需要的所述目标套接字socket,以及确定与所述目标socket关联的所述第二协议栈实例,进而利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理。
本实施例中,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
图2为本发明一实施例提供的另一种基于并行协议栈实例的数据包处理方法的流程示意图,本实施例所提供的方法由并行协议栈实例执行,如图2所示,包括:
201、从网卡中与第一协议栈对应的物理队列中获取数据包。
可选的,网卡中的各物理队列与并行协议栈中的各协议栈实例存在对应关系,可为物理队列与协议栈实例一一对应,或者多个物理队列对应一个协议栈实例,本实施例中对此不作限定。网卡将向第一协议栈实例分流的数据包加入与第一协议栈实例对应的物理队列中,第一协议栈实从该物理队列中获取该数据包。
202、利用第一协议栈实例对向所述第一协议栈实例分流的数据包进行低层协议处理。
可选的,第一协议栈从网卡的物理队列中获取到数据包之后,利用第一协议栈实例对该数据包进行低层协议处理,例如OSI中所规定的三层及以下协议处理。
203、确定对低层协议处理后的数据包进行上层协议处理所需的目标套接字socket。
可选的,在socket表中进行检索,获得对所述数据包进行上层协议处理所需的目标socket。其中,上层协议可为OSI中所规定的四层及以上的协议处理。
204、根据所述低层协议处理后的数据包的个数,更新亲和性图谱中所记载的目标socket与所述第一协议栈实例之间的亲和性。
其中,协议栈实例与目标socket之间的亲和性用于指示网卡向该协议栈实例已分流的数据包中,需要利用所述目标socket进行上层协议处理的数据包总数。对于一个socket,可能会有多个连接出现,多个连接的流量也会分流到多个协议栈实例,如果配置需要由协议栈实例A处理socket a,那么协议栈实例B收到需要socket a处理的数据包后,需要转发给协议栈实例A处理,而如果配置由协议栈实例B直接处理socket a,则直接从缓存cache中获得该需要socket a处理的数据包即可,显然选择协议栈实例B处理socket a更高效。因此就认为socket a与协议栈实例B之间具有数据亲和性,从而优先将socket a的流量分到协议栈实例B上处理。即,选择与一个socket的亲和性最大的协议栈实例来处理该socket,使得最大的流量不需要转发,保证效率最大化。目标socket的亲和性图谱用于记录并行协议栈中各协议栈实例与目标socket的亲和性、当前与目标socket关联的关联协议栈实例、创建目标socket的父协议栈实例和目标socket对应的预设系数,包括亲和性数组、关联协议栈实例的标识、父协议栈实例的标识和预设系数。亲和性数组用于指示并行协议栈中各协议栈实例与目标socket的亲和性。
可选的,第一协议栈实例对数据包进行低层协议处理之后,统计所获得的低层协议处理后的数据包的个数,将统计所获得的个数增加到亲和性图谱的亲和性数组中,该第一协议栈实例与目标socket的亲和性中。
例如:若亲和性图谱的亲和性数组中,该第一协议栈实例与目标socket的亲和性为X,统计所获得的低层协议处理后的数据包的个数为Y,则更新亲和性图谱的亲和性数组中,该第一协议栈实例与目标socket的亲和性为A=(X+Y)。
205、判断n×A是否大于B,若是,则执行206-207,否则执行208-209。
其中,A为所述目标socket与所述第一协议栈实例之间的亲和性,B为目标socket与当前所关联的协议栈实例之间的亲和性,n为预设系数,n的取值范围为正数,一般情况下,n的取值为不大于1的正数,以减少与目标socket关联的协议栈实例发生改变的频率,反之若需要增大与目标socket关联的协议栈实例发生改变的频率,n取值可大于1;关联协议栈实例是所述亲和性图谱所记载的当前与所述目标socket关联的一个协议栈实例。
206、若n×A大于B,则将所述第一协议栈实例记为所述亲和性图谱中的关联协议栈实例,以及建立所述第一协议栈实例与所述目标socket之间的关联关系。
可选的,若n×A大于B,则说明需要将亲和性图谱中的关联协议栈替换为第一协议栈,建立第一协议栈实例与目标socket之间的关联关系。
207、利用所述目标socket和与所述目标socket关联的第一协议栈实例,对所述低层协议处理后的数据包进行上层协议处理,获得用户数据。
可选的,第一协议栈实例继续对低层协议处理后的数据包进行上层协议处理,获得数据包所携带的用户数据,将该用户数据加入到目标socket的应用接收队列中,当APP轮询该队列时,从该队列中获取该用户数据。
208、若n×A不大于B,则确定将目标socket当前所关联的协议栈实例作为与该目标socket关联的第二协议栈实例。
209、利用所述目标socket和与所述目标socket关联的所述第二协议栈实例,对所述低层协议处理后的数据包进行上层协议处理,获得用户数据。
进一步,207和209中进行上层协议处理之后,向APP发送该用户数据。
可选的,将所述低层协议处理后的数据包加入到所述目标socket的底层数据接收队列中。当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket时,利用所述第二协议栈实例对所述底层数据接收队列中的所述数据包进行上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
需要说明的是,低层协议处理和所述上层协议处理共同完成对所述数据包的完整协议处理,例如,底层协议处理完成数据包的OSI中所规定的三层及以下的协议处理,上层协议处理完成OSI中所规定的四层及以上的协议处理,低层协议处理和所述上层协议处理共同完成对所述数据包的OSI中所规定的七层协议处理。
本实施例中,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
图3为本发明另一实施例提供的一种基于并行协议栈实例的数据包处理方法的流程示意图,本实施例所提供的方法由并行协议栈实例执行,并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,如图3所示,包括:
301、接收APP发送的第一数据包。
302、确定对第一数据包进行协议处理所需要的目标socket。
可选的,在socket表中进行检索,获得对所述第一数据包进行协议处理所需的目标socket。其中,目标socket是APP采用随机方式或者参数指定方式或者负载均衡方式,所选定的各协议栈实例中的一个父协议栈实例,利用该父协议栈实例创建的与各协议栈实例均不存在关联关系的socket。
303、根据目标socket与第二协议栈实例的关联关系,确定与目标socket关联的第二协议栈实例。
其中,目标socket与所述第二协议栈实例的关联关系,是所述第一协议栈实例和所述第二协议栈实例对第二数据包进行协议处理时确定的,所述第一协议栈实例对所述第二数据包进行低层协议处理,所述第二协议栈实例对所述第二数据包进行上层协议处理,所述低层协议处理和所述上层协议处理共同完成对所述第二数据包的完整协议处理。
304、利用目标socket和与目标socket关联的第二协议栈实例,对所述第一数据包进行协议处理。
需要说明的是,低层协议处理和上层协议处理共同完成对所述数据包的完整协议处理,例如,底层协议处理完成数据包的OSI中所规定的三层及以下的协议处理,上层协议处理完成OSI中所规定的四层及以上的协议处理,低层协议处理和所述上层协议处理共同完成对所述数据包的OSI中所规定的七层协议处理。
本实施例中的第二协议栈实例的确定方法,可参考前述实施例中的确定第二协议栈实例的方法,本实施例中不再赘述。
本实施例中,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
图4为本发明另一实施例提供的另一种基于并行协议栈实例的数据包处理方法的流程示意图,本实施例所提供的方法由并行协议栈实例执行,并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,如图4所示,包括:
401、接收APP发送的第一数据包。
402、确定对第一数据包进行协议处理所需要的目标socket。
可选的,在socket表中进行检索,确定对所述第一数据包进行协议处理所需的目标socket。
进一步,402之前包括利用并行协议栈实例中的一个用于初始建立该目标socket的父协议栈实例,创建与并行协议栈实例包括的各协议栈实例均不存在关联关系的目标socket,其中,父协议栈实例是APP采用随机方式或者参数指定方式或者负载均衡方式在上述并行协议栈实例包括的各协议栈实例中选定的。
403、根据亲和性图谱,判断所述目标socket是否存在关联的协议栈实例。若存在,则执行404-405,否则执行406-408。
其中,亲和性图谱用于记载当前与所述目标socket关联的协议栈实例,亲和性图谱中记载的关联协议栈实例是当前与目标socket存在关联关系的协议栈实例。该关联关系是通过根据所述并行协议栈实例所包括的各协议栈实例与所述目标socket之间的亲和性,从各协议栈实例中确定的,继而建立目标socket与所述第二协议栈实例之间的关联关系。其中,协议栈实例与所述目标socket之间的亲和性用于指示网卡向该协议栈实例已分流的数据包中,需要利用所述目标socket进行上层协议处理的数据包总数。
404、若所述目标socket存在关联的协议栈实例,则将所述第一数据包加入到目标socket的APP数据发送队列中。
可选的,目标socket包括APP数据发送队列、APP数据接收队列和底层数据接收队列。其中,APP数据发送队列用于存放APP发出的数据包,APP数据接收队列用于存放向APP发送的数据包,底层数据接收队列用于存放网卡所分流的数据包。
405、当轮询到目标socket的APP数据发送队列时,利用所述目标socket和关联的第二协议栈实例对第一数据包进行协议处理。
可选的,当根据第二协议栈实例对应的协议栈实例关联链表,轮询到目标socket的APP数据发送队列时,利用目标socket和第二协议栈实例对APP数据发送队列中的第一数据包分别进行低层协议处理和上层协议处理。
其中,第二协议栈实例对应的协议栈实例关联链表用于指示与第二协议栈实例存在关联关系的socket。
需要说明的是,低层协议处理和上层协议处理共同完成对所述数据包的完整协议处理,例如,底层协议处理完成数据包的OSI中所规定的三层及以下的协议处理,上层协议处理完成OSI中所规定的四层及以上的协议处理,低层协议处理和所述上层协议处理共同完成对所述数据包的OSI中所规定的七层协议处理。
406、若所述目标socket不存在关联的协议栈实例,则将控制消息加入到所述目标socket的父协议栈实例的接收队列中。
其中,目标socket的父协议栈实例是用于创建所述目标socket的协议栈实例,控制消息用于指示对第一数据包进行协议处理。父协议栈实例的接收队列用于存放需要利用父协议栈进行处理的数据包或控制消息。
407、当轮询到该父协议栈实例的接收队列中的控制消息时,对控制消息进行解析,获得第一数据包。
可选的,对各个协议栈的接收队列进行轮询,当轮询到父协议栈的接收队列时,从该队列中取出该控制消息,对该控制消息进行解析,获得该第一数据包。
408、利用父协议栈实例对第一数据包进行协议处理。
409、将所述协议处理后的第一数据包加入到网卡的发送队列中,以使网卡发送所述协议处理后的第一数据包。
本实施例中,通过利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,获得用户数据,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
图5为本发明一实施例提供的一种基于并行协议栈实例的数据包处理装置的结构示意图,并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,如图5所示,包括:低层处理模块51、第一确定模块52、第二确定模块55和上层处理模块53。
低层处理模块51,用于利用所述第一协议栈实例对网卡向所述第一协议栈实例分流的所述数据包进行低层协议处理。
第一确定模块52,与低层处理模块51连接,用于确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket。
可选的,第一确定模块52,具体用于在socket表中进行检索,确定对所述数据包进行上层协议处理所需的目标socket。
第二确定模块55,与第一确定模块52连接,用于根据所述目标socket,确定与所述目标socket关联的第二协议栈实例。
可选的,第二确定模块55具体用于根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例;所述目标socket与所述每个协议栈实例之间的亲和性用于指示所述网卡向所述每个协议栈实例已分流的数据包中,需要利用所述目标socket进行上层协议处理的数据包数量。
上层处理模块53,与第二确定模块55连接,用于利用所述目标socket和与所述目标socket关联的所述第二协议栈实例,对所述低层协议处理后的数据包进行上层协议处理。
其中,低层协议处理模块51和上层协议处理模块53共同完成对该数据包的完整协议处理。
需要说明的是,低层协议处理和上层协议处理共同完成对所述数据包的完整协议处理,例如,底层协议处理完成数据包的OSI中所规定的三层及以下的协议处理,上层协议处理完成OSI中所规定的四层及以上的协议处理,低层协议处理和所述上层协议处理共同完成对所述数据包的OSI中所规定的七层协议处理。
可选的,上层处理模块53,具体用于将所述低层协议处理后的数据包加入到所述目标socket的底层数据接收队列中;当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket时,利用所述第二协议栈实例对所述底层数据接收队列中的所述数据包进行所述上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
本实施例中,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
图6为本发明一实施例提供的另一种基于并行协议栈实例的数据包处理装置的结构示意图,并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,如图6所示,在上一实施例的基础上,本实施例中的基于并行协议栈实例的数据包处理装置进一步包括:
创建模块54,与第一确定模块52连接,用于利用所述并行协议栈实例包括的各协议栈实例中的一个父协议栈实例,创建与所述各协议栈实例均不存在关联关系的所述目标socket。
其中,父协议栈实例是APP采用随机方式或者参数指定方式或者负载均衡方式选定的。
进一步,基于并行协议栈实例的数据包处理装置还包括:
更新模块57,与第一确定模块52连接,用于根据所述低层协议处理后的数据包的个数,更新所述亲和性图谱中所记载的所述目标socket与所述第一协议栈实例之间的亲和性。
判断模块58,与更新模块57和第二确定模块55连接,用于判断n×A是否大于B,其中,A为所述目标socket与所述第一协议栈实例之间的亲和性,B为所述亲和性图谱中记载的所述目标socket与关联的协议栈实例之间的亲和性,n为预设系数,n取正数,具体n的取值可参考运行并行协议栈实例的CPU的处理性能,若CPU的处理性能优良则n可相应取值较小,反之,n取值较大;亲和性图谱所记载的关联协议栈实例是当前与目标socket关联的协议栈实例。
基于此,第二确定模块55进一步包括第一确定单元551和第二确定单元552。
第一确定单元551,用于若n×A不大于B,则确定将所述亲和性图谱中记载的所述目标socket关联的协议栈实例作为与所述目标socket关联的所述第二协议栈实例。
第二确定单元552,用于若n×A大于B,则将所述第一协议栈实例确定为与所述目标socket关联的所述第二协议栈实例,并将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述第一协议栈实例。
进一步,上层处理模块53,包括:
队列单元531,用于将所述低层协议处理后的所述数据包加入到所述目标socket的底层数据接收队列中。
上层处理单元532,与队列单元531连接,用于当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket时,利用所述第二协议栈实例对所述底层数据接收队列中的所述数据包进行所述上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
本实施例所提供的基于并行协议栈实例的数据包处理装置可设置于并行协议栈上。作为一种可实现方式,其中,低层处理模块51、第一确定模块52、第二确定模块55、更新模块57和判断模块58可设置于第一协议栈实例中;上层处理模块53中的队列单元531可设置于第一协议栈实例中,上层处理模块53中的上层处理单元532可设置于第二协议栈实例中。
进一步,基于并行协议栈实例的数据包处理装置,还包括:接收模块61、和协议处理模块62。
接收模块61,与第一确定模块52连接,用于接收所述应用APP发送的第一数据包。
第一确定模块52,还用于确定对所述第一数据包进行协议处理所需要的所述目标套接字socket。
第二确定模块55,还用于确定对所述第一数据包进行协议处理所需要的所述目标套接字socket之后,确定与所述目标socket关联的所述第二协议栈实例。
协议处理模块62,与第二确定模块55连接,用于利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理。
需要说明的是,低层协议处理和上层协议处理共同完成对所述数据包的完整协议处理,例如,底层协议处理完成数据包的OSI中所规定的三层及以下的协议处理,上层协议处理完成OSI中所规定的四层及以上的协议处理,低层协议处理和所述上层协议处理共同完成对所述数据包的OSI中所规定的七层协议处理。
本实施例提供的并行协议栈实例的数据包处理装置的各功能模块可用于执行图1和图2所示的并行协议栈实例的数据包处理方法流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例中,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
图7为本发明另一实施例提供的一种基于并行协议栈实例的数据包处理装置的结构示意图,并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,如图7所示,包括:接收模块71、第一确定模块72、第一处理模块73和第二确定模块70。
接收模块71,用于接收应用APP发送的第一数据包。
第一确定模块72,与接收模块71连接,用于确定对所述第一数据包进行协议处理所需要的目标套接字socket。
可选的,第一确定模块72具体用于在socket表中进行检索,获得对所述第一数据包进行协议处理所需的目标socket。
第二确定模块70,与第一确定模块72连接,用于根据所述目标socket与第二协议栈实例的关联关系,确定与目标socket关联的第二协议栈实例。
第一处理模块73,与第二确定模块70连接,用于利用目标socket和第二协议栈实例,对所述第一数据包进行协议处理。
其中,目标socket与所述第二协议栈实例的关联关系,是所述第一协议栈实例和所述第二协议栈实例对第二数据包进行协议处理时确定的,所述第一协议栈实例对所述第二数据包进行低层协议处理,所述第二协议栈实例对所述第二数据包进行上层协议处理,所述低层协议处理和所述上层协议处理共同完成对所述第二数据包的完整协议处理。
需要说明的是,低层协议处理和上层协议处理共同完成对所述数据包的完整协议处理,例如,底层协议处理完成数据包的OSI中所规定的三层及以下的协议处理,上层协议处理完成OSI中所规定的四层及以上的协议处理,低层协议处理和所述上层协议处理共同完成对所述数据包的OSI中所规定的七层协议处理。
本实施例中,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
图8为本发明另一实施例提供的另一种基于并行协议栈实例的数据包处理装置的结构示意图,并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,如图8所示,在上一实施例的基础上,本实施例中的基于并行协议栈实例的数据包处理装置中的第二确定模块70进一步包括:
判断单元701,用于根据亲和性图谱,判断所述目标socket是否存在关联的协议栈实例。
其中,亲和性图谱用于记载当前与所述目标socket关联的协议栈实例,亲和性图谱中的关联协议栈实例用于指示当前与所述目标socket关联的协议栈实例。
确定单元702,与判断单元701连接,用于若所述目标socket存在关联的协议栈实例,则确定所述与所述目标socket关联的协议栈实例为所述第二协议栈实例。
进一步,第一处理模块73包括:队列单元731和处理单元732。
队列单元731,用于将所述第一数据包加入到所述目标socket的APP数据发送队列中。
处理单元732,与队列单元731连接,用于当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket的APP数据发送队列时,利用所述目标socket和所述第二协议栈实例对所述APP数据发送队列中的所述第一数据包分别进行低层协议处理和上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
进一步,基于并行协议栈实例的数据包处理装置还包括:创建模块78、队列模块75、解析模块76、第二处理模块77和更新模块80。
创建模块78,与第一确定模块72连接,用于利用父协议栈实例,创建与所述并行协议栈实例包括的各协议栈实例均不存在关联关系的所述目标socket。
其中,父协议栈实例是所述APP采用随机方式或者参数指定方式或者负载均衡方式在各协议栈实例中选定的。
队列模块75,与第一确定模块72连接,用于若所述目标socket不存在关联的协议栈实例,则将控制消息加入到所述目标socket的父协议栈实例的接收队列中;所述目标socket的父协议栈实例是用于创建所述目标socket的协议栈实例;所述控制消息用于指示对所述第一数据包进行协议处理。
解析模块76,与队列模块75连接,用于当轮询到所述父协议栈实例的接收队列中的所述控制消息时,对所述控制消息进行解析,获得所述第一数据包。
第二处理模块77,与解析模块76连接,用于利用所述父协议栈实例对所述第一数据包进行协议处理。
需要说明的是,低层协议处理和上层协议处理共同完成对所述数据包的完整协议处理,例如,底层协议处理完成数据包的OSI中所规定的三层及以下的协议处理,上层协议处理完成OSI中所规定的四层及以上的协议处理,低层协议处理和所述上层协议处理共同完成对所述数据包的OSI中所规定的七层协议处理。也就是说,上层协议处理所对应的网络层次高于低层协议处理所对应的网络层次。
更新模块74,与第二处理模块77连接,用于将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述父协议栈实例
进一步,基于并行协议栈实例的数据包处理装置还包括:
发送模块79,与第二处理模块77和第一处理模块73连接,用于将所述协议处理后的第一数据包加入到网卡的发送队列中,以使网卡发送所述协议处理后的第一数据包。
本实施例提供的并行协议栈实例的数据包处理装置的各功能模块可用于执行图3和图4所示的并行协议栈实例的数据包处理方法流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例中,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
图9为本发明又一实施例提供的一种基于并行协议栈实例的数据包处理装置的结构示意图,如图9所示,本实施例中的装置可以包括:存储器81、通信接口82和处理器83。
存储器81,用于存放程序。具体的,程序可以包括程序代码,上述程序代码包括计算机操作指令。存储器81可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
通信接口82,用于接收向第一协议栈实例分流的数据包。
处理器83,用于执行存储器81存放的程序,以用于:利用所述第一协议栈实例对网卡向所述第一协议栈实例分流的所述数据包进行低层协议处理;确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket;根据所述目标socket,确定与所述目标socket关联的第二协议栈实例;利用所述目标socket和所述第二协议栈实例对所述低层协议处理后的所述数据包进行所述上层协议处理;其中,所述低层协议处理和所述上层协议处理共同完成对所述数据包的完整协议处理。
可选的,处理器83具体用于利用各协议栈实例中的一个用于初始建立目标socket的父协议栈实例,创建与各协议栈实例均不存在关联关系的所述目标socket,其中,父协议栈实例是APP采用随机方式或者参数指定方式或者负载均衡方式所选定的;利用第一协议栈实例对向所述第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标套接字socket;根据所述并行协议栈实例所包括的各协议栈实例与所述目标socket之间的亲和性,从各协议栈实例中,确定第二协议栈实例;所述协议栈实例与所述目标socket之间的亲和性用于指示网卡向该协议栈实例已分流的数据包中,需要利用所述目标socket进行上层协议处理的数据包总数;建立所述目标socket与所述第二协议栈实例之间的关联关系。利用所述目标socket和与所述目标socket关联的第二协议栈实例,对所述低层协议处理后的数据包进行上层协议处理,获得用户数据。
需要说明的是,低层协议处理和上层协议处理共同完成对所述数据包的完整协议处理,例如,底层协议处理完成数据包的OSI中所规定的三层及以下的协议处理,上层协议处理完成OSI中所规定的四层及以上的协议处理,低层协议处理和所述上层协议处理共同完成对所述数据包的OSI中所规定的七层协议处理。
本实施例提供的并行协议栈实例的数据包处理装置的各功能模块可用于执行图1和图2所示的并行协议栈实例的数据包处理方法流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例中,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
图10为本发明又一实施例提供的另一种基于并行协议栈实例的数据包处理装置的结构示意图,如图10所示,本实施例中的装置可以包括:存储器91、通信接口92和处理器93。
存储器91,用于存放程序。具体的,程序可以包括程序代码,上述程序代码包括计算机操作指令。存储器91可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
通信接口92,用于接收APP发送的第一数据包。
处理器93,用于执行存储器91存放的程序,以用于:接收应用APP发送的第一数据包;确定对所述第一数据包进行协议处理所需要的目标套接字socket;根据所述目标socket与第二协议栈实例的关联关系,确定与所述目标socket关联的所述第二协议栈实例;利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理;其中,所述目标socket与所述第二协议栈实例的关联关系,是所述第一协议栈实例和所述第二协议栈实例对第二数据包进行协议处理时确定的,所述第一协议栈实例对所述第二数据包进行低层协议处理,所述第二协议栈实例对所述第二数据包进行上层协议处理,所述低层协议处理和所述上层协议处理共同完成对所述第二数据包的完整协议处理。
可选的,处理器93具体用于根据亲和性图谱,判断所述目标socket是否存在关联的协议栈实例;若所述目标socket存在关联的协议栈实例,则确定与所述目标socket关联的第二协议栈实例,利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理,如将第一数据包加入到所述目标socket的APP数据发送队列中,当根据第二协议栈实例对应的协议栈实例关联链表,轮询到目标socket的APP数据发送队列时,利用目标socket和第二协议栈实例对APP数据发送队列中的第一数据包分别进行低层协议处理和上层协议处理,其中,第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的目标socket。若所述目标socket不存在关联的协议栈实例,则将控制消息加入到所述目标socket的父协议栈实例的接收队列中;所述目标socket的父协议栈实例是用于创建所述目标socket的协议栈实例;所述控制消息用于指示对所述第一数据包进行协议处理;当轮询到所述接收队列中的所述控制消息时,对所述控制消息进行解析,获得所述第一数据包;利用所述父协议栈实例对所述第一数据包进行协议处理。
需要说明的是,低层协议处理和上层协议处理共同完成对所述数据包的完整协议处理,例如,底层协议处理完成数据包的OSI中所规定的三层及以下的协议处理,上层协议处理完成OSI中所规定的四层及以上的协议处理,低层协议处理和所述上层协议处理共同完成对所述数据包的OSI中所规定的七层协议处理。
进一步,通信接口92还用于将所述协议处理后的第一数据包加入到网卡的发送队列中,以使网卡发送所述协议处理后的第一数据包。
本实施例提供的并行协议栈实例的数据包处理装置的各功能模块可用于执行图3和图4所示的并行协议栈实例的数据包处理方法流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例中,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (32)
1.一种基于并行协议栈实例的数据包处理方法,其特征在于,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述方法包括:
利用所述第一协议栈实例对网卡向所述第一协议栈实例分流的所述数据包进行低层协议处理;
确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket;
根据所述目标socket,确定与所述目标socket关联的第二协议栈实例;
利用所述目标socket和所述第二协议栈实例对所述低层协议处理后的所述数据包进行所述上层协议处理;
其中,所述低层协议处理和所述上层协议处理共同完成对所述数据包的完整协议处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标socket,确定与所述目标socket关联的第二协议栈实例,包括:
根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例;所述目标socket与所述每个协议栈实例之间的亲和性用于指示所述网卡向所述每个协议栈实例已分流的数据包中,需要利用所述目标socket进行上层协议处理的数据包数量。
3.根据权利要求2所述的方法,其特征在于,所述根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例之前,还包括:
根据所述低层协议处理后的所述数据包的个数,更新所述亲和性图谱中所记载的所述目标socket与所述第一协议栈实例之间的亲和性。
4.根据权利要求3所述的方法,其特征在于,所述根据所述低层协议处理后的所述数据包的个数,更新所述亲和性图谱中所记载的所述目标socket与所述第一协议栈实例之间的亲和性之后,还包括:
判断n×A是否大于B,其中,A为所述目标socket与所述第一协议栈实例之间的亲和性,B为所述亲和性图谱中记载的所述目标socket与关联的协议栈实例之间的亲和性,n为预设系数;
则所述根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例,包括:
若n×A不大于B,则确定将所述亲和性图谱中记载的所述目标socket关联的协议栈实例作为与所述目标socket关联的所述第二协议栈实例。
5.根据权利要求4所述的方法,其特征在于,所述根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例,还包括:
若n×A大于B,则将所述第一协议栈实例确定为与所述目标socket关联的所述第二协议栈实例,并将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述第一协议栈实例。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket,包括:
在socket表中进行检索,获得对所述低层协议处理后的所述数据包进行上层协议处理所需的所述目标socket。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述利用所述目标socket和所述第二协议栈实例对所述低层协议处理后的所述数据包进行所述上层协议处理,包括:
将所述低层协议处理后的所述数据包加入到所述目标socket的底层数据接收队列中;
当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket时,利用所述第二协议栈实例对所述底层数据接收队列中的所述数据包进行所述上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
8.根据权利要求1-5任一项所述的方法,其特征在于,所述确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket之前,还包括:
利用所述并行协议栈实例包括的各协议栈实例中的一个父协议栈实例,创建与所述各协议栈实例均不存在关联关系的所述目标socket;所述父协议栈实例是应用APP采用随机方式或者参数指定方式或者负载均衡方式选定的。
9.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
接收应用APP发送的第一数据包;
确定对所述第一数据包进行协议处理所需要的所述目标套接字socket;
确定与所述目标socket关联的所述第二协议栈实例;
利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理。
10.一种基于并行协议栈实例的数据包处理方法,其特征在于,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述方法包括:
接收应用APP发送的第一数据包;
确定对所述第一数据包进行协议处理所需要的目标套接字socket;
根据所述目标socket与第二协议栈实例的关联关系,确定与所述目标socket关联的所述第二协议栈实例;
利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理;
其中,所述目标socket与所述第二协议栈实例的关联关系,是所述第一协议栈实例和所述第二协议栈实例对第二数据包进行协议处理时确定的,所述第一协议栈实例对所述第二数据包进行低层协议处理,所述第二协议栈实例对所述第二数据包进行上层协议处理,所述低层协议处理和所述上层协议处理共同完成对所述第二数据包的完整协议处理。
11.根据权利要求10所述的方法,其特征在于,所述利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理,包括:
将所述第一数据包加入到所述目标socket的APP数据发送队列中;
当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket的APP数据发送队列时,利用所述目标socket和所述第二协议栈实例对所述APP数据发送队列中的所述第一数据包分别进行低层协议处理和上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
12.根据权利要求10所述的方法,其特征在于,所述根据所述目标socket与第二协议栈实例的关联关系,确定与所述目标socket关联的第二协议栈实例,包括:
根据亲和性图谱,判断所述目标socket是否存在关联的协议栈实例;所述亲和性图谱用于记载与所述目标socket关联的协议栈实例;
若所述目标socket存在关联的协议栈实例,则确定所述与所述目标socket关联的协议栈实例为所述第二协议栈实例。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
若所述目标socket不存在关联的协议栈实例,则将控制消息加入到所述目标socket的父协议栈实例的接收队列中;所述目标socket的父协议栈实例是用于创建所述目标socket的协议栈实例;所述控制消息用于指示对所述第一数据包进行协议处理;
当轮询到所述父协议栈实例的接收队列中的所述控制消息时,对所述控制消息进行解析,获得所述第一数据包;
利用所述父协议栈实例对所述第一数据包进行协议处理;
将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述父协议栈实例。
14.根据权利要求10-13任一项所述的方法,其特征在于,所述确定对所述第一数据包进行协议处理所需要的目标套接字socket,包括:
在socket表中进行检索,确定对所述第一数据包进行协议处理所需的所述目标socket。
15.根据权利要求13所述的方法,其特征在于,所述确定对所述第一数据包进行协议处理所需要的目标套接字socket之前,还包括:
利用所述父协议栈实例,创建与所述并行协议栈实例包括的各协议栈实例均不存在关联关系的所述目标socket,所述父协议栈实例是所述APP采用随机方式或者参数指定方式或者负载均衡方式在所述各协议栈实例中选定的。
16.根据权利要求10-13任一项所述的方法,其特征在于,所述利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理之后,还包括:
将所述协议处理后的第一数据包加入到网卡的发送队列中,以使所述网卡发送所述协议处理后的第一数据包。
17.一种基于并行协议栈实例的数据包处理装置,其特征在于,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述装置包括:
低层处理模块,用于利用所述第一协议栈实例对网卡向所述第一协议栈实例分流的所述数据包进行低层协议处理;
第一确定模块,用于确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket;
第二确定模块,用于根据所述目标socket,确定与所述目标socket关联的第二协议栈实例;
上层处理模块,用于利用所述目标socket和所述第二协议栈实例对所述低层协议处理后的所述数据包进行所述上层协议处理;
其中,所述低层协议处理模块和所述上层协议处理模块共同完成对所述数据包的完整协议处理。
18.根据权利要求17所述的装置,其特征在于,
所述第二确定模块,具体用于根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例;所述目标socket与所述每个协议栈实例之间的亲和性用于指示所述网卡向所述每个协议栈实例已分流的数据包中,需要利用所述目标socket进行上层协议处理的数据包数量。
19.根据权利要求18所述的装置,其特征在于,所述装置,还包括:
更新模块,用于根据所述低层协议处理后的所述数据包的个数,更新所述亲和性图谱中所记载的所述目标socket与所述第一协议栈实例之间的亲和性。
20.根据权利要求19所述的装置,其特征在于,所述装置,还包括:
判断模块,用于判断n×A是否大于B,其中,A为所述目标socket与所述第一协议栈实例之间的亲和性,B为所述亲和性图谱中记载的所述目标socket与关联的协议栈实例之间的亲和性,n为预设系数;
则所述第二确定模块,包括:
第一确定单元,用于若n×A不大于B,则确定将所述亲和性图谱中记载的所述目标socket关联的协议栈实例作为与所述目标socket关联的所述第二协议栈实例。
21.根据权利要求20所述的装置,其特征在于,所述第二确定模块,还包括:
第二确定单元,用于若n×A大于B,则将所述第一协议栈实例确定为与所述目标socket关联的所述第二协议栈实例,并将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述第一协议栈实例。
22.根据权利要求17-21任一项所述的装置,其特征在于,
所述第一确定模块,具体用于在socket表中进行检索,获得对所述低层协议处理后的数据包进行上层协议处理所需的所述目标socket。
23.根据权利要求17-21任一项所述的装置,其特征在于,所述上层处理模块,包括:
队列单元,用于将所述低层协议处理后的所述数据包加入到所述目标socket的底层数据接收队列中;
上层处理单元,用于当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket时,利用所述第二协议栈实例对所述底层数据接收队列中的所述数据包进行所述上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
24.根据权利要求17-21任一项所述的装置,其特征在于,所述装置,还包括:
创建模块,用于利用所述并行协议栈实例包括的各协议栈实例中的一个父协议栈实例,创建与所述各协议栈实例均不存在关联关系的所述目标socket;所述父协议栈实例是应用APP采用随机方式或者参数指定方式或者负载均衡方式选定的。
25.根据权利要求17-21任一项所述的装置,其特征在于,所述装置,还包括:
接收模块,用于接收应用APP发送的第一数据包;
所述第一确定模块,还用于确定对所述第一数据包进行协议处理所需要的所述目标套接字socket;
所述第二确定模块,还用于确定对所述第一数据包进行协议处理所需要的所述目标套接字socket之后,确定与所述目标socket关联的所述第二协议栈实例;
协议处理模块,用于利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理。
26.一种基于并行协议栈实例的数据包处理装置,其特征在于,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述装置包括:
接收模块,用于接收应用APP发送的第一数据包;
第一确定模块,用于确定对所述第一数据包进行协议处理所需要的目标套接字socket;
第二确定模块,用于根据所述目标socket与第二协议栈实例的关联关系,确定与所述目标socket关联的所述第二协议栈实例;
第一处理模块,用于利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理;
其中,所述目标socket与所述第二协议栈实例的关联关系,是所述第一协议栈实例和所述第二协议栈实例对第二数据包进行协议处理时确定的,所述第一协议栈实例对所述第二数据包进行低层协议处理,所述第二协议栈实例对所述第二数据包进行上层协议处理,所述低层协议处理和所述上层协议处理共同完成对所述第二数据包的完整协议处理。
27.根据权利要求26所述的装置,其特征在于,所述第一处理模块,包括:
队列单元,用于将所述第一数据包加入到所述目标socket的APP数据发送队列中;
处理单元,用于当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket的APP数据发送队列时,利用所述目标socket和所述第二协议栈实例对所述APP数据发送队列中的所述第一数据包分别进行低层协议处理和上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。
28.根据权利要求26所述的装置,其特征在于,所述第二确定模块,包括:
判断单元,用于根据亲和性图谱,判断所述目标socket是否存在关联的协议栈实例;所述亲和性图谱用于记载与所述目标socket关联的协议栈实例;
确定单元,用于若所述目标socket存在关联的协议栈实例,则确定所述与所述目标socket关联的协议栈实例为所述第二协议栈实例。
29.根据权利要求28所述的装置,其特征在于,所述装置,还包括:
队列模块,用于若所述目标socket不存在关联的协议栈实例,则将控制消息加入到所述目标socket的父协议栈实例的接收队列中;所述目标socket的父协议栈实例是用于创建所述目标socket的协议栈实例;所述控制消息用于指示对所述第一数据包进行协议处理;
解析模块,用于当轮询到所述父协议栈实例的接收队列中的所述控制消息时,对所述控制消息进行解析,获得所述第一数据包;
第二处理模块,用于利用所述父协议栈实例对所述第一数据包进行协议处理;
更新模块,用于将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述父协议栈实例。
30.根据权利要求26-29任一项所述的装置,其特征在于,
所述第一确定模块,具体用于在socket表中进行检索,确定对所述第一数据包进行协议处理所需的所述目标socket。
31.根据权利要求29所述的装置,其特征在于,所述装置,还包括:
创建模块,用于利用所述父协议栈实例,创建与所述并行协议栈实例包括的各协议栈实例均不存在关联关系的所述目标socket,所述父协议栈实例是所述APP采用随机方式或者参数指定方式或者负载均衡方式在所述各协议栈实例中选定的。
32.根据权利要求26-29任一项所述的装置,其特征在于,所述装置,还包括:
发送模块,用于将所述协议处理后的第一数据包加入到网卡的发送队列中,以使所述网卡发送所述协议处理后的第一数据包。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410043721.0A CN104811431B (zh) | 2014-01-29 | 2014-01-29 | 基于并行协议栈实例的数据包处理方法和装置 |
PCT/CN2014/091614 WO2015113435A1 (zh) | 2014-01-29 | 2014-11-19 | 基于并行协议栈实例的数据包处理方法和装置 |
EP14880468.5A EP3091706B1 (en) | 2014-01-29 | 2014-11-19 | Data packet processing method and apparatus based on parallel protocol stack instances |
JP2016549111A JP6359111B2 (ja) | 2014-01-29 | 2014-11-19 | 並列プロトコル・スタック・インスタンスに基づいてデータパケットを処理する方法および装置 |
US15/222,753 US10069947B2 (en) | 2014-01-29 | 2016-07-28 | Method and apparatus for processing data packet based on parallel protocol stack instances |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410043721.0A CN104811431B (zh) | 2014-01-29 | 2014-01-29 | 基于并行协议栈实例的数据包处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104811431A CN104811431A (zh) | 2015-07-29 |
CN104811431B true CN104811431B (zh) | 2018-01-16 |
Family
ID=53695928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410043721.0A Active CN104811431B (zh) | 2014-01-29 | 2014-01-29 | 基于并行协议栈实例的数据包处理方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10069947B2 (zh) |
EP (1) | EP3091706B1 (zh) |
JP (1) | JP6359111B2 (zh) |
CN (1) | CN104811431B (zh) |
WO (1) | WO2015113435A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020077502A1 (zh) * | 2018-10-15 | 2020-04-23 | Oppo广东移动通信有限公司 | 无线通信方法和设备 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108270813B (zh) | 2016-12-30 | 2021-02-12 | 华为技术有限公司 | 一种异构多协议栈方法、装置及系统 |
CN108667864B (zh) * | 2017-03-29 | 2020-07-28 | 华为技术有限公司 | 一种进行资源调度的方法和装置 |
MX2019015149A (es) | 2017-07-25 | 2020-02-19 | Guangdong Oppo Mobile Telecommunications Corp Ltd | Metodo de conmutacion, dispositivo de red de acceso y dispositivo de terminal. |
CN110278161B (zh) * | 2019-05-06 | 2020-08-11 | 阿里巴巴集团控股有限公司 | 基于用户态协议栈的报文分流方法、装置及系统 |
US10904719B2 (en) | 2019-05-06 | 2021-01-26 | Advanced New Technologies Co., Ltd. | Message shunting method, device and system based on user mode protocol stack |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217464A (zh) * | 2007-12-28 | 2008-07-09 | 北京大学 | 一种udp数据包的传输方法 |
CN101227504A (zh) * | 2008-02-18 | 2008-07-23 | 华为技术有限公司 | 一种实现协议栈之间切换的方法及装置 |
CN101399692A (zh) * | 2007-09-27 | 2009-04-01 | 华为技术有限公司 | 业务迁移的方法和系统 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1051825A1 (en) | 1998-01-29 | 2000-11-15 | BRITISH TELECOMMUNICATIONS public limited company | Communications system for mobile data transfer |
US7647414B2 (en) | 2002-07-26 | 2010-01-12 | Broadcom Corporation | System and method for managing multiple stack environments |
CA2408474A1 (en) * | 2002-10-17 | 2004-04-17 | Ibm Canada Limited-Ibm Canada Limitee | Apparatus and method for enabling efficient multi-protocol database transaction processing |
US7802001B1 (en) * | 2002-10-18 | 2010-09-21 | Astute Networks, Inc. | System and method for flow control within a stateful protocol processing system |
US7562145B2 (en) * | 2003-08-28 | 2009-07-14 | International Business Machines Corporation | Application instance level workload distribution affinities |
US7734829B2 (en) | 2004-06-09 | 2010-06-08 | Emc Corporation | Methods, systems, and computer program products for transparently controlling communications between network applications and a plurality of network communications protocol stacks using deferred protocol stack association |
US7808983B2 (en) * | 2004-07-08 | 2010-10-05 | Cisco Technology, Inc. | Network device architecture for centralized packet processing |
US20070242671A1 (en) | 2006-04-13 | 2007-10-18 | Christenson David A | Method and Apparatus for Routing Data Packets Between Different Internet Communications Stack Instances |
CN1870654A (zh) | 2006-06-21 | 2006-11-29 | 中国科学院计算技术研究所 | 一种支持ipv4和ipv6双协议栈网络通信模块的实现方法 |
EP1885098B1 (en) * | 2006-08-04 | 2011-04-06 | Canon Kabushiki Kaisha | Communication apparatus and communication control method |
CN101132456B (zh) | 2006-08-22 | 2011-08-10 | 中兴通讯股份有限公司 | 蓝牙多功能遥控器装置及其实现语音通信的方法 |
US7715428B2 (en) | 2007-01-31 | 2010-05-11 | International Business Machines Corporation | Multicore communication processing |
PT103744A (pt) | 2007-05-16 | 2008-11-17 | Coreworks S A | Arquitectura de acesso ao núcleo de rede. |
CN101415025B (zh) | 2008-09-28 | 2011-09-07 | 中控科技集团有限公司 | 网络数据处理的方法、装置和系统 |
CN101426027B (zh) | 2008-10-28 | 2012-06-06 | 华为技术有限公司 | 面向分布式虚拟机监控器的底层通信方法 |
US8849972B2 (en) | 2008-11-25 | 2014-09-30 | Polycom, Inc. | Method and system for dispatching received sessions between a plurality of instances of an application using the same IP port |
CN101541098A (zh) | 2008-12-19 | 2009-09-23 | 中国移动通信集团浙江有限公司 | 移动通信中的协议栈仿真方法 |
CN101867558B (zh) | 2009-04-17 | 2012-11-14 | 深圳市永达电子股份有限公司 | 用户态网络协议栈系统及处理报文的方法 |
CN101931584A (zh) | 2009-06-22 | 2010-12-29 | 中兴通讯股份有限公司 | 支持同一系统中多种协议栈之间数据转发的方法和系统 |
CN101656677B (zh) | 2009-09-18 | 2011-11-16 | 杭州迪普科技有限公司 | 一种报文分流处理方法及装置 |
JP5900352B2 (ja) * | 2011-02-04 | 2016-04-06 | 日本電気株式会社 | パケット処理装置、パケット処理方法およびプログラム |
CN102523208A (zh) | 2011-12-06 | 2012-06-27 | 无锡聚云科技有限公司 | 多核架构下的应用层协议并行处理方法 |
CN104811432A (zh) * | 2014-01-29 | 2015-07-29 | 华为技术有限公司 | 基于并行协议栈实例的数据包处理方法和装置 |
-
2014
- 2014-01-29 CN CN201410043721.0A patent/CN104811431B/zh active Active
- 2014-11-19 JP JP2016549111A patent/JP6359111B2/ja active Active
- 2014-11-19 EP EP14880468.5A patent/EP3091706B1/en active Active
- 2014-11-19 WO PCT/CN2014/091614 patent/WO2015113435A1/zh active Application Filing
-
2016
- 2016-07-28 US US15/222,753 patent/US10069947B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101399692A (zh) * | 2007-09-27 | 2009-04-01 | 华为技术有限公司 | 业务迁移的方法和系统 |
CN101217464A (zh) * | 2007-12-28 | 2008-07-09 | 北京大学 | 一种udp数据包的传输方法 |
CN101227504A (zh) * | 2008-02-18 | 2008-07-23 | 华为技术有限公司 | 一种实现协议栈之间切换的方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020077502A1 (zh) * | 2018-10-15 | 2020-04-23 | Oppo广东移动通信有限公司 | 无线通信方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
JP2017509055A (ja) | 2017-03-30 |
JP6359111B2 (ja) | 2018-07-18 |
US10069947B2 (en) | 2018-09-04 |
CN104811431A (zh) | 2015-07-29 |
EP3091706B1 (en) | 2020-01-08 |
US20160337483A1 (en) | 2016-11-17 |
EP3091706A4 (en) | 2016-12-28 |
EP3091706A1 (en) | 2016-11-09 |
WO2015113435A1 (zh) | 2015-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104811431B (zh) | 基于并行协议栈实例的数据包处理方法和装置 | |
CN104205080B (zh) | 为联网设备虚拟化卸载分组处理 | |
CN104717156B (zh) | 使用网络接口卡管理软件定义网络中的数据流的方法和系统 | |
CN102497322A (zh) | 一种基于分流网卡和多核cpu实现的高速包过滤设备和方法 | |
CN103746911B (zh) | 一种sdn网络结构及其通信方法 | |
CN102904729B (zh) | 根据协议、端口分流支持多应用的智能加速网卡 | |
CN107872392A (zh) | 在网络中分配服务功能链数据和服务功能实例数据 | |
CN103428226B (zh) | 一种用户态与内核通信的方法与系统 | |
CN109547580A (zh) | 一种处理数据报文的方法和装置 | |
JP2015536603A5 (zh) | ||
CN106688277A (zh) | 在时隙化信道调频网络中的有效集中式资源和调度管理 | |
CN103338269B (zh) | 一种数据传输方法及装置 | |
CN108270813A (zh) | 一种异构多协议栈方法、装置及系统 | |
CN103873449B (zh) | 网络接入方法与系统 | |
CN110233881A (zh) | 业务请求处理方法、装置、设备及存储介质 | |
CN109088820A (zh) | 一种跨设备链路聚合方法、装置、计算装置和存储介质 | |
CN109526020A (zh) | 数据传输方法及相关产品 | |
CN106357726A (zh) | 负载均衡方法及装置 | |
CN107786669A (zh) | 一种负载均衡处理的方法、服务器、装置及存储介质 | |
CN104660597B (zh) | 三层认证方法、装置及三层认证交换机 | |
CN108306832A (zh) | 一种网络流量分流方法及装置 | |
WO2012100671A1 (zh) | 一种绑定物理网口的方法、网卡及通信系统 | |
CN110460540A (zh) | 一种低延迟高频交易系统及方法 | |
CN102752321A (zh) | 一种基于多核网络处理器的防火墙实现方法 | |
CN105591967B (zh) | 一种数据传输方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |