CN104969533B - 一种数据包处理方法和装置 - Google Patents
一种数据包处理方法和装置 Download PDFInfo
- Publication number
- CN104969533B CN104969533B CN201380002979.XA CN201380002979A CN104969533B CN 104969533 B CN104969533 B CN 104969533B CN 201380002979 A CN201380002979 A CN 201380002979A CN 104969533 B CN104969533 B CN 104969533B
- Authority
- CN
- China
- Prior art keywords
- protocol stack
- data packet
- domains
- identifier
- packet
- 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/22—Parsing or analysis of headers
-
- 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/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种数据包处理方法和装置,该可包括:获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。本发明实施例可以提高协议栈的性能,从而提高设备的性能。
Description
技术领域
本发明涉及通信领域,尤其涉及一种数据包处理方法和装置。
背景技术
网络通信技术的快速发展促使网络带宽和流量不断增大,而网络带宽和流量的增大,导致协议栈的负载也增大,这样协议栈的处理能力逐渐成为设备总体性能的瓶颈。
虽然目前多核技术和网卡多队列技术的出现,能够将网络负载分摊到多个内核上,但这些内核仍然共享一个协议栈。这样当多个内核同时获取到数据包时,这些内核都就会同时去访问协议栈的套接字(socket)链表,或者访问协议栈的传输控制协议(Transmission Control Protocol,TCP)状态机或者通过协议栈进行TCP重组或者通过协议栈进行因特网互联协议(Internet Protocol,IP)重组时,都将导致锁竞争开销、缓存(cache)失效开销、同步开销或者异步开销等额外的开销。且内核数越多时,这些额外的开销就会越多。
可见,目前协议栈的性能比较低,从而设备的性能也会比较低。
发明内容
本发明实施例提供了一种数据包处理方法和装置,可以解决目前协议栈的性能比较低,从而设备的性能也会比较低的问题。
第一方面,本发明实施例提供一种数据包处理方法,包括:
获取第一数据包,并解析所述第一数据包的包头,得到所述包头中目标协议栈(Destination Protocol Stack,DPS)域包括的第一标识;其中,所述DPS为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;
根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
在第一方面的第一种可能的实现方式中,所述第一标识为所述接收端的协议栈的标识;
所述根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包,包括:
从启动的多个协议栈中选择标识为所述第一标识的第一目标协议栈;
将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包。
结合第一方面,在第一方面的第二种可能的实现方式中,所述第一标识为所述特定标识;
所述根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包,包括:
根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并将所述第一数据包广播给启动的多个协议栈,当第一目标协议栈识别该第一目标协议栈包括所述第一数据包的服务类型的服务时,所述第一目标协议栈处理所述第一数据包;或者
根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并从预先获取的服务与协议栈的对应关系中查找第一目标协议栈,再将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述对应关系包括每个协议栈的服务信息,所述第一目标协议栈为包括所述第一数据包的服务类型的服务的协议栈。
结合第一方面或者第一方面的第一种可能的实现方式或者第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述包头还包括源协议栈(SourceProtocol Stack,SPS)域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识;
所述第一目标协议栈处理所述第一数据包之后,所述方法还包括:
向所述发送设备返回第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识。
结合第一方面或者第一方面的第一种可能的实现方式或者第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识之前,所述方法还包括:
启动多个协议栈,并为每个协议栈分配标识;
当应用程序需要使用网络时,从所述多个协议栈中选择所述第一目标协议栈为所述应用程序提供服务,其中,所述第一目标协议栈为所述应用程序提供的服务为所述第一数据包的服务类型的服务。
第二方面,本发明实施例提供一种数据包处理方法,其特征在于,包括:
通过第二目标协议栈生成第一数据包,所述第一数据包的得到所述包头包括SPS域和DPS域;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;所述SPS域为用于携带所述发送设备的协议栈的标识的域;所述DPS域包括第一标识,所述SPS域包括所述第二目标协议栈的第二标识;
向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。
在第二方面的第一种可能实现方式中,所述向所述接收设备发送所述第一数据包之后,所述方法还包括:
接收所述接收设备返回的第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识;
将所述第二数据包分配至所述第二目标协议栈,所述第二目标协议栈处理所述第二数据包。
第三方面,本发明实施例提供一种数据包处理装置,包括:获取单元和分配单元,其中:
所述获取单元,用于获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;
所述分配单元,用于根据所述第一标识将所述第一数据包分配至第一目标协议栈,通过所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
在第三方面的第一种可能的实现方式中,所述分配单元用于当所述第一标识所述第一标识为所述接收端的协议栈的标识时,从启动的多个协议栈中选择标识为所述第一标识的第一目标协议栈;以及将所述第一数据包分配至所述第一目标协议栈,通过所述第一目标协议栈处理所述第一数据包。
结合第三方面,在第三方面的第二种可能的实现方式中,所述分配单元用于当所述第一标识为所述特定标识时,根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并将所述第一数据包广播给启动的多个协议栈,当第一目标协议栈识别该第一目标协议栈包括所述第一数据包的服务类型的服务时,通过所述第一目标协议栈处理所述第一数据包;或者
所述分配单元用于当所述第一标识为所述特定标识时,根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并从预先获取的服务与协议栈的对应关系中查找第一目标协议栈,再将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述对应关系包括每个协议栈的服务信息,所述第一目标协议栈为包括所述第一数据包的服务类型的服务的协议栈。
结合第三方面或者第三方面的第一种可能的实现方式或者第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述包头还包括SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识;
所述装置还包括:
发送单元,用于向所述发送设备返回第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识。
结合第三方面或者第三方面的第一种可能的实现方式或者第三方面的第二种可能的实现方式,在第三方面的第四种可能的实现方式中,所述装置还包括:
启动单元,用于启动多个协议栈,并为每个协议栈分配标识;
选择单元,用于当应用程序需要使用网络时,从所述多个协议栈中选择所述第一目标协议栈为所述应用程序提供服务,其中,所述第一目标协议栈为所述应用程序提供的服务为所述第一数据包的服务类型的服务。
第四方面,本发明实施例提供一种数据包处理装置,包括:生成单元和发送单元,其中:
所述生成单元,用于通过第二目标协议栈生成第一数据包,所述第一数据包的得到所述包头包括SPS域和DPS域;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;所述SPS域为用于携带所述发送设备的协议栈的标识的域;所述DPS域包括第一标识,所述SPS域包括所述第二目标协议栈的第二标识;
所述发送单元,用于向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。
在第四方面的第一种可能的实现方式中,所述装置还包括:
接收单元,用于接收所述接收设备返回的第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识;
分配单元,用于将所述第二数据包分配至所述第二目标协议栈,所述第二目标协议栈处理所述第二数据包。
第五方面,本发明实施例提供一种数据包处理装置,包括:接收器和存储器,以及分别与所述接收器和存储器连接的处理器,其中,所述存储器用于存储一组程序代码,所述处理器用于调用所述存储器存储的代码执行如下操作:
通过所述接收器获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;
根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
在第五方面的第一种可能实现方式中,所述第一标识为所述接收端的协议栈的标识;
所述处理器执行的根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包的操作,包括:
从启动的多个协议栈中选择标识为所述第一标识的第一目标协议栈;
将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包。
结合第五方面,在第五方面的第二种可能实现方式中,所述第一标识为所述特定标识;
所述处理器执行的根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包的操作,包括:
根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并将所述第一数据包广播给启动的多个协议栈,当第一目标协议栈识别该第一目标协议栈包括所述第一数据包的服务类型的服务时,所述第一目标协议栈处理所述第一数据包;或者
根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并从预先获取的服务与协议栈的对应关系中查找第一目标协议栈,再将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述对应关系包括每个协议栈的服务信息,所述第一目标协议栈为包括所述第一数据包的服务类型的服务的协议栈。
结合第五方面或者第五方面的第一种可能实现方式或者第五方面的第二种可能实现方式,在第五方面的第三种可能实现方式中,所述包头还包括SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识;
所述装置还包括发射器,所述处理器在执行第一目标协议栈处理所述第一数据包的操作之后,所述处理器还用于执行如下操作:
通过所述发射器向所述发送设备返回第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识。
结合第五方面或者第五方面的第一种可能实现方式或者第五方面的第二种可能实现方式,在第五方面的第四种可能实现方式中,所述获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识之前,所述方法还包括:
启动多个协议栈,并为每个协议栈分配标识;
当应用程序需要使用网络时,从所述多个协议栈中选择所述第一目标协议栈为所述应用程序提供服务,其中,所述第一目标协议栈为所述应用程序提供的服务为所述第一数据包的服务类型的服务。
第六方面,本发明实施例提供数据包处理装置,包括:发射器和存储器,以及分别与所述发射器和存储器连接的处理器,其中,所述存储器用于存储一组程序代码,所述处理器用于调用所述存储器存储的代码执行如下操作:
通过第二目标协议栈生成第一数据包,所述第一数据包的得到所述包头包括SPS域和DPS域;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;所述SPS域为用于携带所述发送设备的协议栈的标识的域;所述DPS域包括第一标识,所述SPS域包括所述第二目标协议栈的第二标识;
通过所述发射器向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。
在第六方面的第一种可能的实现方式中,所述装置还包括接收器,其中:所述处理器在执行通过所述发射器向所述接收设备发送所述第一数据包的操作之后,还用于执行如下操作:
通过所述接收器接收所述接收设备返回的第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识;
将所述第二数据包分配至所述第二目标协议栈,所述第二目标协议栈处理所述第二数据包。
上述技术方案中,获取第一数据包后会根据第一数据包的包头中DPS域包括的第一标识将所述第一数据包分配至第一目标协议栈,这样第一目标协议栈就可以处理所述第一数据包;而其中,第一目标协议栈为启动的多个协议栈中的协议栈。这样就可以实现根据第一数据包携带的第一标识从多个协议栈中选择第一目标协议栈处理第一数据包,相比现有技术中,多个内核同时访问同一个协议栈,本发明实施例可以提高协议栈的性能,从而提高设备的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据包处理方法的流程示意图;
图2是本发明实施例提供的另一种数据包处理方法的流程示意图;
图3是本发明实施例提供的一种可选的包头示意图;
图4是本发明实施例提供的另一种数据包处理方法的流程示意图;
图5是本发明实施例提供的另一种数据包处理方法的流程示意图;
图6是本发明实施例提供的另一种数据包处理方法的流程示意图;
图7是本发明实施例提供的另一种数据包处理方法的示意图;
图8是本发明实施例提供的一种可选的场景示意图;
图9是本发明实施例提供的一种数据包处理装置的结构示意图;
图10是本发明实施例提供的另一种数据包处理装置的结构示意图;
图11是本发明实施例提供的另一种数据包处理装置的结构示意图;
图12是本发明实施例提供的另一种数据包处理装置的结构示意图;
图13是本发明实施例提供的另一种数据包处理装置的结构示意图;
图14是本发明实施例提供的另一种数据包处理装置的结构示意图;
图15是本发明实施例提供的另一种数据包处理装置的结构示意图;
图16是本发明实施例提供的另一种数据包处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1是本发明实施例提供的一种数据包处理方法的流程示意图,如图1所示,包括以下步骤:
101、获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备。
可选的,上述协议栈的标识可以是用于唯一标识协议栈。即一个协议栈唯一对应一个标识,这样通过该标识就可以查找到唯一一个协议栈。例如:协议栈的标识可以是编号,例如:启动5个协议栈,那么这5个协议栈的标识就可以分别为1、2、3、4、5。
可选的,上述接收设备与发送设备未建立协议栈对应关系可以是指,发送设备不知道接收设备上是哪个协议栈处理上述第一数据包,即发送设备未获取接收设备上处理上述第一数据包的协议栈的标识。例如,上述第一数据包为请求包时,上述接收设备与发送设备就可能未建立协议栈对应关系;或者,上述第一数据包为上述发送设备与接收设备第一次通信的第一个数据包时,上述接收设备与发送设备就可能未建立协议栈对应关系。
可选的,上述源地址可以是源IP地址,上述目的地址可以是目的IP地址。
102、根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
可选的,上述启动的多个协议栈可以是至少两个协议栈。
可选的,上述第一数据包可以是IP数据包。
可选的,上述方法具体可以是应用于服务器或者用户终端上,具体可以是服务器的服务端可以实现上述方法,或者用户终端的用户端可以实现上述方法;还可以服务器或者用户终端的内核实现上述方法;还可以服务器或者用户终端的用户态集中式网络并行协议栈实现上述方法;还可以服务器或者用户终端的lib库协议栈实现上述方法。其中。用户终端可以是平板电脑、手机、电子阅读器、遥控器、个人计算机(Personal Computer,PC)、笔记本电脑、车载设备、网络电视、可穿戴设备等具有网络功能的智能设备。
上述技术方案中,获取第一数据包后会根据第一数据包的包头中DPS域包括的第一标识将所述第一数据包分配至第一目标协议栈,这样第一目标协议栈就可以处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。这样就可以实现根据第一数据包携带的第一标识从多个协议栈中选择第一目标协议栈处理第一数据包,相比现有技术中,多个内核同时访问同一个协议栈,本发明实施例可以提高协议栈的性能,从而提高设备的性能。
请参阅图2,图2是本发明实施例提供的另一种数据包处理方法的流程示意图,如图2所示,包括以下步骤:
201、启动多个协议栈,并为每个协议栈分配标识。
可选的,步骤201可以是按照一定顺序启动多个协议栈,再为每个启动的协议栈分配标识,例如:按照启动的先后顺序分配编号。另外,由于启动多个协议栈,这样这多个协议栈就为并行协议栈,且这多个协议栈可以是独立运行的协议栈。
202、当应用程序需要使用网络时,从所述多个协议栈中选择所述第一目标协议栈为所述应用程序提供服务,其中,所述第一目标协议栈为所述应用程序提供的服务为所述第一数据包的服务类型的服务。
可选的,上述应用程序需要使用网络可以是指应用程序的进程或者线程需要使用网络。上述第一目标协议栈为所述应用程序提供服务可以是,第一目标协议栈为应用程序的进程或者线程提供服务。其中,上述服务可以是网络服务,例如:上述服务对于TCP/IP协议簇来说就是所有的TCP/IP服务;该上述服务器还可以非TCP/IP协议簇的网络服务等,本实施例对此不作限定。另外,步骤202仅是介绍了第一目标协议栈为上述应用程序提供服务的实现方式,在本实施例中还可以实现为启动的其它协议栈为其它应用程序提供服务,当然,不同的协议栈提供的服务可以是不同的。
可选的,上述从所述多个协议栈中选择所述第一目标协议栈为所述应用程序提供服务,可以包括:
应用程序申请协议栈;
按特定原则为所述应用程序分配上述第一目标协议栈;
应用程序向所述第一目标协议栈发送建立服务请求;
第一目标协议栈建立服务。
可选的,当应用程序需要传输层协议进行网络服务,应用程序还可以进行端口申请,如果应用程序用的是网络层或者数据链路层的协议时,就可以不需要端口申请。
可选的,本实施例中,还可以通过一个专门用于管理协议栈的协议栈管理模块管理启动的协议栈。其中,该协议栈管理模块可以是一个虚拟的模块。这样应用程序需要使用网络时,就可以向该协议栈管理模块进行端口申请和协议栈申请,该协议栈管理模块就可以为该应用程序分配端口和第一目标协议栈,再将分配结果通知给应用程序,这样应用程序就可以向第一目标协议栈发送建立服务请求。另外,上述按特定原则为所述应用程序分配上述第一目标协议栈,可以包括:
判断上述应用程序是否绑定协议栈;
若上述应用程序绑定了协议栈时,当上述应用程序只绑定一个协议栈时,将该应用程序绑定的协议栈为作为上述第一目标协议栈;当上述应用程序绑定了多个协议栈时,从该应用程序绑定的协议栈中选择一个协议栈作为上述第一目标协议栈;
若上述应用程序未绑定协议栈时,从启动的多个协议栈中选择一个协议栈作为上述第一目标协议栈。
可选的,上述从该应用程序绑定的协议栈中选择一个协议栈作为上述第一目标协议栈可以是,从该应用程序绑定的协议栈中选择负载最轻的协议栈作为上述第一目标协议,或者可以按照其他的分配方式来分配协议栈,比如轮询方式:第一次分配为应用程序分配绑定的多个协议栈中的第一协议栈,第二次分配为应用程序分配绑定的多个协议栈中的第二协议栈等,对此本实施例不作限定。同理,从启动的多个协议栈中选择一个协议栈作为上述第一目标协议栈可以是,从启动的多个协议栈中选择负载最轻的协议栈作为上述第一目标协议栈,或者可以按照其他的分配方式来分配协议栈。
其中,上述应用程序可以是指应用程序的进程或者线程。
可选的,本实施例中,还可以对启动的多个协议栈进行管理,例如:当网络负载增大时,当前启动的多个协议栈处理不过来时,可以加载新的协议栈。例如:当网络负载减小时,可以将启动的多个协议栈中存在需要卸载的协议栈时,卸载该协议栈,或者迁移该协议栈的连接信息,再卸载该协议栈;其中,该需要卸载的协议栈是指当前没有任何连接或者没有任何负载的协议栈,上述连接信息可以包括:TCP连接信息、TCP服务信息和/或用户数据报协议(User Datagram Protocol,UDP)服务信息,对此本实施例不作限定,例如:连接信息还可以包括:IP服务信息、文件传输协议(File Transfer Protocol,FTP)服务信息、安全壳协议(Secure Shell,SSH)服务信息等,总的来说:连接信息就可以指所有的网络服务信息。另外,TCP连接信息主要可以指:每个连接的状态机信息、源IP地址、源端口号、目的IP地址、目的端口号、目的协议栈信息。TCP服务信息和UDP服务信息主要可以是指:目的IP、目的端口号、目的协议栈信息等。例如:将协议栈1的连接信息迁移至协议栈2,再卸载协议栈1,这样协议栈2就可以处理协议栈1上的连接,即协议栈2就可以处理协议栈1上的负载。例如:当某一个协议栈因错误导致异常时,还可以重新加载该协议栈。另外,本实施例可以建立一个协议栈管理模块管理协议栈。
203、获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备。
可选的,上述第一数据包可以是上述应用程序处理的数据包,例如:上述第一数据包的服务类型为上述第一目标协议栈为所述应用程序提供服务的类型。
可选的,上述包头还可以包括SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域可以是包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识。这样通过该SPS域就可以知道发送设备中第二目标协议栈的标识,这样在往发送设备返回数据包时,就可以在数据包的DPS域中携带该第二目标协议栈的标识。
可选的,第一数据包的包头可以为如图3所示包头,该包头可以包括:版本域、头长域、服务类型域、总长域、重组标识域、标志域、段偏移量域、生存时间域、协议代码域、头检验和域、源IP地址域、目的IP地址域、SPS域、DPS域、可选数据域和用户数据域。另外,本实施例中对SPS域和DPS域的长度不限的位置可以不作限定。
204、根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
可选的,当上述第一标识为所述接收端的协议栈的标识时,步骤204,可以包括:
从启动的多个协议栈中选择标识为所述第一标识的第一目标协议栈;
将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包。
该实施方式,可以根据实现DPS域中第一标识查找到上述第一目标协议栈,再将第一数据包分配至第一目标协议栈处理,这样可以第一目标协议栈独立处理第一数据包,以实现第一目标协议栈完全独立,即第一目标协议栈与其它协议栈没有任何协议连接信息。
可选的,当上述第一标识为所述特定标识时,步骤204可以包括:
根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并将所述第一数据包广播给启动的多个协议栈,当第一目标协议栈识别该第一目标协议栈包括所述第一数据包的服务类型的服务时,所述第一目标协议栈处理所述第一数据包。
该实施方式中由于第一数据包的服务类型是固定的,而上述第一目标协议栈提供的服务类型也是固定的。这样当第一目标协议栈获取到上述第一数据包后,就可以检测第一数据包的服务类型,当第一目标协议栈包括所述第一数据包的服务类型的服务时,第一目标协议栈处理所述第一数据包。而其它协议栈不包括第一数据包的服务类型的服务,这样这些其它协议栈就可以丢弃第一数据包。
可选的,当上述第一标识为所述特定标识时,步骤204可以包括:
根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并从预先获取的服务与协议栈的对应关系中查找第一目标协议栈,再将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述对应关系包括每个协议栈的服务信息,所述第一目标协议栈为包括所述第一数据包的服务类型的服务的协议栈。
可选的,在步骤204之前,所述方法可以生成上述服务与协议栈的对应关系,该对应关系包括每个协议栈的服务信息,即该对应关系表明每个协议栈的服务。可以是在每个协议为应用程序建立服务时生成的上述对应关系。例如:每个协议栈都可以通过步骤202的实现方式为不同的应用程序提供服务,这样就可以生成上述对应关系。另外,该对应关系具体可以是服务与协议栈的信息表。
可选的,所述包头还可以包括SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识;如图4所示,在步骤204之前,所述方法还可以包括:
205、向所述发送设备返回第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识。
这样当发送设备接收到上述第二数据包时,就可以是根据第二数据包的DPS域包括的第二标识,直接将第二数据包分配至第二目标协议栈,由第二目标协议栈处理第二数据包。
可选的,上述第一数据包可以是分片后的数据包,即第一数据包为某一数据包中的一部分。但是分片后的数据包的包头中的DPS域、SPS域和服务类型是一致的,这样通过上述步骤就可以实现将同一个数据包分片得到的多个数据包分配至同一个协议栈处理。因为同一个数据包分片得到的多个数据包的包头中的DPS域、SPS域和服务类型都是相同的,这样通过上述步骤就一定会分配至同一个协议栈。另外,可以采取将同一个数据流的分片数据包聚合到一个缓存区中,待所有分片数据包都到达缓存区再合成一个完整数据包后再分配至第一目标协议栈处理,以减少第一目标协议栈的开销。
可选的,上述方法具体可以是应用于服务器或者用户终端上,具体可以是服务器的服务端可以实现上述方法,或者用户终端的用户端可以实现上述方法;还可以服务器或者用户终端的内核实现上述方法;还可以服务器或者用户终端的用户态集中式网络并行协议栈实现上述方法;还可以服务器或者用户终端的lib库协议栈实现上述方法。其中。用户终端可以是平板电脑、手机、电子阅读器、遥控器、PC、笔记本电脑、车载设备、网络电视、可穿戴设备等具有网络功能的智能设备。
上述技术方案中,在第一个实施例的基本上增加了多种可选的实施方式,且都可以实现提高协议栈的性能,从而提高设备的性能。
请参阅图5,图5是本发明实施例提供的另一种数据包处理方法的流程示意图,如图5所示,包括以下步骤:
501、通过第二目标协议栈生成第一数据包,所述第一数据包的得到所述包头包括SPS域和DPS域;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;所述SPS域为用于携带所述发送设备的协议栈的标识的域;所述DPS域包括第一标识,所述SPS域包括所述第二目标协议栈的第二标识。
可选的,上述第一数据包可以是某个应用程序需要向接收设备发送的数据包,例如:当某一应用程序需要与接收设备建立通信时,就可以为该应用程序分配上述第二目标协议栈;其中,为该应用程序分配上述第二目标协议栈可以是按特定原则为该应用程序分配上述第二目标协议栈。上述按特定原则为该应用程序分配上述第二目标协议栈,可以包括:
判断该应用程序是否绑定协议栈;
若该应用程序绑定了协议栈时,当上述应用程序只绑定一个协议栈时,将该应用程序绑定的协议栈为作为上述第二目标协议栈;当上述应用程序绑定了多个协议栈时,将该应用程序绑定的协议栈中负载最轻的协议栈作为上述第二目标协议栈;
若该应用程序未绑定协议栈时,将启动的多个协议栈中负载最轻的协议栈作为上述第二目标协议栈。
其中,上述应用程序可以是指应用程序的进程或者线程。
可选的,上述源地址可以是源IP地址,上述目的地址可以是目的IP地址。
502、向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。
可选的,接收设备接收到上述第一数据包后,就可以解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;再根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包栈。
可选的,如图6所示,在步骤502之后,所述方法还可以包括:
503、接收所述接收设备返回的第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识;
504、将所述第二数据包分配至所述第二目标协议栈,所述第二目标协议栈处理所述第二数据包。
由于上述第二数据包的DPS域包括上述第二标识,这样步骤504就可以直接将第二数据包分配至第二目标协议栈,由第二目标协议栈处理第二数据包。
可选的,上述方法具体可以是应用于服务器或者用户终端上,具体可以是服务器的服务端可以实现上述方法,或者用户终端的用户端可以实现上述方法;还可以服务器或者用户终端的内核实现上述方法;还可以服务器或者用户终端的用户态集中式网络并行协议栈实现上述方法;还可以服务器或者用户终端的lib库协议栈实现上述方法。其中。用户终端可以是平板电脑、手机、电子阅读器、遥控器、PC、笔记本电脑、车载设备、网络电视、可穿戴设备等具有网络功能的智能设备。
上述技术方案中,通过第二目标协议栈生成第一数据包,所述第一数据包的得到所述包头包括SPS域和DPS域;向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。这样就可以实现根据第一数据包携带的第一标识从多个协议栈中选择第一目标协议栈处理第一数据包,相比现有技术中,多个内核同时访问同一个协议栈,本发明实施例可以提高协议栈的性能,从而提高设备的性能。
请参阅图7和图8,图7是本发明实施例提供的另一种数据包处理方法的示意图,图8是本发明实施例提供的一种可选的场景示意图;其中,该实施例以IP为192.168.1.1的服务器的提供TCP80服务(例如:网页服务使用TCP的80端口),IP为192.168.1.2的用户终端请求服务进行举例说明。如图7所示,该实施例可以包括如下步骤:
701、服务器的服务端进程或者线程申请80端口,再向协议栈管理模块申请协议栈(这可以是以消息的形式发送,也可以是系统提供给应用程序的API接口);
702、服务器的协议栈管理模块按照规则从协议栈#1和协议栈#2中按照负载均衡规则选择协议栈#1,并将选择结果反馈给服务端进程或线程;
703、服务器的服务端进程或者线程将服务建立请求发送给协议栈#1,要求建立TCP80服务;
704、服务器的协议栈#1创建TCP80服务,该服务当前处于待连接状态(即侦听状态,表示服务端准备就绪,等待客户端的连接请求),并将创建结果返回给服务端进程或线程;
705、用户终端的客户端进程需要tcp80服务时,该进程向协议栈管理模块申请协议栈;
706、用户终端的协议栈管理模块按照规则从当前合法的协议栈中(该系统目前只加载了一个协议栈)中按照负载均衡规则选择协议栈#1,并将选择结果反馈给客户端进程或线程;
707、用户终端的客户端进程或线程将连接请求(连接IP地址为192.168.1.1的TCP80服务)传给协议栈#1;
708、用户终端的协议栈#1首先获得一个空闲TCP端口(比如TCP8888端口),然后构造连接请求的IP数据包通过网卡发送给IP地址为192.168.1.1的服务器;其中,连接请求的IP数据包头的关键部分为:源IP地址192.168.1.2,目的IP地址192.168.1.1;SP域为1,DPS域为0,DPS域为0可以等于上面实施例介绍的特定标识;SP域为1,DPS域为0是因为此时用户终端的协议栈已经知道是协议栈#1了,所以SPS为1,但是目的IP地址端的协议栈尚不知道,所以DPS为0;连接请求的TCP数据包头的关键部分为:源端口8888,目的端口80;
709、服务器接收到该IP数据包,DPS分发模块从缓冲队列中获取该IP数据包;
7010、服务器的DPS分发模块通过解析发现,该IP数据包IP头的DP值为0,DPS分发模块将该IP数据广播给协议栈#1和协议栈#2;
7011、服务器的协议栈#1收到该IP数据包后,发现该IP数据包为TCP80服务的连接请求,故发送一个连接请求回复数据包给用户终端;其中,连接请求回复数据包关键部分为:源IP地址192.168.1.1,目的IP地址192.168.1.2;SPS1,DP S1;至此两端协议栈关联关系已经建立,此时该连接的IP数据包就直接走这两个关联的协议栈。由于协议栈#2中没有TCP80服务,故协议栈#2将丢弃该IP数据包。
在图8所示的示意图中,表示了该实施例中每个步骤的数据走向示意,另外,本实施例中,DPS分发模块、协议栈管理模块和协议栈都可以是由硬件,或者软件实现的,对此本实施例不作限定;例如:上述DPS分发模块可以是由网卡中硬件实现,也可以通过软件实现。
下面为本发明装置实施例,本发明装置实施例用于执行本发明方法实施例一至四实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例一、实施例二、实施例三和实施例四。
请参阅图9,图9是本发明实施例提供的一种数据包处理装置的结构示意图,如图9所示,包括:获取单元91和分配单元92,其中:
获取单元91,用于获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备。
可选的,上述协议栈的标识可以是用于唯一标识协议栈。即一个协议栈唯一对应一个标识,这样通过该标识就可以查找到唯一一个协议栈。例如:协议栈的标识可以是编号,例如:启动5个协议栈,那么这5个协议栈的标识就可以分别为1、2、3、4、5。
可选的,上述接收设备与发送设备未建立协议栈对应关系可以是指,发送设备不知道接收设备上是哪个协议栈处理上述第一数据包,即发送设备未获取接收设备上处理上述第一数据包的协议栈的标识。例如,上述第一数据包为请求包时,上述接收设备与发送设备就可能未建立协议栈对应关系;或者,上述第一数据包为上述发送设备与接收设备第一次通信的第一个数据包时,上述接收设备与发送设备就可能未建立协议栈对应关系。
可选的,上述源地址可以是源IP地址,上述目的地址可以是目的IP地址。
分配单元92,用于根据所述第一标识将所述第一数据包分配至第一目标协议栈,通过所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
可选的,上述启动的多个协议栈可以是至少两个协议栈。
可选的,上述第一数据包可以是IP数据包。
可选的,上述装置具体可以是应用于服务器或者用户终端上,具体可以是服务器的服务端可以实现上述装置,或者用户终端的用户端可以实现上述装置;还可以服务器或者用户终端的内核实现上述装置;还可以服务器或者用户终端的用户态集中式网络并行协议栈实现上述装置;还可以服务器或者用户终端的lib库协议栈实现上述装置。其中。用户终端可以是平板电脑、手机、电子阅读器、遥控器、PC、笔记本电脑、车载设备、网络电视、可穿戴设备等具有网络功能的智能设备。
上述技术方案中,获取第一数据包后会根据第一数据包的包头中DPS域包括的第一标识将所述第一数据包分配至第一目标协议栈,这样第一目标协议栈就可以处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。这样就可以实现根据第一数据包携带的第一标识从多个协议栈中选择第一目标协议栈处理第一数据包,相比现有技术中,多个内核同时访问同一个协议栈,本发明实施例可以提高协议栈的性能,从而提高设备的性能。
请参阅图10,图10是本发明实施例提供的另一种数据包处理装置的结构示意图,如图10所示,包括:启动单元101、选择单元102、获取单元103和分配单元104,其中:
启动单元101,用于启动多个协议栈,并为每个协议栈分配标识。
可选的,启动单元101可以是按照一定顺序启动多个协议栈,再为每个启动的协议栈分配标识,例如:按照启动的先后顺序分配编号。另外,由于启动多个协议栈,这样这多个协议栈就为并行协议栈,且这多个协议栈可以是独立运行的协议栈。
选择单元102,用于当应用程序需要使用网络时,从所述多个协议栈中选择所述第一目标协议栈为所述应用程序提供服务,其中,所述第一目标协议栈为所述应用程序提供的服务为所述第一数据包的服务类型的服务。
可选的,上述应用程序需要使用网络可以是指应用程序的进程或者线程需要使用网络。上述第一目标协议栈为所述应用程序提供服务可以是,第一目标协议栈为应用程序的进程或者线程提供服务。其中,上述服务可以是网络服务,例如:上述服务对于TCP/IP协议簇来说就是所有的TCP/IP服务;该上述服务器还可以非TCP/IP协议簇的网络服务等,本实施例对此不作限定。另外,选择单元102仅是介绍了第一目标协议栈为上述应用程序提供服务的实现方式,在本实施例中还可以实现为启动的其它协议栈为其它应用程序提供服务,当然,不同的协议栈提供的服务可以是不同的。
可选的,选择单元102可以用于控制应用程序向进行协议栈申请;并按特定原则为所述应用程序分配上述第一目标协议栈;以及控制应用程序向所述第一目标协议栈发送建立服务请求;以及控制第一目标协议栈建立服务。
可选的,本实施例中,还可以通过一个专门用于管理协议栈的协议栈管理模块管理启动的协议栈。其中,该协议栈管理模块可以是一个虚拟的模块。这样应用程序需要使用网络时,就可以向该协议栈管理模块进行端口申请和协议栈申请,该协议栈管理模块就可以为该应用程序分配端口和第一目标协议栈,再将分配结果通知给应用程序,这样应用程序就可以向第一目标协议栈发送建立服务请求。另外,选择单元102可以用于判断上述应用程序是否绑定协议栈;若上述应用程序绑定了协议栈时,当上述应用程序只绑定一个协议栈时,将该应用程序绑定的协议栈为作为上述第一目标协议栈;当上述应用程序绑定了多个协议栈时,从该应用程序绑定的协议栈中选择一个协议栈作为上述第一目标协议栈;
选择单元102还可以用于若上述应用程序未绑定协议栈时,从启动的多个协议栈中选择一个协议栈作为上述第一目标协议栈。
其中,上述应用程序可以是指应用程序的进程或者线程。
可选的,本实施例中,还可以对启动的多个协议栈进行管理,例如:当网络负载增大时,当前启动的多个协议栈处理不过来时,可以加载新的协议栈。例如:当网络负载减小时,可以将启动的多个协议栈中存在需要卸载的协议栈时,卸载该协议栈,或者迁移该协议栈的连接信息,再卸载该协议栈;其中,该需要卸载的协议栈是指当前没有任何连接或者没有任何负载的协议栈,上述连接信息可以包括:TCP连接信息、TCP服务信息和/或UDP服务信息,对此本实施例不作限定,例如:连接信息还可以包括:IP服务信息、FTP服务信息、SSH服务信息等,总的来说:连接信息就可以指所有的网络服务信息。另外,TCP连接信息主要可以指:每个连接的状态机信息、源IP地址、源端口号、目的IP地址、目的端口号、目的协议栈信息。TCP服务信息和UDP服务信息主要可以是指:目的IP、目的端口号、目的协议栈信息等。例如:将协议栈1的连接信息迁移至协议栈2,再卸载协议栈1,这样协议栈2就可以处理协议栈1上的连接,即协议栈2就可以处理协议栈1上的负载。例如:当某一个协议栈因错误导致异常时,还可以重新加载该协议栈。另外,本实施例可以建立一个协议栈管理模块管理协议栈。
获取单元103,用于获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备。
可选的,上述第一数据包可以是上述应用程序处理的数据包,例如:上述第一数据包的服务类型为上述第一目标协议栈为所述应用程序提供服务的类型。
可选的,上述包头还可以包括SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域可以是包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识。这样通过该SPS域就可以知道发送设备中第二目标协议栈的标识,这样在往发送设备返回数据包时,就可以在数据包的DPS域中携带该第二目标协议栈的标识。
可选的,第一数据包的包头可以为如图3所示包头,该包头可以包括:版本域、头长域、服务类型域、总长域、重组标识域、标志域、段偏移量域、生存时间域、协议代码域、头检验和域、源IP地址域、目的IP地址域、SPS域、DPS域、可选数据域和用户数据域。另外,本实施例中对SPS域和DPS域的长度不限的位置可以不作限定。
分配单元104,用于根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
可选的,分配单元104可以用于当所述第一标识所述第一标识为所述接收端的协议栈的标识时,从启动的多个协议栈中选择标识为所述第一标识的第一目标协议栈;以及将所述第一数据包分配至所述第一目标协议栈,通过所述第一目标协议栈处理所述第一数据包。
该实施方式,可以根据实现DPS域中第一标识查找到上述第一目标协议栈,再将第一数据包分配至第一目标协议栈处理,这样可以第一目标协议栈独立处理第一数据包,以实现第一目标协议栈完全独立,即第一目标协议栈与其它协议栈没有任何协议连接信息。
可选的,分配单元104可以用于当所述第一标识为所述特定标识时,根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并将所述第一数据包广播给启动的多个协议栈,当第一目标协议栈识别该第一目标协议栈包括所述第一数据包的服务类型的服务时,通过所述第一目标协议栈处理所述第一数据包。
该实施方式中由于第一数据包的服务类型是固定的,而上述第一目标协议栈提供的服务类型也是固定的。这样当第一目标协议栈获取到上述第一数据包后,就可以检测第一数据包的服务类型,当第一目标协议栈包括所述第一数据包的服务类型的服务时,第一目标协议栈处理所述第一数据包。而其它协议栈不包括第一数据包的服务类型的服务,这样这些其它协议栈就可以丢弃第一数据包。
可选的,分配单元104可以用于当所述第一标识为所述特定标识时,根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并从预先获取的服务与协议栈的对应关系中查找第一目标协议栈,再将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述对应关系包括每个协议栈的服务信息,所述第一目标协议栈为包括所述第一数据包的服务类型的服务的协议栈。
可选的,所述装置可以生成上述服务与协议栈的对应关系,该对应关系包括每个协议栈的服务信息,即该对应关系表明每个协议栈的服务。可以是在每个协议为应用程序建立服务时生成的上述对应关系。例如:每个协议栈都可以通过选择单元102实现为不同的应用程序提供服务,这样就可以生成上述对应关系。另外,该对应关系具体可以是服务与协议栈的信息表。
可选的,所述包头还可以包括SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识;如图11所示,所述装置还可以包括:
发送单元105,用于向所述发送设备返回第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识。
这样当发送设备接收到上述第二数据包时,就可以是根据第二数据包的DPS域包括的第二标识,直接将第二数据包分配至第二目标协议栈,由第二目标协议栈处理第二数据包。
可选的,上述第一数据包可以是分片后的数据包,即第一数据包为某一数据包中的一部分。但是分片后的数据包的包头中的DPS域、SPS域和服务类型是一致的,这样通过上述装置就可以实现将同一个数据包分片得到的多个数据包分配至同一个协议栈处理。因为同一个数据包分片得到的多个数据包的包头中的DPS域、SPS域和服务类型都是相同的,这样通过上述步骤就一定会分配至同一个协议栈。另外,可以采取将同一个数据流的分片数据包聚合到一个缓存区中,待所有分片数据包都到达缓存区再合成一个完整数据包后再分配至第一目标协议栈处理,以减少第一目标协议栈的开销。
可选的,上述装置具体可以是应用于服务器或者用户终端上,具体可以是服务器的服务端可以实现上述装置,或者用户终端的用户端可以实现上述装置;还可以服务器或者用户终端的内核实现上述装置;还可以服务器或者用户终端的用户态集中式网络并行协议栈实现上述装置;还可以服务器或者用户终端的lib库协议栈实现上述装置。其中。用户终端可以是平板电脑、手机、电子阅读器、遥控器、PC、笔记本电脑、车载设备、网络电视、可穿戴设备等具有网络功能的智能设备。
上述技术方案中,在第一个装置实施例的基本上增加了多种可选的实施方式,且都可以实现提高协议栈的性能,从而提高设备的性能。
请参阅图12,图12是本发明实施例提供的另一种数据包处理装置的结构示意图,如图12所示,包括:生成单元121和发送单元122,其中:
生成单元12,用于通过第二目标协议栈生成第一数据包,所述第一数据包的得到所述包头包括SPS域和DPS域;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;所述SPS域为用于携带所述发送设备的协议栈的标识的域;所述DPS域包括第一标识,所述SPS域包括所述第二目标协议栈的第二标识。
可选的,上述第一数据包可以是某个应用程序需要向接收设备发送的数据包,例如:当某一应用程序需要与接收设备建立通信时,生成单元12就可以为该应用程序分配上述第二目标协议栈;其中,生成单元12为该应用程序分配上述第二目标协议栈可以是按特定原则为该应用程序分配上述第二目标协议栈。例如:生成单元12还可以用于判断该应用程序是否绑定协议栈;若该应用程序绑定了协议栈时,当上述应用程序只绑定一个协议栈时,将该应用程序绑定的协议栈为作为上述第二目标协议栈;当上述应用程序绑定了多个协议栈时,将该应用程序绑定的协议栈中负载最轻的协议栈作为上述第二目标协议栈;
生成单元12还可以用于若该应用程序未绑定协议栈时,将启动的多个协议栈中负载最轻的协议栈作为上述第二目标协议栈。
其中,上述应用程序可以是指应用程序的进程或者线程。
可选的,上述源地址可以是源IP地址,上述目的地址可以是目的IP地址。
发送单元122,用于向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。
可选的,接收设备接收到上述第一数据包后,就可以解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;再根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包栈。
可选的,如图13所示,所述装置还可以包括:
接收单元123,用于接收所述接收设备返回的第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识;
分配单元124,用于将所述第二数据包分配至所述第二目标协议栈,所述第二目标协议栈处理所述第二数据包。
由于上述第二数据包的DPS域包括上述第二标识,这样分配单元124就可以直接将第二数据包分配至第二目标协议栈,由第二目标协议栈处理第二数据包。
可选的,上述装置具体可以是应用于服务器或者用户终端上,具体可以是服务器的服务端可以实现上述装置,或者用户终端的用户端可以实现上述装置;还可以服务器或者用户终端的内核实现上述装置;还可以服务器或者用户终端的用户态集中式网络并行协议栈实现上述装置;还可以服务器或者用户终端的lib库协议栈实现上述装置。其中。用户终端可以是平板电脑、手机、电子阅读器、遥控器、PC、笔记本电脑、车载设备、网络电视、可穿戴设备等具有网络功能的智能设备。
上述技术方案中,通过第二目标协议栈生成第一数据包,所述第一数据包的得到所述包头包括SPS域和DPS域;向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。这样就可以实现根据第一数据包携带的第一标识从多个协议栈中选择第一目标协议栈处理第一数据包,相比现有技术中,多个内核同时访问同一个协议栈,本发明实施例可以提高协议栈的性能,从而提高设备的性能。
请参阅图14,图14是本发明实施例提供的另一种数据包处理装置的结构示意图,如图14所示,包括:接收器141和存储器142,以及分别与所述接收器141和存储器142连接的处理器143,其中,所述存储器142用于存储一组程序代码,所述处理器143用于调用所述存储器142存储的代码执行如下操作:
通过所述接收器141获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;
根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
可选的,上述协议栈的标识可以是用于唯一标识协议栈。即一个协议栈唯一对应一个标识,这样通过该标识就可以查找到唯一一个协议栈。例如:协议栈的标识可以是编号,例如:启动5个协议栈,那么这5个协议栈的标识就可以分别为1、2、3、4、5。
可选的,上述接收设备与发送设备未建立协议栈对应关系可以是指,发送设备不知道接收设备上是哪个协议栈处理上述第一数据包,即发送设备未获取接收设备上处理上述第一数据包的协议栈的标识。例如,上述第一数据包为请求包时,上述接收设备与发送设备就可能未建立协议栈对应关系;或者,上述第一数据包为上述发送设备与接收设备第一次通信的第一个数据包时,上述接收设备与发送设备就可能未建立协议栈对应关系。
可选的,上述源地址可以是源IP地址,上述目的地址可以是目的IP地址。
可选的,上述启动的多个协议栈可以是至少两个协议栈。
可选的,上述第一数据包可以是IP数据包。
可选的,上述装置具体可以是应用于服务器或者用户终端上,具体可以是服务器的服务端可以实现上述装置,或者用户终端的用户端可以实现上述方法;还可以服务器或者用户终端的内核实现上述方法;还可以服务器或者用户终端的用户态集中式网络并行协议栈实现上述方法;还可以服务器或者用户终端的lib库协议栈实现上述方法。其中。用户终端可以是平板电脑、手机、电子阅读器、遥控器、个人计算机(Personal Computer,PC)、笔记本电脑、车载设备、网络电视、可穿戴设备等具有网络功能的智能设备。
上述技术方案中,获取第一数据包后会根据第一数据包的包头中DPS域包括的第一标识将所述第一数据包分配至第一目标协议栈,这样第一目标协议栈就可以处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。这样就可以实现根据第一数据包携带的第一标识从多个协议栈中选择第一目标协议栈处理第一数据包,相比现有技术中,多个内核同时访问同一个协议栈,本发明实施例可以提高协议栈的性能,从而提高设备的性能。
请参阅图15,图15是本发明实施例提供的另一种数据包处理装置的结构示意图,如图15所示,包括:接收器151和存储器152,以及分别与所述接收器151和存储器152连接的处理器153,其中,所述存储器152用于存储一组程序代码,所述处理器153用于调用所述存储器152存储的代码执行如下操作:
启动多个协议栈,并为每个协议栈分配标识;
当应用程序需要使用网络时,从所述多个协议栈中选择所述第一目标协议栈为所述应用程序提供服务,其中,所述第一目标协议栈为所述应用程序提供的服务为所述第一数据包的服务类型的服务;
通过所述接收器151获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;
根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
可选的,处理器153可以是按照一定顺序启动多个协议栈,再为每个启动的协议栈分配标识,例如:按照启动的先后顺序分配编号。另外,由于启动多个协议栈,这样这多个协议栈就为并行协议栈,且这多个协议栈可以是独立运行的协议栈。
可选的,上述应用程序需要使用网络可以是指应用程序的进程或者线程需要使用网络。上述第一目标协议栈为所述应用程序提供服务可以是,第一目标协议栈为应用程序的进程或者线程提供服务。其中,上述服务可以是网络服务,例如:上述服务对于TCP/IP协议簇来说就是所有的TCP/IP服务;该上述服务器还可以非TCP/IP协议簇的网络服务等,本实施例对此不作限定。另外,上述仅是介绍了第一目标协议栈为上述应用程序提供服务的实现方式,在本实施例中还可以处理器153实现为启动的其它协议栈为其它应用程序提供服务,当然,不同的协议栈提供的服务可以是不同的。
可选的,处理器153执行的从所述多个协议栈中选择所述第一目标协议栈为所述应用程序提供服务的操作,可以包括:
应用程序申请协议栈;
按特定原则为所述应用程序分配上述第一目标协议栈;
应用程序向所述第一目标协议栈发送建立服务请求;
第一目标协议栈建立服务。
可选的,当应用程序需要传输层协议进行网络服务,应用程序还可以进行端口申请,如果应用程序用的是网络层或者数据链路层的协议时,就可以不需要端口申请。
可选的,本实施例中,处理器153还可以通过一个专门用于管理协议栈的协议栈管理模块管理启动的协议栈。其中,该协议栈管理模块可以是一个虚拟的模块。这样应用程序需要使用网络时,就可以向该协议栈管理模块进行端口申请和协议栈申请,该协议栈管理模块就可以为该应用程序分配端口和第一目标协议栈,再将分配结果通知给应用程序,这样应用程序就可以向第一目标协议栈发送建立服务请求。另外,处理器153执行的按特定原则为所述应用程序分配上述第一目标协议栈的操作,可以包括:
判断上述应用程序是否绑定协议栈;
若上述应用程序绑定了协议栈时,当上述应用程序只绑定一个协议栈时,将该应用程序绑定的协议栈为作为上述第一目标协议栈;当上述应用程序绑定了多个协议栈时,从该应用程序绑定的协议栈中选择一个协议栈作为上述第一目标协议栈;
若上述应用程序未绑定协议栈时,从启动的多个协议栈中选择一个协议栈作为上述第一目标协议栈。
其中,上述应用程序可以是指应用程序的进程或者线程。
可选的,本实施例中,处理器153还可以对启动的多个协议栈进行管理,例如:当网络负载增大时,当前启动的多个协议栈处理不过来时,可以加载新的协议栈。例如:当网络负载减小时,可以将启动的多个协议栈中存在需要卸载的协议栈时,卸载该协议栈,或者迁移该协议栈的连接信息,再卸载该协议栈;其中,该需要卸载的协议栈是指当前没有任何连接或者没有任何负载的协议栈,上述连接信息可以包括:TCP连接信息、TCP服务信息和/或UDP服务信息,对此本实施例不作限定,例如:连接信息还可以包括:IP服务信息、FTP服务信息、SSH服务信息等,总的来说:连接信息就可以指所有的网络服务信息。另外,TCP连接信息主要可以指:每个连接的状态机信息、源IP地址、源端口号、目的IP地址、目的端口号、目的协议栈信息。TCP服务信息和UDP服务信息主要可以是指:目的IP、目的端口号、目的协议栈信息等。例如:将协议栈1的连接信息迁移至协议栈2,再卸载协议栈1,这样协议栈2就可以处理协议栈1上的连接,即协议栈2就可以处理协议栈1上的负载。例如:当某一个协议栈因错误导致异常时,还可以重新加载该协议栈。另外,本实施例可以建立一个协议栈管理模块管理协议栈。
可选的,上述第一数据包可以是上述应用程序处理的数据包,例如:上述第一数据包的服务类型为上述第一目标协议栈为所述应用程序提供服务的类型。
可选的,上述包头还可以包括SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域可以是包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识。这样通过该SPS域就可以知道发送设备中第二目标协议栈的标识,这样在往发送设备返回数据包时,就可以在数据包的DPS域中携带该第二目标协议栈的标识。
可选的,第一数据包的包头可以为如图3所示包头,该包头可以包括:版本域、头长域、服务类型域、总长域、重组标识域、标志域、段偏移量域、生存时间域、协议代码域、头检验和域、源IP地址域、目的IP地址域、SPS域、DPS域、可选数据域和用户数据域。另外,本实施例中对SPS域和DPS域的长度不限的位置可以不作限定。
可选的,所述第一标识为所述接收端的协议栈的标识;处理器153执行的根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包的操作,可以包括:
从启动的多个协议栈中选择标识为所述第一标识的第一目标协议栈;
将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包。
该实施方式,可以根据实现DPS域中第一标识查找到上述第一目标协议栈,再将第一数据包分配至第一目标协议栈处理,这样可以第一目标协议栈独立处理第一数据包,以实现第一目标协议栈完全独立,即第一目标协议栈与其它协议栈没有任何协议连接信息。
可选的,所述第一标识为所述特定标识;处理器153执行的根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包的操作可以,包括:
根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并将所述第一数据包广播给启动的多个协议栈,当第一目标协议栈识别该第一目标协议栈包括所述第一数据包的服务类型的服务时,所述第一目标协议栈处理所述第一数据包。
该实施方式中由于第一数据包的服务类型是固定的,而上述第一目标协议栈提供的服务类型也是固定的。这样当第一目标协议栈获取到上述第一数据包后,就可以检测第一数据包的服务类型,当第一目标协议栈包括所述第一数据包的服务类型的服务时,第一目标协议栈处理所述第一数据包。而其它协议栈不包括第一数据包的服务类型的服务,这样这些其它协议栈就可以丢弃第一数据包。
可选的,所述第一标识为所述特定标识;处理器153执行的根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包的操作可以,包括:
根据所述第一标识识别到未与所述发送设备未建立协议栈对应关系,并从预先获取的服务与协议栈的对应关系中查找第一目标协议栈,再将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述对应关系包括每个协议栈的服务信息,所述第一目标协议栈为包括所述第一数据包的服务类型的服务的协议栈。
可选的,所述装置可以生成上述服务与协议栈的对应关系,该对应关系包括每个协议栈的服务信息,即该对应关系表明每个协议栈的服务。可以是在每个协议为应用程序建立服务时生成的上述对应关系。例如:每个协议栈都可以通过处理器153实现为不同的应用程序提供服务,这样就可以生成上述对应关系。另外,该对应关系具体可以是服务与协议栈的信息表。
可选的,所述包头还可以包括SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识;所述装置还可以包括:发射器154;处理器153在执行第一目标协议栈处理所述第一数据包的操作之后,处理器153还用于执行如下操作:
通过所述发射器154向所述发送设备返回第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识。
这样当发送设备接收到上述第二数据包时,就可以是根据第二数据包的DPS域包括的第二标识,直接将第二数据包分配至第二目标协议栈,由第二目标协议栈处理第二数据包。
可选的,上述第一数据包可以是分片后的数据包,即第一数据包为某一数据包中的一部分。但是分片后的数据包的包头中的DPS域、SPS域和服务类型都是相同的,这样通过上述步骤就可以实现将同一个数据包分片得到的多个数据包分配至同一个协议栈处理。因为同一个数据包分片得到的多个数据包的包头中的DPS域、SPS域和服务类型都是相同的,这样通过上述步骤就一定会分配至同一个协议栈。另外,可以采取将同一个数据流的分片数据包聚合到一个缓存区中,待所有分片数据包都到达缓存区再合成一个完整数据包后再分配至第一目标协议栈处理,以减少第一目标协议栈的开销。
可选的,上述装置具体可以是应用于服务器或者用户终端上,具体可以是服务器的服务端可以实现上述装置,或者用户终端的用户端可以实现上述装置;还可以服务器或者用户终端的内核实现上述装置;还可以服务器或者用户终端的用户态集中式网络并行协议栈实现上述装置;还可以服务器或者用户终端的lib库协议栈实现上述装置。其中。用户终端可以是平板电脑、手机、电子阅读器、遥控器、PC、笔记本电脑、车载设备、网络电视、可穿戴设备等具有网络功能的智能设备。
上述技术方案中,在上面实施例的基本上增加了多种可选的实施方式,且都可以实现提高协议栈的性能,从而提高设备的性能。
请参阅图16,图16是本发明实施例提供的另一种数据包处理装置的结构示意图,如图16所示,包括:发射器161和存储器162,以及分别与所述发射器161和存储器162连接的处理器163,其中,所述存储器162用于存储一组程序代码,所述处理器163用于调用所述存储器162存储的代码执行如下操作:
通过第二目标协议栈生成第一数据包,所述第一数据包的得到所述包头包括SPS域和DPS域;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;所述SPS域为用于携带所述发送设备的协议栈的标识的域;所述DPS域包括第一标识,所述SPS域包括所述第二目标协议栈的第二标识;
通过所述发射器161向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。
可选的,上述第一数据包可以是某个应用程序需要向接收设备发送的数据包,例如:当某一应用程序需要与接收设备建立通信时,处理器163就可以为该应用程序分配上述第二目标协议栈;其中,处理器163为该应用程序分配上述第二目标协议栈可以是按特定原则为该应用程序分配上述第二目标协议栈。处理器163执行的按特定原则为该应用程序分配上述第二目标协议栈的操作,可以包括:
判断该应用程序是否绑定协议栈;
若该应用程序绑定了协议栈时,当上述应用程序只绑定一个协议栈时,将该应用程序绑定的协议栈为作为上述第二目标协议栈;当上述应用程序绑定了多个协议栈时,将该应用程序绑定的协议栈中负载最轻的协议栈作为上述第二目标协议栈;
若该应用程序未绑定协议栈时,将启动的多个协议栈中负载最轻的协议栈作为上述第二目标协议栈。
其中,上述应用程序可以是指应用程序的进程或者线程。
可选的,上述源地址可以是源IP地址,上述目的地址可以是目的IP地址。
可选的,所述装置还可以包括接收器164,其中:所述处理器163通过所述发射器161向所述接收设备发送所述第一数据包之后,处理器163还用于执行如下操作:
通过所述接收器164接收所述接收设备返回的第二数据包,所述第二数据为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识;
将所述第二数据包分配至所述第二目标协议栈,所述第二目标协议栈处理所述第二数据包。
由于上述第二数据包的DPS域包括上述第二标识,这样步骤504就可以直接将第二数据包分配至第二目标协议栈,由第二目标协议栈处理第二数据包。
可选的,上述装置具体可以是应用于服务器或者用户终端上,具体可以是服务器的服务端可以实现上述装置,或者用户终端的用户端可以实现上述装置;还可以服务器或者用户终端的内核实现上述装置;还可以服务器或者用户终端的用户态集中式网络并行协议栈实现上述装置;还可以服务器或者用户终端的lib库协议栈实现上述装置。其中。用户终端可以是平板电脑、手机、电子阅读器、遥控器、PC、笔记本电脑、车载设备、网络电视、可穿戴设备等具有网络功能的智能设备。
上述技术方案中,通过第二目标协议栈生成第一数据包,所述第一数据包的得到所述包头包括SPS域和DPS域;向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。这样就可以实现根据第一数据包携带的第一标识从多个协议栈中选择第一目标协议栈处理第一数据包,相比现有技术中,多个内核同时访问同一个协议栈,本发明实施例可以提高协议栈的性能,从而提高设备的性能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存取存储器(Random AccessMemory,简称RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (18)
1.一种数据包处理方法,其特征在于,包括:
启动多个协议栈,并为每个协议栈分配标识,所述多个协议栈的个数关联于网络负载;
当应用程序需要使用网络时,从所述多个协议栈中按照负载均衡原则选择第一目标协议栈为所述应用程序提供服务,其中,所述第一目标协议栈为应用程序提供的服务为第一数据包的服务类型的服务;
获取所述第一数据包,并解析所述第一数据包的包头,得到所述包头中目的协议栈DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;
根据所述第一标识将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
2.如权利要求1所述的方法,其特征在于,所述第一标识为所述接收设备的协议栈的标识;
所述根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包,包括:
从启动的多个协议栈中选择标识为所述第一标识的第一目标协议栈;
将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包。
3.如权利要求1所述的方法,其特征在于,所述第一标识为所述特定标识;
所述根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包,包括:
根据所述第一标识识别到与所述发送设备未建立协议栈对应关系,并将所述第一数据包广播给启动的多个协议栈,当第一目标协议栈识别该第一目标协议栈包括所述第一数据包的服务类型的服务时,所述第一目标协议栈处理所述第一数据包;或者
根据所述第一标识识别到与所述发送设备未建立协议栈对应关系,并从预先获取的服务与协议栈的对应关系中查找第一目标协议栈,再将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述对应关系包括每个协议栈的服务信息,所述第一目标协议栈为包括所述第一数据包的服务类型的服务的协议栈。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述包头还包括源协议栈SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识;
所述第一目标协议栈处理所述第一数据包之后,所述方法还包括:
向所述发送设备返回第二数据包,所述第二数据包为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识。
5.一种数据包处理方法,其特征在于,包括:
通过第二目标协议栈生成第一数据包,所述第一数据包的包头包括SPS域和DPS域;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;所述SPS域为用于携带所述发送设备的协议栈的标识的域;所述DPS域包括第一标识,所述SPS域包括所述第二目标协议栈的第二标识;所述第二目标协议栈为按照负载均衡原则选择的协议栈;
向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。
6.如权利要求5所述的方法,其特征在于,所述向所述接收设备发送所述第一数据包之后,所述方法还包括:
接收所述接收设备返回的第二数据包,所述第二数据包为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识;
将所述第二数据包分配至所述第二目标协议栈,所述第二目标协议栈处理所述第二数据包。
7.一种数据包处理装置,其特征在于,包括:启动单元、选择单元、获取单元和分配单元,其中:
启动单元,用于启动多个协议栈,并为每个协议栈分配标识,所述多个协议栈的个数关联于网络负载;
选择单元,用于当应用程序需要使用网络时,从所述多个协议栈中按照负载均衡原则选择第一目标协议栈为所述应用程序提供服务,其中,所述第一目标协议栈为所述应用程序提供的服务为第一数据包的服务类型的服务;
所述获取单元,用于获取所述第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;
所述分配单元,用于根据所述第一标识将所述第一数据包分配至所述第一目标协议栈,通过所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
8.如权利要求7所述的装置,其特征在于,所述分配单元用于当所述第一标识为所述接收设备的协议栈的标识时,从启动的多个协议栈中选择标识为所述第一标识的第一目标协议栈;以及将所述第一数据包分配至所述第一目标协议栈,通过所述第一目标协议栈处理所述第一数据包。
9.如权利要求7所述的装置,其特征在于,所述分配单元用于当所述第一标识为所述特定标识时,根据所述第一标识识别到与所述发送设备未建立协议栈对应关系,并将所述第一数据包广播给启动的多个协议栈,当第一目标协议栈识别该第一目标协议栈包括所述第一数据包的服务类型的服务时,通过所述第一目标协议栈处理所述第一数据包;或者
所述分配单元用于当所述第一标识为所述特定标识时,根据所述第一标识识别到与所述发送设备未建立协议栈对应关系,并从预先获取的服务与协议栈的对应关系中查找第一目标协议栈,再将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述对应关系包括每个协议栈的服务信息,所述第一目标协议栈为包括所述第一数据包的服务类型的服务的协议栈。
10.如权利要求7-9中任一项所述的装置,其特征在于,所述包头还包括SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识;
所述装置还包括:
发送单元,用于向所述发送设备返回第二数据包,所述第二数据包为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识。
11.一种数据包处理装置,其特征在于,包括:生成单元和发送单元,其中:
所述生成单元,用于通过第二目标协议栈生成第一数据包,所述第一数据包的包头包括SPS域和DPS域;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;所述SPS域为用于携带所述发送设备的协议栈的标识的域;所述DPS域包括第一标识,所述SPS域包括所述第二目标协议栈的第二标识;所述第二目标协议栈为按照负载均衡原则选择的协议栈;
所述发送单元,用于向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。
12.如权利要求11所述的装置,其特征在于,所述装置还包括:
接收单元,用于接收所述接收设备返回的第二数据包,所述第二数据包为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识;
分配单元,用于将所述第二数据包分配至所述第二目标协议栈,所述第二目标协议栈处理所述第二数据包。
13.一种数据包处理装置,其特征在于,包括:接收器和存储器,以及分别与所述接收器和存储器连接的处理器,其中,所述存储器用于存储一组程序代码,所述处理器用于调用所述存储器存储的代码执行如下操作:
启动多个协议栈,并为每个协议栈分配标识,所述多个协议栈的个数关联于网络负载;
当应用程序需要使用网络时,从所述多个协议栈中按照负载均衡原则选择第一目标协议栈为所述应用程序提供服务,其中,所述第一目标协议栈为应用程序提供的服务为第一数据包的服务类型的服务;
通过所述接收器获取第一数据包,并解析所述第一数据包的包头,得到所述包头中DPS域包括的第一标识;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;
根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为启动的多个协议栈中的协议栈。
14.如权利要求13所述的装置,其特征在于,所述第一标识为所述接收设备的协议栈的标识;
所述处理器执行的根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包的操作,包括:
从启动的多个协议栈中选择标识为所述第一标识的第一目标协议栈;
将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包。
15.如权利要求13所述的装置,其特征在于,所述第一标识为所述特定标识;
所述处理器执行的根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包的操作,包括:
根据所述第一标识识别到与所述发送设备未建立协议栈对应关系,并将所述第一数据包广播给启动的多个协议栈,当第一目标协议栈识别该第一目标协议栈包括所述第一数据包的服务类型的服务时,所述第一目标协议栈处理所述第一数据包;或者
根据所述第一标识识别到与所述发送设备未建立协议栈对应关系,并从预先获取的服务与协议栈的对应关系中查找第一目标协议栈,再将所述第一数据包分配至所述第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述对应关系包括每个协议栈的服务信息,所述第一目标协议栈为包括所述第一数据包的服务类型的服务的协议栈。
16.如权利要求13-15中任一项所述的装置,其特征在于,所述包头还包括SPS域,所述SPS域为用于携带所述发送设备的协议栈的标识的域,所述SPS域包括所述发送设备中处理所述第一数据包的第二目标协议栈的第二标识;
所述装置还包括发射器,所述处理器在执行第一目标协议栈处理所述第一数据包的操作之后,所述处理器还用于执行如下操作:
通过所述发射器向所述发送设备返回第二数据包,所述第二数据包为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识。
17.一种数据包处理装置,其特征在于,包括:发射器和存储器,以及分别与所述发射器和存储器连接的处理器,其中,所述存储器用于存储一组程序代码,所述处理器用于调用所述存储器存储的代码执行如下操作:
通过第二目标协议栈生成第一数据包,所述第一数据包的包头包括SPS域和DPS域;其中,所述DPS域为用于携带接收设备的协议栈的标识或者特定标识的域,所述特定标识用于表示所述接收设备与发送设备未建立协议栈对应关系,所述接收设备为所述包头中目的地址标识的设备,所述发送设备为所述包头中源地址标识的设备;所述SPS域为用于携带所述发送设备的协议栈的标识的域;所述DPS域包括第一标识,所述SPS域包括所述第二目标协议栈的第二标识;所述第二目标协议栈为按照负载均衡原则选择的协议栈;
通过所述发射器向所述接收设备发送所述第一数据包;以使所述接收设备根据所述第一标识将所述第一数据包分配至第一目标协议栈,所述第一目标协议栈处理所述第一数据包;其中,所述第一目标协议栈为所述接收设备启动的多个协议栈中的协议栈。
18.如权利要求17所述的装置,其特征在于,所述装置还包括接收器,其中:所述处理器在执行通过所述发射器向所述接收设备发送所述第一数据包的操作之后,还用于执行如下操作:
通过所述接收器接收所述接收设备返回的第二数据包,所述第二数据包为所述第一数据包的响应数据包,所述第二数据包的包头包括SPS域和DPS域,其中,所述第二数据包的包头包括的SPS域包括所述第一目标协议栈的标识,所述第二数据包的包头包括的DPS域包括所述第二标识;
将所述第二数据包分配至所述第二目标协议栈,所述第二目标协议栈处理所述第二数据包。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/090413 WO2015096058A1 (zh) | 2013-12-25 | 2013-12-25 | 一种数据包处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104969533A CN104969533A (zh) | 2015-10-07 |
CN104969533B true CN104969533B (zh) | 2018-11-06 |
Family
ID=53477333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380002979.XA Active CN104969533B (zh) | 2013-12-25 | 2013-12-25 | 一种数据包处理方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104969533B (zh) |
WO (1) | WO2015096058A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107920073A (zh) * | 2017-11-17 | 2018-04-17 | 广西小草信息产业有限责任公司 | 一种协议栈运行装置和方法 |
CN111490963B (zh) | 2019-01-25 | 2022-07-29 | 上海哔哩哔哩科技有限公司 | 基于quic协议栈的数据处理方法、系统、设备及存储介质 |
CN112637329B (zh) * | 2020-12-21 | 2022-08-23 | 网络通信与安全紫金山实验室 | 一种多应用程序的标识方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970244A (zh) * | 2012-11-23 | 2013-03-13 | 上海寰创通信科技股份有限公司 | 一种多cpu核间负载均衡的网络报文处理方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7562145B2 (en) * | 2003-08-28 | 2009-07-14 | International Business Machines Corporation | Application instance level workload distribution affinities |
CN1852296A (zh) * | 2005-09-30 | 2006-10-25 | 华为技术有限公司 | 一种多协议支持系统及方法 |
KR100929852B1 (ko) * | 2007-09-20 | 2009-12-04 | 한국전자통신연구원 | 공유 메모리를 이용한 가상 기계 상의 응용프로그램 간통신 인터페이스 장치 및 그 방법 |
US7751401B2 (en) * | 2008-06-30 | 2010-07-06 | Oracle America, Inc. | Method and apparatus to provide virtual toe interface with fail-over |
CN101442547B (zh) * | 2008-12-12 | 2012-04-04 | 华为技术有限公司 | 一种报文处理方法、系统及设备 |
KR101725889B1 (ko) * | 2010-12-28 | 2017-04-12 | 삼성전자주식회사 | 이종 프로토콜을 이용한 통신 방법 및 장치 |
CN102238187B (zh) * | 2011-07-26 | 2014-07-02 | 东念(杭州)科技有限公司 | 基于tcp/ip协议的通信协议的系统及其实现方法 |
-
2013
- 2013-12-25 CN CN201380002979.XA patent/CN104969533B/zh active Active
- 2013-12-25 WO PCT/CN2013/090413 patent/WO2015096058A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970244A (zh) * | 2012-11-23 | 2013-03-13 | 上海寰创通信科技股份有限公司 | 一种多cpu核间负载均衡的网络报文处理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015096058A1 (zh) | 2015-07-02 |
CN104969533A (zh) | 2015-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11522734B2 (en) | Method for controlling a remote service access path and relevant device | |
CN105553977B (zh) | 请求消息的处理、发送方法及装置 | |
Duquennoy et al. | The web of things: interconnecting devices with high usability and performance | |
CN107948324B (zh) | 请求传输系统、方法、装置及存储介质 | |
CN108200165B (zh) | 请求传输系统、方法、装置及存储介质 | |
CN104580192B (zh) | 应用程序的网络访问请求的处理方法和装置 | |
EP3352431B1 (en) | Network load balance processing system, method, and apparatus | |
US10231163B2 (en) | Efficient centralized resource and schedule management in time slotted channel hopping networks | |
CN103139157B (zh) | 一种基于socket的网络通信方法、装置及系统 | |
CN108494817A (zh) | 数据传输方法、相关装置及系统 | |
CN109088799B (zh) | 一种客户端接入方法、装置、终端以及存储介质 | |
US8386614B2 (en) | Network connection manager | |
CN108200158B (zh) | 请求传输系统、方法、装置及存储介质 | |
CN109196842B (zh) | 一种会话保持方法、设备及存储介质 | |
CN108881425B (zh) | 一种数据包处理方法及系统 | |
CN108401037A (zh) | 用户终端和设备的绑定方法、装置和系统 | |
US20060069788A1 (en) | Interface method, system, and program product for facilitating layering of a data communications protocol over an active message layer protocol | |
US11843642B1 (en) | Serverless signaling in peer-to-peer session initialization | |
CN104969533B (zh) | 一种数据包处理方法和装置 | |
CN112702362B (zh) | Tcp/ip协议栈的增强方法、装置、电子设备及存储介质 | |
CN113259271B (zh) | 报文交换方法和报文交换系统 | |
CN105700950B (zh) | 一种数据通信方法及装置 | |
CN112422457B (zh) | 报文处理方法、装置和计算机存储介质 | |
US10664288B2 (en) | Obtaining environment information in a computing environment | |
CN110247998A (zh) | 一种IPv4/IPv6数据传输处理方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |