CN104811432A - 基于并行协议栈实例的数据包处理方法和装置 - Google Patents

基于并行协议栈实例的数据包处理方法和装置 Download PDF

Info

Publication number
CN104811432A
CN104811432A CN201410043932.4A CN201410043932A CN104811432A CN 104811432 A CN104811432 A CN 104811432A CN 201410043932 A CN201410043932 A CN 201410043932A CN 104811432 A CN104811432 A CN 104811432A
Authority
CN
China
Prior art keywords
protocol stack
stack example
packet
distributing strategy
target socket
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.)
Withdrawn
Application number
CN201410043932.4A
Other languages
English (en)
Inventor
古强
文刘飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410043932.4A priority Critical patent/CN104811432A/zh
Priority to KR1020167023319A priority patent/KR20160113671A/ko
Priority to EP14880886.8A priority patent/EP3091707A4/en
Priority to PCT/CN2014/091727 priority patent/WO2015113437A1/zh
Publication of CN104811432A publication Critical patent/CN104811432A/zh
Priority to US15/222,741 priority patent/US10218820B2/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本发明提供一种基于并行协议栈实例的数据包处理方法和装置,通过根据网卡的分流策略信息确定数据包的分流策略,根据该数据包的分流策略,确定第一协议栈实例,进而在第一协议栈实例上创建目标socket,以便当数据包分流到第一协议栈实例时,第一协议栈实例利用目标socket对该数据包进行协议处理,避免出现APP指定的针对目标socket的协议栈实例与网卡指定的协议栈实例冲突的情况,解决了无法对该数据包进行协议处理的技术问题。

Description

基于并行协议栈实例的数据包处理方法和装置
技术领域
本发明涉及通信技术,尤其涉及一种基于并行协议栈实例的数据包处理方法和装置。
背景技术
随着云计算的快速发展,对协议栈实例的处理能力提出了更高的要求。目前,通常采用多个协议栈实例共享套接字(socket)的方式,因此存在多协议栈实例之间对socket的竞争问题,进而提出了在CPU的多核架构下并行协议栈实例,该并行协议栈实例包括至少两个协议栈实例,每个协议栈实例运行在CPU的一个虚拟处理器(virtual CPU,VCPU)上,采用独占协议栈实例所关联的socket的方式从而避免上述多协议栈实例之间对socket的竞争问题。当网卡根据分流策略,向各协议栈实例分流数据包时,各协议栈实例可利用与该协议栈实例关联的socket对数据包并行进行协议处理。
但是应用(Application,APP)在指示创建进行上述协议处理所需的socket时,指定了socket与协议栈实例之间的关联关系,从而仅可由相关联的协议栈实例占用该socket对数据包进行协议处理,当网卡将数据包分流到的协议栈实例,与该socket相关联的协议栈实例不同时,即出现了APP指定的协议栈实例与网卡指定的协议栈实例冲突的情况,无法对数据包进行协议处理。
发明内容
本发明实施例提供一种基于并行协议栈实例的数据包处理方法和装置。
第一个方面是提供一种基于并行协议栈实例的数据包处理方法,获得网卡的分流策略信息;根据所述分流策略信息确定数据包的分流策略;监听到应用APP创建目标套接字socket的指示时,根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,以便所述第一协议栈实例利用所述目标socket对所述数据包进行协议处理。
在第一方面的第一种可能的实现方式中,所述分流策略信息中包括网卡的分流策略。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述分流策略信息中还包括如下信息中的至少一种:硬件配置信息、软件配置信息;则所述根据所述分类策略信息确定数据包的分流策略,包括:根据所述硬件配置信息和/或所述软件配置信息对所述网卡的分流策略进行调整,确定所述数据包的分流策略;所述方法还包括:将所述数据包的分流策略写入所述网卡,以使所述网卡根据所述数据包的分流策略,将所述数据包分流到所述第一协议栈实例。
结合第一方面,在第一方面的第三种可能的实现方式中,所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket之前,还包括:识别所述APP指示创建所述目标socket时所采用的方式;则所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,包括:若所述采用的方式为调用连接connect方式,则根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
结合第一方面,在第一方面的第四种可能的实现方式中,所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket之前,还包括:识别所述APP指示创建所述目标socket时所采用的方式;若所述采用的方式为调用绑定bind方式和/或监听listen方式,则在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket;所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,包括:监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示,根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示之前,还包括:若收到TCP类型的数据包且未监听到TCP连接建立成功的指示,则由收到所述TCP类型的数据包的协议栈实例对所述TCP类型的数据包进行协议处理。
结合第一方面的第四种可能的实现方式,在第一方面的第六种可能的实现方式中,在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket之后,还包括:若收到UDP类型的数据包,则由收到所述UDP类型数据包的协议栈实例对所述UDP类型的数据包进行协议处理。
在第一方面的第七种可能的实现方式中,所述监听到应用APP创建目标套接字socket的指示之后,还包括:向所述应用APP发送已创建所述目标socket的伪结果。
第二方面是提供一种基于并行协议栈实例的数据包处理装置,包括:获得模块,用于获得网卡的分流策略信息;确定模块,用于根据所述分流策略信息确定数据包的分流策略;第一创建模块,用于监听到应用APP创建目标套接字socket的指示时,根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,以便所述第一协议栈实例利用所述目标socket对所述数据包进行协议处理。
在第二方面的第一种可能的实现方式中,所述分流策略信息中包括网卡的分流策略。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述分流策略信息中还包括如下信息中的至少一种:硬件配置信息、软件配置信息;则所述确定模块,具体用于根据所述硬件配置信息和/或所述软件配置信息对所述网卡的分流策略进行调整,确定所述数据包的分流策略;所述装置还包括:写卡模块,用于将所述数据包的分流策略写入所述网卡,以使所述网卡根据所述数据包的分流策略,将所述数据包分流到所述第一协议栈实例。
结合第二方面,在第二方面的第三种可能的实现方式中,所述装置,还包括:识别模块,用于识别所述APP指示创建所述目标socket时所采用的方式;则所述第一创建模块,具体用于若所述采用的方式为调用连接connect方式,则根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
结合第二方面,在第二方面的第四种可能的实现方式中,所述装置,还包括:识别模块,用于识别所述APP指示创建所述目标socket时所采用的方式;第二创建模块,用于若所述采用的方式为调用绑定bind方式和/或监听listen方式,则在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket;所述第一创建模块,具体用于监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示,根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述装置,还包括:第一处理模块,用于监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示之前,若收到TCP类型的数据包且未监听到TCP连接建立成功的指示,则由收到所述TCP类型的数据包的协议栈实例对所述TCP类型的数据包进行协议处理。
结合第二方面的第四种可能的实现方式,在第二方面的第六种可能的实现方式中,所述装置,还包括:第二处理模块,用于在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket之后,若收到UDP类型的数据包,则由收到所述UDP类型数据包的协议栈实例对所述UDP类型的数据包进行协议处理。
结合第二方面,在第二方面的第七种可能的实现方式中,所述装置,还包括:发送模块,用于向所述应用APP发送已创建所述目标socket的伪结果。
本发明实施例提供的基于并行协议栈实例的数据包处理方法和装置,通过根据网卡的分流策略信息确定数据包的分流策略,根据该数据包的分流策略,确定第一协议栈实例,进而在第一协议栈实例上创建目标socket,以便当数据包分流到第一协议栈实例时,第一协议栈实例利用目标socket对该数据包进行协议处理,避免出现APP指定的针对目标socket的协议栈实例与网卡指定的协议栈实例冲突的情况,解决了无法对该数据包进行协议处理的技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的基于并行协议栈实例的数据包处理方法的流程示意图;
图2为本发明另一实施例提供的基于并行协议栈实例的数据包处理方法的流程示意图;
图3为本发明一实施例提供的基于并行协议栈实例的数据包处理装置的结构示意图;
图4A为本发明另一实施例提供的一种基于并行协议栈实例的数据包处理装置的结构示意图;
图4B为本发明另一实施例提供的另一种基于并行协议栈实例的数据包处理装置的结构示意图;
图5为本发明又一实施例提供的基于并行协议栈实例的数据包处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的基于并行协议栈实例的数据包处理方法的流程示意图,如图1所示,本实施例可以包括:
101、获得网卡的分流策略信息。
其中,分流策略信息中包括网卡的分流策略。
可选的,可从网卡获得上述网卡的分流策略信息,该网卡可为物理网卡或者虚拟网卡。
进一步,分流策略信息还可包括硬件配置信息和/或软件配置信息。
102、根据分流策略信息确定数据包的分流策略。
其中,所述数据包的分流策略用于指示数据包所分流到的第一协议栈实例。
可选的,若分流策略信息包括网卡的分流策略,还包括硬件配置信息和/或软件配置信息,则根据所述硬件配置信息,例如网卡所包含的硬件队列个数,和/或所述软件配置信息,例如是否开启协议栈实例的转发功能,对网卡的分流策略进行调整,确定该数据包的分流策略。相应的,在确定该数据包的分流策略之后,将该数据包的分流策略写入所述网卡,以使所述网卡根据所述数据包的分流策略,将数据包分流到所述第一协议栈实例。
103、监听到APP创建目标socket的指示时,根据数据包的分流策略,确定第一协议栈实例,在第一协议栈实例上创建目标socket。
其中,目标socket是对所述数据包进行协议处理所需的socket。
可选的,当监听到应用APP指示创建所述目标socket时,可进一步识别所述APP指示创建所述目标socket时所采用的方式,若采用的方式为调用连接(connect)方式,则确定APP当前处于客户端模式,根据所述数据包的分流策略,确定将所述数据包分流到所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,以当所述数据包分流到所述第一协议栈实例时,所述第一协议栈实例利用所述目标socket,对所述数据包进行协议处理。
或者可选的,当监听到应用APP指示创建所述目标socket时,可进一步识别所述APP指示创建所述目标socket时所采用的方式,若采用的方式为调用绑定(bind)方式和/或监听(listen)方式,则确定APP当前处于服务器端模式,则在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket。当监听到所述创建了所述目标socket的各协议栈实例中的第二协议栈实例发送的TCP连接建立成功的指示时,根据所述数据包的分流策略,确定将所述数据包分流到所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
本实施例中,通过根据网卡的分流策略信息确定数据包的分流策略,根据该数据包的分流策略,确定第一协议栈实例,进而在第一协议栈实例上创建目标socket,以便当数据包分流到第一协议栈实例时,第一协议栈实例利用目标socket对该数据包进行协议处理,避免出现APP指定的针对目标socket的协议栈实例与网卡指定的协议栈实例冲突的情况,解决了无法对该数据包进行协议处理的技术问题。
图2为本发明另一实施例提供的基于并行协议栈实例的数据包处理方法的流程示意图,本实施例中的并行协议栈具体用于对网卡所分流的数据包进行协议处理,本实施例所提供的方法由并行协议栈中的数据包处理装置执行,如图2所示,本实施例可以包括:
201、监听APP对应用程序接口(Application Programming Interface,API)的调用。
202、当监听到APP调用API指示创建socket X时,判断APP指示创建该socket X时所采用的方式是否为调用connect方式,若是,则执行203,否则执行204至208。
其中,X为socket所绑定的逻辑端口号。socket X用于对数据包进行协议处理。
进一步,在监听到APP调用API指示创建socket X时,若APP指示并行协议栈中的指定协议栈创建socket X,则还可根据并行协议栈的网络运行情况确定是否可以创建该socket X,例如:是否该指定协议栈内创建的socket的总数达到预设限值,和/或该APP指示创建的socket所绑定的逻辑端口X是否已占用,若总数未达到预设限值,且逻辑端口未占用则向该APP返回已创建该socket的伪结果。返回伪结果是指并不真正在协议栈实例上创建socket,而是给应用返回伪的结果,通知其是否创建成功。后续再进行创建socket的工作。
203、若采用的方式为调用connect方式,则根据数据包的分流策略,确定将数据包分流到协议栈实例A,在协议栈实例A上创建socket X。
其中,数据包的分流策略是获得网卡的分流策略信息之后,根据网卡的分流策略信息预先确定的,并且该数据包的分流策略已写入网卡中,以使该网卡根据数据包的分流策略,将数据包分流到协议栈实例A。数据包的分流策略用于指示各数据包所分流到的协议栈实例,一般情况下,具体根据数据包中的五元组信息对数据包进行分流。其中,分流策略信息中包括网卡的分流策略,分流策略信息中还包括如下信息中的至少一种:硬件配置信息、软件配置信息。
可选的,若采用的方式为调用connect方式,则APP为客户端模式,根据网卡的分流策略确定数据包的分流策略,进而确定需要该socket X进行协议处理的数据包所分流到的协议栈实例A,采用部署协议控制块(PCB)的方式,在协议栈实例A上创建socket X。
204、若采用的方式为调用bind方式和/或listen方式,则APP为服务器端模式,则在所述并行协议栈实例所包括的各协议栈实例上均创建socketX。
可选的,若采用的方式为调用bind方式和/或listen方式,可确定该socket X为服务器端模式,需要利用该socket X进行处理的数据包的五元组信息中,具有相同的目的端口和相同的目的IP,但目的端口和目的IP不一定相同,因此,一般情况下,网卡会基于数据包的分流策略,根据数据包中的五元组信息,将需要利用该socket X进行处理的数据包分流到各协议栈实例中,从而,在所述并行协议栈实例所包括的各协议栈实例上均创建APP所指示的socket X。
205、接收网卡向协议栈实例B分流的数据包,判断分流到协议栈实例B的数据包所采用的协议类型,是否为传输控制协议(Transmission ControlProtocol,TCP)类型,若是执行207,否则,执行206。
其中,协议栈实例B为创建了socket X的各协议栈实例中的一个协议栈实例。
206、若为用户数据包协议(User Datagram Protocol,UDP)类型,向网卡所分流的协议栈实例B发送该数据包,以使协议栈实例B对该数据包进行协议处理。
可选的,若为UDP类型,则由收到UDP类型数据包的协议栈实例对UDP类型的数据包进行协议处理。
207、若为TCP类型,则对该协议栈实例B进行监听,以及向网卡所分流的协议栈实例B发送该数据包,以使协议栈实例B对该数据包进行协议处理以建立TCP连接。
可选的,若为TCP类型,也就是说收到TCP类型的数据包,则该数据包用于指示创建客户端与服务器端的TCP连接,此时,APP为服务器端模式,对该数据包进行协议处理,以建立该TCP连接,也就是说,使该TCP连接进入TCP接受(accept)状态。在收到TCP类型的数据包且收到TCP类型的数据包之前未监听到TCP连接建立成功的指示,则由收到TCP类型的数据包的协议栈实例对该TCP类型的数据包进行协议处理。并且对协议栈实例B进行监听,以获得该协议栈实例B向APP发送的TCP连接建立成功的指示。
208、当监听到该协议栈实例B向APP发送的TCP连接建立成功的指示时,根据上述分流策略,在协议栈实例C上创建socket Y。
其中,Y为在协议栈实例C上创建的socket所绑定的逻辑端口号,socketY用于对利用上述TCP连接传输的TCP数据包进行协议处理。
可选的,该TCP连接建立完成后,协议栈实例B向APP发送的TCP连接建立成功的指示,从而当监听到该指示时,根据上述分流策略,确定TCP数据包分流到的协议栈实例C,在协议栈实例C上创建socket Y,以当TCP数据包分流到协议栈实例C时,协议栈实例C利用所述socket Y,对所述TCP数据包进行协议处理。其中,TCP数据包是利用所述TCP连接传输的数据包。
本实施例中,通过根据网卡的分流策略信息确定数据包的分流策略,根据该数据包的分流策略,确定第一协议栈实例,进而在第一协议栈实例上创建目标socket,以便当数据包分流到第一协议栈实例时,第一协议栈实例利用目标socket对该数据包进行协议处理,避免出现APP指定的针对目标socket的协议栈实例与网卡指定的协议栈实例冲突的情况,解决了无法对该数据包进行协议处理的技术问题。
图3为本发明一实施例提供的基于并行协议栈实例的数据包处理装置的结构示意图,如图3所示,包括:获得模块31、确定模块30和第一创建模块32。
获得模块31,用于获得网卡的分流策略信息。
其中,分流策略信息中包括网卡的分流策略。
确定模块30,与获得模块31连接,用于根据所述分流策略信息确定数据包的分流策略。
其中,数据包的分流策略用于指示数据包所分流到的第一协议栈实例。
可选的,基于分流策略信息中还包括如下信息中的至少一种:硬件配置信息、软件配置信息,则确定模块30具体用于根据所述硬件配置信息和/或所述软件配置信息对所述网卡的分流策略进行调整,确定所述数据包的分流策略。
第一创建模块32,与确定模块30连接,用于监听到应用APP创建目标套接字socket的指示时,根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,以便所述第一协议栈实例利用所述目标socket对所述数据包进行协议处理。
本实施例中,通过根据网卡的分流策略信息确定数据包的分流策略,根据该数据包的分流策略,确定第一协议栈实例,进而在第一协议栈实例上创建目标socket,以便当数据包分流到第一协议栈实例时,第一协议栈实例利用目标socket对该数据包进行协议处理,避免出现APP指定的针对目标socket的协议栈实例与网卡指定的协议栈实例冲突的情况,解决了无法对该数据包进行协议处理的技术问题。
图4A为本发明另一实施例提供的一种基于并行协议栈实例的数据包处理装置的结构示意图,如图4A所示,在上一实施例的基础上,分流策略信息包括网卡的分流策略,还包括如下信息中的至少一种:硬件配置信息、软件配置信息,则本实施例中的装置进一步包括写卡模块41、识别模块42和发送模块43。
写卡模块41,与确定模块30连接,用于将所述数据包的分流策略写入所述网卡,以使所述网卡根据所述数据包的分流策略,将所述数据包分流到所述第一协议栈实例。
发送模块43,与第一创建模块32连接,用于向应用APP发送已创建目标socket的伪结果。返回伪结果是指并不真正在协议栈实例上创建socket,而是给应用返回伪的结果,通知其是否创建成功。后续再进行创建socket的工作。
识别模块42,与第一创建模块32连接,用于识别所述APP指示创建所述目标socket时所采用的方式。
基于此,可选的,第一创建模块32具体用于若采用的方式为调用connect方式,则根据所述数据包的分流策略,确定将所述数据包分流到所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
进一步,图4B为本发明另一实施例提供的另一种基于并行协议栈实例的数据包处理装置的结构示意图,在图4所示的基于并行协议栈实例的数据包处理装置的基础上,该装置进一步包括:第二创建模块44、第一处理模块45和第二处理模块46。
第二创建模块44,与识别模块42连接,用于若采用的方式为调用bind方式和/或listen方式,则在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket。
基于此,可选的,第一创建模块32具体用于监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示,根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
第一处理模块45,与第二创建模块44和第一创建模块32连接,用于监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示之前,若收到TCP类型的数据包且未监听到TCP连接建立成功的指示,则由收到所述TCP类型的数据包的协议栈实例对所述TCP类型的数据包进行协议处理。
第二处理模块46,与第二创建模块44连接,用于在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket之后,若收到UDP类型的数据包,则由收到所述UDP类型数据包的协议栈实例对所述UDP类型的数据包进行协议处理。
本实施例提供的另一种并行协议栈实例的数据包处理装置的各功能模块可用于执行图1和图2所示的并行协议栈实例的数据包处理方法流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例中,通过根据网卡的分流策略信息确定数据包的分流策略,根据该数据包的分流策略,确定第一协议栈实例,进而在第一协议栈实例上创建目标socket,以便当数据包分流到第一协议栈实例时,第一协议栈实例利用目标socket对该数据包进行协议处理,避免出现APP指定的针对目标socket的协议栈实例与网卡指定的协议栈实例冲突的情况,解决了无法对该数据包进行协议处理的技术问题。
图5为本发明又一实施例提供的基于并行协议栈实例的数据包处理装置的结构示意图,如图5所示,本实施例中的装置可以包括:存储器51、通信接口52和处理器53。
存储器51,用于存放程序。具体的,程序可以包括程序代码,上述程序代码包括计算机操作指令。存储器51可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
通信接口52,用于获得网卡的分流策略信息;其中,分流策略信息中包括网卡的分流策略,分流策略信息中还包括如下信息中的至少一种:硬件配置信息、软件配置信息。
可选的,通信接口52具体用于获得网卡的硬件配置信息、软件配置信息和网卡的分流策略,以使处理器53根据所述硬件配置信息和/或所述软件配置信息对所述网卡的分流策略进行调整,获得所述数据包的分流策略。则通信接口52从处理器53获得所述数据包的分流策略之后,将所述分流策略写入所述网卡,以使所述网卡根据所述数据包的分流策略,将所述数据包分流到所述第一协议栈实例。
处理器53,用于执行存储器51存放的程序,以用于:根据所述分流策略信息确定数据包的分流策略;监听到应用APP创建目标套接字socket的指示时,根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,以便所述第一协议栈实例利用所述目标socket对所述数据包进行协议处理。
可选的,处理器53具体用于根据所述硬件配置信息和/或所述软件配置信息对所述网卡的分流策略进行调整,获得所述数据包的分流策略。当通信接口52监听到应用APP指示创建所述目标socket时,识别所述APP指示创建所述目标socket时,所采用的方式。若采用的方式为调用connect方式,则APP为客户端模式,则根据所述分流策略,确定将所述目标数据包分流到所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
和/或可选的,处理器53具体用于根据所述硬件配置信息和/或所述软件配置信息对所述网卡的分流策略进行调整,获得所述数据包的分流策略。当通信接口52监听到应用APP指示创建所述目标socket时,识别所述APP指示创建所述目标socket时,所采用的方式。若采用的方式为调用bind方式和/或listen方式,则APP为服务器端模式,则在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket。监听到所述创建了所述目标socket的各协议栈实例中的第二协议栈实例发送的TCP连接建立成功的指示,根据所述分流策略,确定将所述数据包分流到所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。若收到UDP类型的数据包,则由收到所述UDP类型数据包的协议栈实例对所述UDP类型的数据包进行协议处理;若收到TCP类型的数据包且未监听到TCP连接建立成功的指示,则由收到所述TCP类型的数据包的协议栈实例对所述TCP类型的数据包进行协议处理。
基于此,通信接口52还用于监听APP的指示和第二协议栈实例发送的指示,以及监听到应用APP指示创建所述目标socket之后,向所述APP发送已创建所述目标socket的伪结果。返回伪结果是指并不真正在协议栈实例上创建socket,而是给应用返回伪的结果,通知其是否创建成功。后续再进行创建socket的工作。
本实施例提供的并行协议栈实例的数据包处理装置的各功能模块可用于执行图1和图2所示的并行协议栈实例的数据包处理方法流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例中,通过根据网卡的分流策略信息确定数据包的分流策略,根据该数据包的分流策略,确定第一协议栈实例,进而在第一协议栈实例上创建目标socket,以便当数据包分流到第一协议栈实例时,第一协议栈实例利用目标socket对该数据包进行协议处理,避免出现APP指定的针对目标socket的协议栈实例与网卡指定的协议栈实例冲突的情况,解决了无法对该数据包进行协议处理的技术问题。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (16)

1.一种基于并行协议栈实例的数据包处理方法,其特征在于,包括:
获得网卡的分流策略信息;
根据所述分流策略信息确定数据包的分流策略;
监听到应用APP创建目标套接字socket的指示时,根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,以便所述第一协议栈实例利用所述目标socket对所述数据包进行协议处理。
2.根据权利要求1所述的方法,其特征在于,所述分流策略信息中包括网卡的分流策略。
3.根据权利要求2所述的方法,其特征在于,所述分流策略信息中还包括如下信息中的至少一种:硬件配置信息、软件配置信息;则
所述根据所述分类策略信息确定数据包的分流策略,包括:
根据所述硬件配置信息和/或所述软件配置信息对所述网卡的分流策略进行调整,确定所述数据包的分流策略;
所述方法还包括:
将所述数据包的分流策略写入所述网卡,以使所述网卡根据所述数据包的分流策略,将所述数据包分流到所述第一协议栈实例。
4.根据权利要求1所述的方法,其特征在于,所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket之前,还包括:
识别所述APP指示创建所述目标socket时所采用的方式;
则所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,包括:
若所述采用的方式为调用连接connect方式,则根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
5.根据权利要求1所述的方法,其特征在于,所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket之前,还包括:
识别所述APP指示创建所述目标socket时所采用的方式;
若所述采用的方式为调用绑定bind方式和/或监听listen方式,则
在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket;
所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,包括:
监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示,根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
6.根据权利要求5所述的方法,其特征在于,所述监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示之前,还包括:
若收到TCP类型的数据包且未监听到TCP连接建立成功的指示,则由收到所述TCP类型的数据包的协议栈实例对所述TCP类型的数据包进行协议处理。
7.根据权利要求5所述的方法,其特征在于,在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket之后,还包括:
若收到UDP类型的数据包,则由收到所述UDP类型数据包的协议栈实例对所述UDP类型的数据包进行协议处理。
8.根据权利要求1所述的方法,其特征在于,所述监听到应用APP创建目标套接字socket的指示之后,还包括:
向所述应用APP发送已创建所述目标socket的伪结果。
9.一种基于并行协议栈实例的数据包处理装置,其特征在于,包括:
获得模块,用于获得网卡的分流策略信息;
确定模块,用于根据所述分流策略信息确定数据包的分流策略;
第一创建模块,用于监听到应用APP创建目标套接字socket的指示时,根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,以便所述第一协议栈实例利用所述目标socket对所述数据包进行协议处理。
10.根据权利要求9所述的装置,其特征在于,所述分流策略信息中包括网卡的分流策略。
11.根据权利要求10所述的装置,其特征在于,所述分流策略信息中还包括如下信息中的至少一种:硬件配置信息、软件配置信息;则
所述确定模块,具体用于根据所述硬件配置信息和/或所述软件配置信息对所述网卡的分流策略进行调整,确定所述数据包的分流策略;
所述装置还包括:
写卡模块,用于将所述数据包的分流策略写入所述网卡,以使所述网卡根据所述数据包的分流策略,将所述数据包分流到所述第一协议栈实例。
12.根据权利要求9所述的装置,其特征在于,所述装置,还包括:
识别模块,用于识别所述APP指示创建所述目标socket时所采用的方式;
则所述第一创建模块,具体用于若所述采用的方式为调用连接connect方式,则根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
13.根据权利要求9所述的装置,其特征在于,所述装置,还包括:
识别模块,用于识别所述APP指示创建所述目标socket时所采用的方式;
第二创建模块,用于若所述采用的方式为调用绑定bind方式和/或监听listen方式,则在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket;
所述第一创建模块,具体用于监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示,根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。
14.根据权利要求13所述的装置,其特征在于,所述装置,还包括:
第一处理模块,用于监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示之前,若收到TCP类型的数据包且未监听到TCP连接建立成功的指示,则由收到所述TCP类型的数据包的协议栈实例对所述TCP类型的数据包进行协议处理。
15.根据权利要求13所述的装置,其特征在于,所述装置,还包括:
第二处理模块,用于在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket之后,若收到UDP类型的数据包,则由收到所述UDP类型数据包的协议栈实例对所述UDP类型的数据包进行协议处理。
16.根据权利要求9所述的装置,其特征在于,所述装置,还包括:
发送模块,用于向所述应用APP发送已创建所述目标socket的伪结果。
CN201410043932.4A 2014-01-29 2014-01-29 基于并行协议栈实例的数据包处理方法和装置 Withdrawn CN104811432A (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201410043932.4A CN104811432A (zh) 2014-01-29 2014-01-29 基于并行协议栈实例的数据包处理方法和装置
KR1020167023319A KR20160113671A (ko) 2014-01-29 2014-11-20 병렬 프로토콜 스택 인스턴스에 기초하여 데이터 패킷을 처리하는 방법 및 장치
EP14880886.8A EP3091707A4 (en) 2014-01-29 2014-11-20 METHOD FOR PROCESSING DATA PACKETS AND DEVICE BASED ON PARALLEL PROTOCOL BATTERY INSTANCES
PCT/CN2014/091727 WO2015113437A1 (zh) 2014-01-29 2014-11-20 基于并行协议栈实例的数据包处理方法和装置
US15/222,741 US10218820B2 (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
CN201410043932.4A CN104811432A (zh) 2014-01-29 2014-01-29 基于并行协议栈实例的数据包处理方法和装置

Publications (1)

Publication Number Publication Date
CN104811432A true CN104811432A (zh) 2015-07-29

Family

ID=53695929

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410043932.4A Withdrawn CN104811432A (zh) 2014-01-29 2014-01-29 基于并行协议栈实例的数据包处理方法和装置

Country Status (5)

Country Link
US (1) US10218820B2 (zh)
EP (1) EP3091707A4 (zh)
KR (1) KR20160113671A (zh)
CN (1) CN104811432A (zh)
WO (1) WO2015113437A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104811431B (zh) 2014-01-29 2018-01-16 华为技术有限公司 基于并行协议栈实例的数据包处理方法和装置
KR102083142B1 (ko) 2016-09-05 2020-03-02 현대모비스 주식회사 커튼 에어백 장치
JP6917517B2 (ja) 2017-08-03 2021-08-11 ピエルブルグ ポンプ テクノロジー ゲーエムベーハーPierburg Pump Technology Gmbh 可変容量潤滑油ベーンポンプ
CN107612840B (zh) * 2017-09-26 2020-10-30 东软集团股份有限公司 一种四层负载均衡设备的数据处理方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757731B1 (en) 1999-02-25 2004-06-29 Nortel Networks Limited Apparatus and method for interfacing multiple protocol stacks in a communication network
US7647414B2 (en) * 2002-07-26 2010-01-12 Broadcom Corporation System and method for managing multiple stack environments
US8230090B2 (en) * 2002-09-11 2012-07-24 Broadcom Corporation System and method for TCP offloading and uploading
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
US7885257B2 (en) 2006-07-20 2011-02-08 Oracle America, Inc. Multiple virtual network stack instances using virtual network interface cards
DE602007013652D1 (de) * 2006-08-04 2011-05-19 Canon Kk Kommunikationsvorrichtung und Kommunikationssteuerungsverfahren
US7715428B2 (en) 2007-01-31 2010-05-11 International Business Machines Corporation Multicore communication processing
US8793117B1 (en) * 2008-04-16 2014-07-29 Scalable Network Technologies, Inc. System and method for virtualization of networking system software via emulation
CN101415025B (zh) 2008-09-28 2011-09-07 中控科技集团有限公司 网络数据处理的方法、装置和系统
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
CN101931584A (zh) 2009-06-22 2010-12-29 中兴通讯股份有限公司 支持同一系统中多种协议栈之间数据转发的方法和系统
CN101656677B (zh) 2009-09-18 2011-11-16 杭州迪普科技有限公司 一种报文分流处理方法及装置
CN201805555U (zh) * 2010-05-14 2011-04-20 中兴通讯股份有限公司 一种双模移动终端
CN102523208A (zh) 2011-12-06 2012-06-27 无锡聚云科技有限公司 多核架构下的应用层协议并行处理方法
CN102769575A (zh) * 2012-08-08 2012-11-07 南京中兴特种软件有限责任公司 一种用于智能网卡的流量负载均衡方法
CN102904729B (zh) * 2012-10-26 2018-05-01 曙光信息产业(北京)有限公司 根据协议、端口分流支持多应用的智能加速网卡

Also Published As

Publication number Publication date
US20160337482A1 (en) 2016-11-17
US10218820B2 (en) 2019-02-26
EP3091707A1 (en) 2016-11-09
KR20160113671A (ko) 2016-09-30
WO2015113437A1 (zh) 2015-08-06
EP3091707A4 (en) 2016-12-21

Similar Documents

Publication Publication Date Title
CN103051605B (zh) 一种数据包处理方法、装置和系统
CN102098227B (zh) 报文捕获方法及内核模块
CN106790221B (zh) 一种英特网协议安全IPSec协议加密方法和网络设备
CN109088820B (zh) 一种跨设备链路聚合方法、装置、计算装置和存储介质
CN105511954A (zh) 一种报文处理方法及装置
CN103139157B (zh) 一种基于socket的网络通信方法、装置及系统
CN109688069A (zh) 一种处理网络流量的方法、装置、设备及存储介质
CN103746977A (zh) 一种Linux服务器的连接方法和装置
CN104811432A (zh) 基于并行协议栈实例的数据包处理方法和装置
CN104967585A (zh) 一种远程调试移动终端的方法和装置
CN106571978B (zh) 数据包捕获方法及装置
CN111162935B (zh) 一种基于包级别数据分流的网络通信方法及系统
CN104811431A (zh) 基于并行协议栈实例的数据包处理方法和装置
CN104270362B (zh) 请求处理方法和装置
CN103166845A (zh) 数据处理方法和装置
CN115665057A (zh) 数据处理方法、装置、非易失性存储介质及计算机设备
CN114153607A (zh) 跨节点边缘计算负载均衡方法、设备、可读存储介质
WO2024159778A1 (zh) 一种主机调度方法、系统、设备及非易失性可读存储介质
CN107493254B (zh) Tcp报文转发的方法、装置和系统
CN113037532B (zh) 一种流媒体码流探测方法、装置、服务器和可读存储介质
US11595419B2 (en) Communication monitoring system, communication monitoring apparatus, and communication monitoring method
US9189370B2 (en) Smart terminal fuzzing apparatus and method using multi-node structure
CN104184823A (zh) 一种自动化任务调度的方法和系统
CN103297532B (zh) 一种用onvif协议进行直存的方法
CN106657092B (zh) 一种基于ssl/tls的业务处理方法及装置

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
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20150729