WO2018023988A1 - 一种网络报文处理方法、装置及网络服务器 - Google Patents

一种网络报文处理方法、装置及网络服务器 Download PDF

Info

Publication number
WO2018023988A1
WO2018023988A1 PCT/CN2017/078588 CN2017078588W WO2018023988A1 WO 2018023988 A1 WO2018023988 A1 WO 2018023988A1 CN 2017078588 W CN2017078588 W CN 2017078588W WO 2018023988 A1 WO2018023988 A1 WO 2018023988A1
Authority
WO
WIPO (PCT)
Prior art keywords
thread
tcp connection
tcp
quintuple
packet
Prior art date
Application number
PCT/CN2017/078588
Other languages
English (en)
French (fr)
Inventor
陈如杰
郑凯
黄茂青
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP21176705.8A priority Critical patent/EP3934209A1/en
Priority to EP17836172.1A priority patent/EP3481028B1/en
Publication of WO2018023988A1 publication Critical patent/WO2018023988A1/zh
Priority to US16/260,656 priority patent/US11218570B2/en
Priority to US17/538,940 priority patent/US11689646B2/en

Links

Images

Classifications

    • 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/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • 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
    • 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/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks

Landscapes

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

Abstract

本发明实施例公开了一种网络报文处理方法、装置及网络服务器。其中,该方法包括:接收客户端发送的第一传输控制协议TCP报文,第一TCP报文包括第一五元组;根据所述第一五元组,确定处理所述第一TCP报文的第一线程;使用所述第一线程处理所述第一TCP报文。实施本发明实施例可以根据TCP连接的状态来自适应处理网络报文,提高网络服务器处理TCP连接的效率。

Description

一种网络报文处理方法、装置及网络服务器
本申请要求于2016年7月30日提交中国专利局、申请号为201610619837.3、发明名称为“一种网络报文处理方法、装置及网络服务器”的发明专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明涉及智能终端技术领域,尤其涉及一种网络报文处理方法、装置及网络服务器。
背景技术
传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的传输层通信协议。TCP连接的主要工作流程如下:首先通过三次握手建立端到端的连接,然后进行数据传输,通讯完成后通过四次握手拆除连接。其中,处于建立过程或拆除过程的TCP连接称为非稳态TCP连接,处于数据传输过程的TCP连接称为稳态TCP连接。另外,TCPHIA定义了6中消息类型:URG,ACK,PSH,RST,SNY,FIN,这六种消息使每一条TCP连接都有可能在不同的状态中迁移。
随着移动互联网和物联网的快速发展,大量手持终端与物联网设备接入互联网,服务端的TCP模块或TCP处理进程通常需要处理海量的TCP连接,且每条TCP连接的状态会动态变化,因此服务端如何高效地处理TCP连接是一个富有挑战的课题。
发明内容
本发明实施例提供了一种网络报文处理方法、装置及网络服务器,可以根据TCP连接的状态来自适应处理网络报文,提高网络服务器处理TCP连接的效率。
本发明实施例第一方面公开了一种网络报文处理方法,包括:
接收客户端发送的第一传输控制协议TCP报文,所述第一TCP报文包括第一五元组;根据所述第一五元组,确定处理所述第一TCP报文的第一线程,其中,所述第一五元组用于标识所述第一TCP报文对应的TCP连接,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为控制线程或数据处理线程,所述控制线程用于处理非稳态TCP连接,所述数据处理线程用于处理稳态TCP连接;使用所述第一线程处理所述第一TCP报文。
其中,该第一TCP报文可以是用于建立TCP连接的握手报文、用于拆除TCP连接的握手报文或者数据报文;该第一五元组为该第一TCP报文携带的五元组,可以用于标识第一TCP报文对应的TCP连接,该第一五元组包括第一TCP报文中的源地址、源端口、目的地址、目的端口以及传输类型,该传输类型可以为TCP类型。
可见,当网络服务器接收到第一TCP报文后,网络服务器可以根据第一五元组确定处 理第一TCP报文的第一线程,如果第一线程为控制线程,则网络服务器可以使用控制线程来处理第一TCP报文。如果第一线程为数据处理线程,则网络服务器可以使用数据处理线程来处理第一TCP报文,从而可以根据TCP连接的状态来自适应处理网络报文。
需要说明的是,针对每条TCP连接,网络服务器均可以按照上述步骤来处理该TCP连接的TCP报文。在存在大量TCP连接的情况下,网络服务器根据TCP连接的状态来自适应处理网络报文,可以使得非稳态TCP连接与稳态TCP连接互相不影响,同时,网络服务器可以并行处理非稳态TCP连接的TCP报文以及稳态TCP连接的TCP报文,从而可以提高网络服务器TCP连接的效率。
在一个可能的实施方式中,所述根据所述第一五元组,确定处理所述第一TCP报文的第一线程包括:
根据所述第一五元组和和线程当前的映射关系,确定所述当前的映射关系下与所述第一五元组对应的第一线程,其中,所述第一五元组和所述线程的映射关系根据所述TCP连接的TCP连接状态的改变而变更。
可选的,在另一个可能的实现方式中,所述根据所述第一五元组,确定处理所述第一TCP报文的第一线程,包括:根据第一五元组判断第一TCP报文对应的TCP连接,从而确定该对应的TCP连接的状态,进而根据TCP连接的状态确定处理该第一TCP报文的第一线程。具体的,在该对应的TCP连接为稳态TCP连接的情况下,该第一线程为所述数据处理线程;在该对应的TCP连接为非稳态TCP连接的情况下,该第一线程为所述控制线程。
在一个可能的实施方式中,所述第一线程为所述控制线程,所述使用所述第一线程处理所述第一TCP报文后,所述TCP连接的TCP连接状态从所述非稳态TCP连接变为所述稳态TCP连接,所述方法还包括:
删除所述第一五元组与所述第一线程的映射关系;新建所述第一五元组与线程的映射关系,以使得所述第一五元组对应的线程变更为第二线程,所述第二线程为所述数据处理线程。
其中,第一五元组与控制线程的映射关系表示该TCP连接的TCP连接状态为非稳态TCP连接,网络服务器使用控制线程处理第一TCP报文后,该TCP连接的TCP连接状态从非稳态TCP连接变为稳态TCP连接,即该TCP连接的TCP连接状态发生变迁,此时,第一五元组与控制线程的映射关系已经不再适用,网络服务器需要删除第一五元组与控制线程的映射关系,新建第一五元组与线程的映射关系,以使得第一五元组对应的线程变更为数据处理线程,这样有利于新的TCP连接可以快速建立。
在一个可能的实施方式中,所述方法还包括:
接收所述客户端发送的第二TCP报文,所述第二TCP报文包括所述第一五元组;根据新建的所述第一五元组与线程的映射关系,确定所述第一五元组对应的线程为所述第二线程;使用所述第二线程处理所述第二TCP报文。
其中,新建的第一五元组与线程的映射关系可以理解为在接收到客户端发送的第二TCP报文时第一五元组和线程当前的映射关系。每次接收到客户端发送的TCP报文后,网络服务器都需要根据当前五元组和线程的映射关系来确定待使用的线程。
在一个可能的实施方式中,所述第一线程为所述数据处理线程,所述使用所述第一线 程处理所述第一TCP报文后,所述TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,所述方法还包括:
删除所述第一五元组与所述第一线程的映射关系;新建所述第一五元组与线程的映射关系,以使得所述第一五元组对应的线程变更为第三线程,所述第三线程为所述控制线程。
其中,第一五元组与数据处理线程的映射关系表示该TCP连接的TCP连接状态为稳态TCP连接,网络服务器使用数据处理线程处理第一TCP报文后,该TCP连接的TCP连接状态从稳态TCP连接变为非稳态TCP连接,即该TCP连接的TCP连接状态发生变迁,此时,第一五元组与数据处理线程的映射关系已经不再适用,网络服务器需要删除第一五元组与数据处理线程的映射关系,新建第一五元组与线程的映射关系,以使得第一五元组对应的线程变更为控制线程,这样有利于需要拆除的TCP连接得到有效释放。
在一个可能的实施方式中,所述方法还包括:
接收所述客户端发送的第三TCP报文,所述第三TCP报文包括所述第一五元组;根据新建的所述第一五元组与线程的映射关系,确定所述第一五元组对应的线程为所述第三线程;使用所述第三线程处理所述第三TCP报文。
其中,新建的第一五元组与线程的映射关系可以理解为在接收到客户端发送的第三TCP报文时第一五元组和线程当前的映射关系。每次接收到客户端发送的TCP报文后,网络服务器都需要根据当前五元组和线程的映射关系来确定待使用的线程。
在一个可能的实施方式中,所述控制线程为前控制线程或后控制线程,所述前控制线程用于处理非稳态TCP连接中所述TCP连接的建立过程,所述后控制线程用于处理非稳态TCP连接中所述TCP连接的拆除过程。
本发明实施例第二方面公开了一种网络报文处理方法,包括:
获得来自应用程序APP的TCP连接关闭请求,所述TCP连接关闭请求包括目标套接字标识,所述TCP连接关闭请求用于请求断开所述目标套接字标识所标识的TCP连接;根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程,其中,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为数据处理线程,所述数据处理线程用于处理稳态TCP连接;使用所述第一线程处理所述TCP连接关闭请求。
其中,当需要关闭TCP连接时,网络服务器可以通过应用程序APP来触发生成TCP连接关闭请求,当网络服务器获得来自APP的TCP连接关闭请求时,该TCP连接关闭请求携带的目标套接字标识与线程当前的映射关系为目标套接字标识与数据处理线程的映射关系,网络服务器可以使用数据处理线程处理该TCP连接关闭请求。
在一个可能的实施方式中,所述根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程包括:
根据所述目标套接字标识与线程当前的映射关系,确定所述当前的映射关系下与所述目标套接字标识对应的第一线程,其中,所述目标套接字标识与所述线程的映射关系根据所述目标套接字标识所标识的TCP连接的TCP连接状态的改变而变更。
可选的,在另一个可能的实现方式中,所述根据所述目标套接字标识,确定处理所述 TCP连接关闭请求的第一线程包括:确定所述目标套接字标识所标识对应的TCP连接,从而确定该对应的TCP连接的状态,进而根据TCP连接的状态确定处理该TCP连接关闭请求的第一线程。
在一个可能的实施方式中,所述使用所述第一线程处理所述TCP连接关闭请求后,所述TCP连接的TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,所述方法还包括:
删除所述目标套接字标识与所述第一线程的映射关系。
其中,目标套接字标识与数据处理线程的映射关系表示该TCP连接的TCP连接状态为稳态TCP连接,网络服务器使用数据处理线程处理该TCP连接关闭请求后,该TCP连接的TCP连接状态从该稳态TCP连接变为该非稳态TCP连接,即该TCP连接的TCP连接状态发生变迁,此时,目标套接字标识与数据处理线程的映射关系已经不再适用,网络服务器需要删除目标套接字标识与数据处理线程的映射关系。
本发明实施例第三方面公开了一种网络报文处理装置,所述网络报文处理装置包括用于执行本发明实施例第一方面任一方法的部分或全部步骤的功能单元。其中,该网络报文处理装置执行第一方面任一方法的部分或全部步骤时可以灵活地针对不同的场景来处理网络报文。
本发明实施例第四方面公开了一种网络报文处理装置,所述网络报文处理装置包括用于执行本发明实施例第二方面任一方法的部分或全部步骤的功能单元。其中,该网络报文处理装置执行第二方面任一方法的部分或全部步骤时可以灵活地针对不同的场景来处理网络报文。
本发明实施例第五方面公开了一种网络服务器,所述网络服务器包括:处理器、接收器以及存储器,所述存储器被配置用于存储指令,所述处理器被配置用于运行所述指令,所述处理器运行所述指令以执行本发明实施例第一方面任一方法的部分或全部步骤。其中,该网络服务器执行第一方面任一方法的部分或全部步骤时可以灵活地针对不同的场景来处理网络报文。
本发明实施例第六方面公开了一种网络服务器,所述网络服务器包括:处理器以及存储器,所述存储器被配置用于存储指令,所述处理器被配置用于运行所述指令,所述处理器运行所述指令以执行本发明实施例第二方面任一方法的部分或全部步骤。其中,该网络服务器执行第二方面任一方法的部分或全部步骤时可以灵活地针对不同的场景来处理网络报文。
本发明实施例第七方面公开了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序具体包括用于执行本发明实施例第一方面任一方法的部分或全部步骤的指令。
本发明实施例第八方面公开了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序具体包括用于执行本发明实施例第二方面任一方法的部分或全部步骤的指令。
在上述一些可能的实施方式中,所述第一线程为所述控制线程,所述使用所述第一线程处理所述第一TCP报文后,所述TCP连接的TCP连接状态从所述非稳态TCP连接变为所述稳态TCP连接,在网络服务器为该第一TCP报文对应的TCP连接分配第一套接字标识的情况下,所述方法还包括:
确定所述第一五元组对应的第一套接字标识;删除所述第一套接字标识与所述第一线程的映射关系;新建所述第一套接字标识与线程的映射关系,以使得所述第一套接字标识对应的线程变更为第二线程,所述第二线程为所述数据处理线程。
在该可选的实施方式中,网络服务器使用第一线程处理第一TCP报文之后,网络服务器可以为第一TCP报文对应的TCP连接分配第一套接字标识,其中,第一五元组和第一套接字标识均用于标识第一TCP报文对应的TCP连接,当该TCP连接的TCP连接状态从非稳态TCP连接变为稳态TCP连接后,网络服务器同样需要更新第一套接字标识与线程的映射关系。
在一些可能的实施方式中,所述第一线程为所述数据处理线程,所述使用所述第一线程处理所述第一TCP报文后,所述TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,在网络服务器为该第一TCP报文对应的TCP连接分配第一套接字标识的情况下,所述方法还包括:
确定所述第一五元组对应的第一套接字标识;删除所述第一套接字标识与所述第一线程的映射关系;新建所述第一套接字标识与线程的映射关系,以使得所述第一套接字标识对应的线程变更为第三线程,所述第三线程为所述控制线程。
在该可选的实施方式中,网络服务器使用第一线程处理第一TCP报文之后,网络服务器可以为第一TCP报文对应的TCP连接分配第一套接字标识,其中,第一五元组和第一套接字标识均用于标识第一TCP报文对应的TCP连接,当该TCP连接的TCP连接状态从稳态TCP连接变为非稳态TCP连接后,网络服务器同样需要更新第一套接字标识与线程的映射关系。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1.1是本发明实施例公开的一种客户端与网络服务器之间的网络架构示意图;
图1.2是本发明实施例公开的一种客户端与网络服务器之间的TCP消息交互的流程示意图;
图2是本发明实施例公开的一种网络报文处理方法的流程示意图;
图3是本发明实施例公开的另一种网络报文处理方法的流程示意图;
图4是本发明实施例公开的另一种网络报文处理方法的流程示意图;
图5是本发明实施例公开的一种网络报文处理装置的结构示意图;
图6是本发明实施例公开的一种客户端与网络服务器之间交互的示意图;
图7是本发明实施例公开的另一种客户端与网络服务器之间交互的示意图;
图8是本发明实施例公开的另一种客户端与网络服务器之间交互的示意图;
图9是本发明实施例公开的另一种网络报文处理装置的结构示意图;
图10是本发明实施例公开的另一种网络报文处理装置的结构示意图;
图11是本发明实施例公开的一种网络服务器的结构示意图;
图12是本发明实施例公开的另一种网络服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例公开了一种网络报文处理方法、装置及网络服务器,可以灵活地针对不同的场景来处理网络报文。以下分别进行详细说明。
为了更好的理解本发明实施例,下面先对本发明实施例公开的一种客户端与网络服务器之间的网络架构示意图进行描述。
请参阅图1.1,图1.1是本发明实施例公开的一种客户端与网络服务器之间的网络架构示意图。如图1.1所示,该网络架构包括客户端以及网络服务器,其中,客户端与网络服务器之间可以通过网络进行交互,比如:TCP消息的交互。本领域技术人员可以理解,虽然图1.1中只示出了一个客户端,但本发明实施例中不局限于图1.1所示的,还可以包括比图1.1所示的更多的客户端。
其中,客户端可以包括但不限于智能手机、笔记本电脑、个人计算机(Personal Computer,PC)、个人数字助理(Personal Digital Assistant,PDA)、移动互联网设备(Mobile Internet Device,MID)、智能穿戴设备(如智能手表、智能手环)等各类用户设备。
其中,网络服务器是指网络环境下能为用户提供集中计算、信息发表及数据管理等服务的专用设备,比如:专用计算机。网络服务器可以包括:网络接口卡(Network Information Center,NIC)、网络报文分发(Dispatcher)模块、网络之间互连的协议(Internet Protocol,IP)模块、传输控制协议(Transmission Control Protocol,TCP)模块、应用程序(Application,APP)模块。其中,NIC主要用于实现网络服务器与客户端之间TCP报文的传输,客户端发送的TCP报文经NIC传输给网络服务器,网络服务器中APP下发的TCP报文经NIC传输给客户端,Dispatcher模块具体可以为用于实现维护五元组与线程之间的映射关系以及根据五元组与线程之间的映射关系将网络报文分发到对应的线程去处理等功能的线程的集合;IP模块具体可以为用于实现接收来自Dispatcher模块的TCP报文并将TCP报文发送给TCP模块,以及接收来自TCP模块的TCP报文并将TCP报文发送给Dispatcher模块等功能的线程的集合;TCP模块具体可以为用于实现对TCP报文的处理以及更新TCP连接的TCP连接状态等功能的线程的集合;此外,TCP模块还包括套接字(Socket)模块,该Socket模块具体可以为用于实现维护套接字标识(Socket ID)与线程之间的映射关系以及根据套 接字标识与线程之间的映射关系将来自APP的报文或操作请求分发到对应的线程去处理等功能的线程的集合。其中,网络上的两个程序通过一个双向的通信连接实现数据交换,这个连接的一端可以称为套接字,其中,两个程序指客户端上的程序以及服务器上的程序;在程序中用来标识一个套接字的变量值可以称为套接字标识。
请一并参见图1.2,图1.2是本发明实施例公开的一种客户端与网络服务器之间的TCP消息交互的流程示意图。
其中,TCP是一种面向连接的传输层通信协议。TCP连接流程如下:首先通过三次握手建立端到端的连接,然后进行数据传输,通讯完成后通过四次握手拆除连接。如图1.2所示,建立一个TCP连接需要三次握手,具体的,第一次握手中,客户端向网络服务器发送SYN=1,Seq=X等消息,客户端进入同步系列码发送SYN_SEND状态,其中,SYN表示同步系列码,Seq表示系列码;网络服务器接收到客户端发送的SYN消息后,在第二次握手中,网络服务器向客户端返回SYN=1,ACK=X+1,Seq=Y等消息,网络服务器进入同步系列码接收SYN_RECV状态,其中,ACK表示字段有效确认;客户端收到网络服务器发送的SYN消息后,在第三次握手中,客户端向网络服务器发送ACK=Y+1,Seq=Z等消息,客户端进入连接成功Established状态。三次握手完成,客户端与网络服务器之间就可以开始传输数据Data了。而拆除一个TCP连接需要四次握手,具体的,第一次握手中,客户端向网络服务器发送FIN=1,ACK=Z,Seq=X等消息,进入请求断开连接FIN_WAIT1状态,其中,FIN表示再没有发送者的数据;网络服务器接收到客户端发送的FIN消息后,在第二次握手中,网络服务器向客户端返回ACK=X+1,Seq=Z等消息,进入关闭等待CLOSE_WAIT状态,在第三次握手中,网络服务器向客户端返回FIN=1,ACK=X,Seq=Y等消息,网络服务器进入最后确认LAST_ACK状态,客户端收到网络服务器发送的ACK以及FIN消息后,在第四次握手中,客户端向网络服务器发送ACK=Y+1,Seq=X等消息,客户端进入关闭CLOSED状态,网络服务器接收到客户端发送的ACK消息就进入关闭CLOSED状态,四次握手完成后,客户端与网络服务器之间建立的TCP连接就拆除了。可选的,也可以通过RST连接复位消息来快速关闭TCP连接。
从上述可以看出,客户端与网络服务器之间的TCP连接的TCP连接状态主要分为非稳态TCP连接或稳态TCP连接,该非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,该稳态TCP连接表示处于数据传输过程的TCP连接。
在图1.2所示的流程图中,当网络服务器接收到客户端发送的第一TCP报文后,网络服务器可以根据第一五元组和线程当前的映射关系,使用不同的线程来处理第一TCP报文。如果第一TCP报文携带的第一五元组和线程当前的映射关系为第一五元组和控制线程的映射关系,则网络服务器可以使用控制线程处理第一TCP报文,如果第一TCP报文携带的第一五元组和线程当前的映射关系为第一五元组和数据处理线程的映射关系,则网络服务器可以使用数据处理线程处理第一TCP报文,从而可以灵活地针对不同的场景来处理网络报文。
此外,本发明实施例中,系统中存在多个资源独立并且可以并行被执行的TCP模块,该TCP模块可以通过支持多线程资源共享访问方式被多个线程并行执行,也可以通过资源隔离方式被多个线程并行执行。此外,一个进程可以包括多个线程,该TCP模块也可以通 过支持多进程资源共享访问方式被多个进程包括的线程来并行执行,也可以通过资源隔离方式被多个进程包括的线程并行执行。其中,线程主要分为两种,控制线程和数据处理线程,控制线程用于处理非稳态TCP连接,数据处理线程用于处理稳态TCP连接。客户端与网络服务器之间交互的TCP报文可以按照五元组与线程的映射关系或套接字标识与线程的映射关系把TCP报文分发到不同的线程(控制线程或数据处理线程),使线程可以分别处理不同TCP连接状态的TCP连接。
这样,控制线程只负责非稳态TCP连接(即处于建立过程或拆除过程的TCP连接),数据处理线程只负责稳态TCP连接(即处于数据传输过程的TCP连接),大量的数据传输不会对TCP连接的建立与拆除有影响,大量TCP连接的建立与拆除不会对数据传输有影响,网络服务器可以并行地对多条TCP连接的TCP报文进行处理,从而可以提高网络报文处理的效率。
请参见图2,图2是本发明实施例公开的一种网络报文处理方法的流程示意图,其中,该网络报文处理方法应用于网络服务器。如图2所示,该网络报文处理方法可以包括以下步骤:
201、网络服务器接收客户端发送的第一传输控制协议TCP报文。
本发明实施例中,网络服务器可以经由NIC接收客户端发送的第一传输控制协议TCP报文,进一步地,网络服务器可以解析第一TCP报文,获得该第一TCP报文中携带的五元组,即第一五元组。
其中,该第一TCP报文可以是客户端请求建立TCP连接的握手报文,比如SYN报文、ACK报文;或者,该第一TCP报文可以是客户端与网络服务器之间传输的数据报文;或者,该第一TCP报文可以是客户端请求拆除TCP连接的握手报文,比如:FIN报文、ACK报文等。
其中,第一五元组包括第一TCP报文中的源地址、源端口、目的地址、目的端口以及传输类型,其中,传输类型可以为TCP类型。第一五元组可以用来标识第一TCP连接。举例来说,192.168.1.1 10000 TCP 121.14.88.76 80就构成了一个五元组,其意义是,一个IP地址为192.168.1.1的客户端通过端口10000,利用TCP协议,和IP地址为121.14.88.76,端口为80的客户端进行连接。
202、网络服务器根据第一五元组,确定处理第一TCP报文的第一线程。
其中,该第一五元组用于标识第一TCP报文对应的TCP连接,TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,稳态TCP连接表示处于数据传输过程的TCP连接,第一线程为控制线程或数据处理线程,控制线程用于处理非稳态TCP连接,数据处理线程用于处理稳态TCP连接。
本发明实施例中,网络服务器根据第一五元组,确定处理第一TCP报文的第一线程的方式可以包括但不限于以下2种方式。
可选的,网络服务器根据第一五元组,确定处理第一TCP报文的第一线程的方式具体可以为:
根据所述第一五元组判断所述第一TCP报文对应的TCP连接,并确定所述TCP连接 的状态;
根据所述TCP连接的状态确定处理所述第一TCP报文的第一线程。
在该可选的实施方式中,由于五元组可以用于标识TCP报文对应的TCP连接,因此,网络服务器可以根据所述第一五元组判断所述第一TCP报文对应的TCP连接,进一步地,可以查询系统中记录的TCP连接的TCP连接状态,这样,网络服务器就可以根据TCP连接的TCP连接状态确定处理第一TCP报文的第一线程了。具体的,在该TCP连接状态为稳态TCP连接的情况下,该第一线程为所述数据处理线程;在该TCP连接状态为非稳态TCP连接的情况下,该第一线程为所述控制线程。
可选的,网络服务器根据第一五元组,确定处理第一TCP报文的第一线程的方式具体可以为:
根据所述第一五元组和线程当前的映射关系,确定所述当前的映射关系下与所述第一五元组对应的第一线程,其中,所述第一五元组和所述线程的映射关系根据所述TCP连接的TCP连接状态的改变而变更。
其中,在该可选的实施方式中,具体描述请参见图3中所描述的,在此不再赘述。
203、网络服务器使用第一线程处理第一TCP报文。
具体的,网络服务器可以通过Dispatcher模块将第一TCP报文分发到第一线程的消息上行队列,第一线程通过TCP模块来处理第一TCP报文。
在图2所描述的方法流程中,当网络服务器接收到第一TCP报文后,网络服务器可以根据第一五元组确定处理第一TCP报文的第一线程,如果第一线程为控制线程,则网络服务器可以使用控制线程来处理第一TCP报文。如果第一线程为数据处理线程,则网络服务器可以使用数据处理线程来处理第一TCP报文,从而可以根据TCP连接的状态来自适应处理网络报文。
此外,针对每条TCP连接,网络服务器均可以按照上述步骤来处理该TCP连接的TCP报文。在存在大量TCP连接的情况下,网络服务器根据TCP连接的状态来自适应处理网络报文,可以使得非稳态TCP连接与稳态TCP连接互相不影响,同时,网络服务器可以并行处理非稳态TCP连接的TCP报文以及稳态TCP连接的TCP报文,从而可以提高网络服务器TCP连接的效率。
请参见图3,图3是本发明实施例公开的一种网络报文处理方法的流程示意图,其中,该网络报文处理方法应用于网络服务器。如图3所示,该网络报文处理方法可以包括以下步骤:
301、网络服务器接收客户端发送的第一传输控制协议TCP报文。
302、网络服务器根据第一五元组和线程当前的映射关系,确定当前的映射关系下与第一五元组对应的第一线程。
其中,第一五元组用于标识第一TCP报文对应的TCP连接,第一五元组和线程的映射关系根据TCP连接的TCP连接状态的改变而变更,TCP连接状态为非稳态TCP连接或稳态TCP连接,非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,稳态TCP连接表示处于数据传输过程的TCP连接,线程为控制线程或数据处理线程,控制线程用于处理 非稳态TCP连接,数据处理线程用于处理稳态TCP连接。也就是说,第一五元组对应的线程可以为控制线程,或者,第一五元组对应的线程可以为数据处理线程。
其中,具体的,控制线程为前控制线程或后控制线程,前控制线程用于处理非稳态TCP连接中TCP连接的建立过程,后控制线程用于处理非稳态TCP连接中TCP连接的拆除过程。
本发明实施例中,网络服务器获得第一TCP报文携带的第一五元组之后,网络服务器可以查询第一五元组和线程当前的映射关系,以确定当前的映射关系下与第一五元组对应的第一线程。
作为一种可选的实施方式,在第一TCP报文为客户端发送的第一个报文(通常为用于请求建立TCP连接的第一次握手报文)的情况下,网络服务器可能查询不到第一五元组和线程当前的映射关系,此时,网络服务器可以使用默认线程来处理该第一TCP报文,其中,该默认线程可以是系统设置的控制线程,或者,该默认线程可以是用户设置的控制线程。
303、网络服务器使用第一线程处理第一TCP报文。
具体的,网络服务器可以通过Dispatcher模块将第一TCP报文分发到第一线程的消息上行队列,第一线程通过TCP模块来处理第一TCP报文。
本发明实施例中,可选的,若第一线程为控制线程,网络服务器使用第一线程处理第一TCP报文后,TCP连接的TCP连接状态从非稳态TCP连接变为稳态TCP连接,则执行步骤204~208,若第一线程为数据处理线程,网络服务器使用第一线程处理第一TCP报文后,TCP连接的TCP连接状态从稳态TCP连接变为非稳态TCP连接,则执行步骤209~213。
本发明实施例中,网络服务器使用第一线程处理第一TCP报文之前以及网络服务器使用第一线程处理第一TCP报文之后,该第一TCP报文对应的TCP连接的TCP连接状态可以发生改变,也可以不发生改变。
举例来说,该第一TCP报文为用于请求建立TCP连接的第三次握手报文,该第三次握手报文被第一线程处理处理之前处于建立过程的TCP连接,属于非稳态TCP连接,该第三次握手报文被第一线程处理处理之后,TCP连接建立过程结束,即已经成功建立了TCP连接,可以进行数据传输了,这时TCP连接的TCP连接状态就变为了稳态TCP连接。即网络服务器使用第一线程处理用于请求建立TCP连接的第三次握手报文后,该TCP连接的TCP连接状态就由非稳态TCP连接变为稳态TCP连接了。
又举例来说,该第一TCP报文为用于请求建立TCP连接的第一次握手报文或第二次握手报文,该第一次握手报文或第二次握手报文被第一线程处理之前处于建立过程的TCP连接,属于非稳态TCP连接,该第一次握手报文或第二次握手报文被第一线程处理之后仍处于TCP连接建立过程,属于非稳态TCP连接,即在这种情况下,网络服务器使用第一线程处理用于请求建立TCP连接的第一次握手报文或第二次握手报文后,该TCP连接的TCP连接状态未发生变化,仍然处于非稳态TCP连接。
304、第一线程为控制线程,网络服务器使用第一线程处理第一TCP报文后,TCP连接的TCP连接状态从非稳态TCP连接变为稳态TCP连接,网络服务器删除第一五元组与第一线程的映射关系。
本发明实施例中,网络服务器使用第一线程处理第一TCP报文前后,如果该第一TCP 报文对应的TCP连接状态由非稳态TCP连接变为稳态TCP连接,而稳态TCP连接是由数据处理线程来处理的,此时,第一五元组与第一线程的映射关系已经不适用,网络服务器需要删除第一五元组与第一线程的映射关系。
305、网络服务器新建第一五元组与线程的映射关系,以使得第一五元组对应的线程变更为第二线程。
其中,第二线程为数据处理线程。
本发明实施例中,网络服务器删除第一五元组与第一线程的映射关系的同时,网络服务器还需要新建第一五元组与线程的映射关系,以使得第一五元组对应的线程变更为第二线程,第二线程为数据处理线程。
具体的,网络服务器可以通过Dispatcher模块新建第一五元组与线程的映射关系,以使得第一五元组对应的线程变更为第二线程,第二线程为数据处理线程。
这样,针对该TCP连接的后续TCP报文就可以根据新建的第一五元组与线程的映射关系来确定第二线程,并使用第二线程来处理后续TCP报文。
作为另一种可选的实施方式,本发明实施例中,若系统中的TCP模块通过资源隔离方式被多个线程(控制线程或数据处理线程)并行执行,网络服务器可以将与该第一五元组匹配的TCP连接的TCP连接资源从控制线程迁移到数据处理线程,其中,该TCP连接资源是指存放一条TCP连接的程序结构体,该程序结构体可以保存TCP连接的控制块信息、连接状态、相关定时器、发送缓冲区以及接收缓冲区等中的任一个信息。
作为另一种可选的实施方式,在网络服务器为该第一TCP报文对应的TCP连接分配第一套接字标识的情况下,网络服务器还需要执行以下步骤:
11)确定第一五元组对应的第一套接字标识;
12)删除第一套接字标识与第一线程的映射关系;
13)新建第一套接字标识与线程的映射关系,以使得第一套接字标识对应的线程变更为第二线程,该第二线程为数据处理线程。
在该可选的实施方式中,网络服务器使用第一线程处理第一TCP报文之后,网络服务器可以为第一TCP报文对应的TCP连接分配第一套接字标识,其中,第一五元组和第一套接字标识均用于标识第一TCP报文对应的TCP连接。当该TCP连接的TCP连接状态发生变迁后,网络服务器同样需要更新第一套接字标识与线程的映射关系。
具体的,网络服务器可以通过Socket模块删除第一套接字标识与第一线程的映射关系,以及通过Socket模块新建第一套接字标识与线程的映射关系。
306、网络服务器接收客户端发送的第二TCP报文。
其中,第二TCP报文包括第一五元组。可以看出,第二TCP报文与第一TCP报文属于同一条TCP连接。该第二TCP报文可以看成是第一TCP报文被处理后的该TCP连接的后续TCP报文。
307、网络服务器根据新建的第一五元组与线程的映射关系,确定第一五元组对应的线程为第二线程。
本发明实施例中,第一TCP报文被第一线程处理后,新建的第一五元组与线程的映射关系为第一五元组与第二线程的映射关系,故网络服务器接收客户端发送的第二TCP报文, 根据新建的第一五元组与线程的映射关系确定的第一五元组对应的线程为第二线程,该第二线程为数据处理线程。
其中,新建的第一五元组与线程的映射关系可以理解为在接收到客户端发送的第二TCP报文时第一五元组和线程当前的映射关系。每次接收到客户端发送的TCP报文后,网络服务器都需要根据当前五元组和线程的映射关系来确定待使用的线程。
308、网络服务器使用第二线程处理第二TCP报文,并结束本流程。
具体的,网络服务器可以通过Dispatcher模块将第二TCP报文分发到第二线程的消息上行队列,第二线程通过TCP模块来处理第二TCP报文。
作为另一种可选的实施方式,网络服务器使用第二线程处理第二TCP报文之后,若TCP连接的TCP连接状态发生变迁,网络服务器同样需要按照上述步骤进行相应地处理,在此不再重复赘述。
309、第一线程为数据处理线程,网络服务器使用第一线程处理第一TCP报文后,TCP连接的TCP连接状态从稳态TCP连接变为非稳态TCP连接,网络服务器删除第一五元组与第一线程的映射关系。
本发明实施例中,网络服务器使用第一线程处理第一TCP报文之前以及网络服务器使用第一线程处理第一TCP报文之后,该第一TCP报文对应的TCP连接的TCP连接状态可以发生改变,也可以不发生改变。
举例来说,该第一TCP报文为用于请求拆除TCP连接的握手报文,该用于请求拆除TCP连接的握手报文被第一线程处理之前处于数据传输过程的TCP连接,属于稳态TCP连接,该用于请求拆除TCP连接的握手报文被第一线程处理之后处于拆除过程的TCP连接,属于非稳态TCP连接,即网络服务器使用第一线程处理用于请求拆除TCP连接的握手报文后,该TCP连接的TCP连接状态就由稳态TCP连接变为非稳态TCP连接了。
又举例来说,该第一TCP报文为数据传输报文,该数据传输报文被第一线程处理之前处于数据传输过程的TCP连接,属于稳态TCP连接,该数据传输报文被第一线程处理之后仍处于数据传输过程的TCP连接,仍属于稳态TCP连接,即在这种情况下,网络服务器使用第一线程处理数据传输报文后,该TCP连接的TCP连接状态未发生变化,仍然处于稳态TCP连接。
本发明实施例中,网络服务器使用第一线程处理第一TCP报文前后,如果该第一TCP报文对应的TCP连接状态由稳态TCP连接变为非稳态TCP连接,而非稳态TCP连接是由控制线程来处理的,此时,第一五元组与第一线程的映射关系已经不适用,网络服务器需要删除第一五元组与第一线程的映射关系。
310、网络服务器新建第一五元组与线程的映射关系,以使得第一五元组对应的线程变更为第三线程。
其中,第三线程为控制线程。
本发明实施例中,网络服务器删除第一五元组与第一线程的映射关系的同时,网络服务器还需要新建第一五元组与线程的映射关系,以使得第一五元组对应的线程变更为第三线程,第三线程为控制线程。
具体的,网络服务器可以通过Dispatcher模块新建第一五元组与线程的映射关系,以 使得第一五元组对应的线程变更为第三线程,第三线程为控制线程。
这样,针对该TCP连接的后续TCP报文就可以根据新建的第一五元组与线程的映射关系来确定第三线程,并使用第三线程来处理后续TCP报文。
作为另一种可选的实施方式,在网络服务器为该第一TCP报文对应的TCP连接分配第一套接字标识的情况下,网络服务器还需要执行以下步骤:
21)确定第一五元组对应的第一套接字标识;
22)删除第一套接字标识与第一线程的映射关系;
23)新建第一套接字标识与线程的映射关系,以使得第一套接字标识对应的线程变更为第三线程,该第三线程为控制线程。
在该可选的实施方式中,网络服务器使用第一线程处理第一TCP报文之后,网络服务器可以为第一TCP报文对应的TCP连接分配第一套接字标识,其中,第一五元组和第一套接字标识均用于标识第一TCP报文对应的TCP连接。当该TCP连接的TCP连接状态发生变迁后,网络服务器同样需要更新第一套接字标识与线程的映射关系。
具体的,网络服务器可以通过Socket模块删除第一套接字标识与第一线程的映射关系,以及通过Socket模块新建第一套接字标识与线程的映射关系。
311、网络服务器接收客户端发送的第三TCP报文。
其中,第三TCP报文包括第一五元组。可以看出,第三TCP报文与第一TCP报文属于同一条TCP连接。该第三TCP报文可以看成是第一TCP报文被处理后的该TCP连接的后续TCP报文。
312、网络服务器根据新建的第一五元组与线程的映射关系,确定第一五元组对应的线程为第三线程。
本发明实施例中,第一TCP报文被第一线程处理后,新建的第一五元组与线程的映射关系为第一五元组与第三线程的映射关系,故网络服务器接收客户端发送的第三TCP报文,根据新建的第一五元组与线程的映射关系确定的第一五元组对应的线程为第三线程,该第三线程为控制线程。
其中,新建的第一五元组与线程的映射关系可以理解为在接收到客户端发送的第三TCP报文时第一五元组和线程当前的映射关系。每次接收到客户端发送的TCP报文后,网络服务器都需要根据当前五元组和线程的映射关系来确定待使用的线程。
313、网络服务器使用第三线程处理第三TCP报文。
作为另一种可选的实施方式,网络服务器可以将处理相同TCP连接状态的线程组成一个集合,比如:控制线程集合,数据处理线程集合,其中,控制线程集合包括多个控制线程,该控制线程集合中的每个控制线程均用来处理非稳态TCP连接,数据处理线程集合包括多个数据处理线程,该数据处理线程集合中的每个数据处理线程均用来处理稳态TCP连接。网络服务器在建立五元组与控制线程之间的映射关系时,可以根据预设规则从控制线程集合中选取一个目标控制线程来建立映射关系,同理,网络服务器在建立五元组与数据处理线程之间的映射关系时,可以根据预设规则从数据处理线程集合中选取一个目标数据处理线程来建立映射关系。其中,该预设规则可以为负载(如CPU占用内存等)最轻规则。
此外,控制线程集合包括的控制线程的数量以及数据处理线程集合包括的数据处理线程的数量可以按照应用场景的差异化来设置不同的比例,比如:用户数据的传输在应用中需要优先处理,在初始化TCP协议栈的时候,可以将负责处理稳态TCP连接的数据处理线程集合包括的数据处理线程的数量配置多些;又比如:新连接接入能力在应用中需要优先处理,在初始化TCP协议栈的时候,可以将负责处理非稳态TCP连接的控制线程集合包括的控制线程的数量配置多些。
同时,还可以根据报文流量动态配置。比如某一时段,网络服务器需要处理大量的TCP连接接入,可以将负责处理非稳态TCP连接的控制线程集合包括的控制线程的数量配置多些;如果网络服务器遇到大量用户数据需要处理,可以将负责处理稳态TCP连接的数据处理线程集合包括的数据处理线程的数量配置多些。
可见,在该可选的实施方式中,网络服务器不仅可以根据用户不同的需求设置控制线程集合包括的控制线程的数量以及数据处理线程集合包括的数据处理线程的数量,同时,在建立映射关系时还可以根据预设规则来选取目标控制线程或目标数据处理线程,在支持并行CPU计算能力的系统中,不仅可以使TCP协议栈能够高效地利用CPU资源,还可以支持更高的TCP连接并发能力、更高效的TCP连接处理能力以及更高效的用户报文处理能力。
作为另一种可选的实施方式,TCP连接状态(非稳态TCP连接和稳态TCP连接)还可以进一步划分:稳态前TCP连接、稳态TCP连接、稳态后TCP连接三种状态。稳态前TCP连接指TCP连接成功建立前发生状态迁移的所有连接状态,即处于建立过程的TCP连接,稳态TCP连接为处于数据传输过程的TCP连接,稳态后TCP连接指TCP连接状态从稳态TCP连接发生状态迁移后的其它所有状态,即处于拆除过程的TCP连接。
此外,可选的,系统中的控制线程可以划分为前控制线程或后控制线程,前控制线程用于处理非稳态TCP连接中TCP连接的建立过程,后控制线程用于处理非稳态TCP连接中TCP连接的拆除过程。这样,系统中的线程分工更加精细,有利于系统支持更高的TCP连接并发能力以及更高效的TCP报文处理能力。
在图3所描述的方法流程中,当网络服务器接收到第一TCP报文后,网络服务器可以根据第一五元组确定处理第一TCP报文的第一线程,如果第一线程为控制线程,则网络服务器可以使用控制线程来处理第一TCP报文。如果第一线程为数据处理线程,则网络服务器可以使用数据处理线程来处理第一TCP报文,从而可以根据TCP连接的状态来自适应处理网络报文。
此外,针对每条TCP连接,网络服务器均可以按照上述步骤来处理该TCP连接的TCP报文。在存在大量TCP连接的情况下,网络服务器根据TCP连接的状态来自适应处理网络报文,可以使得非稳态TCP连接与稳态TCP连接互相不影响,同时,网络服务器可以并行处理非稳态TCP连接的TCP报文以及稳态TCP连接的TCP报文,从而可以提高网络服务器TCP连接的效率。
请参见图4,图4是本发明实施例公开的另一种网络报文处理方法的流程示意图,其中,该网络报文处理方法应用于网络服务器。如图4所示,该网络报文处理方法可以包括以下步骤。
401、网络服务器获得来自应用程序APP的TCP连接关闭请求。
本发明实施例中,当网络服务器和客户端之间的数据传输完毕之后,需要拆除TCP连接,此时,可以通过应用程序APP模块来触发产生TCP连接关闭请求,其中,该TCP连接关闭请求包括目标套接字标识,TCP连接关闭请求用于请求断开目标套接字标识所标识的TCP连接;
402、网络服务器根据目标套接字标识,确定处理TCP连接关闭请求的第一线程。
其中,TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,稳态TCP连接表示处于数据传输过程的TCP连接,第一线程为数据处理线程,数据处理线程用于处理稳态TCP连接。
本发明实施例中,网络服务器根据目标套接字标识,确定处理TCP连接关闭请求的第一线程的方式可以包括但不限于以下2种方式。
可选的,网络服务器根据目标套接字标识,确定处理TCP连接关闭请求的方式具体可以为:
确定所述目标套接字标识所标识对应的TCP连接,并确定所述TCP连接的状态;
根据所述TCP连接的状态确定处理所述TCP连接关闭请求的第一线程。
在该可选的实施方式中,由于套接字标识可以用于标识TCP连接,因此,网络服务器可以根据目标套接字标识确定该目标套接字标识所标识的TCP连接,进一步地,可以查询系统中记录的TCP连接的TCP连接状态,这样,网络服务器就可以根据TCP连接的TCP连接状态确定处理TCP连接关闭请求的第一线程了。
可选的,网络服务器根据第一五元组,确定处理第一TCP报文的第一线程的方式具体可以为:
网络服务器根据目标套接字标识与线程当前的映射关系,确定当前的映射关系下与目标套接字标识对应的第一线程。
在该可选的实施方式中,网络服务器获得来自应用程序APP的TCP连接关闭请求之后,就可以从该TCP连接关闭请求中获得目标套接字标识,并从目标套接字标识与线程当前的映射关系中,查询当前的映射关系下与目标套接字标识对应的第一线程。
其中,目标套接字标识与线程的映射关系根据目标套接字标识所标识的TCP连接的TCP连接状态的改变而变更,该TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,稳态TCP连接表示处于数据传输过程的TCP连接,第一线程为数据处理线程,数据处理线程用于处理稳态TCP连接。
403、网络服务器使用第一线程处理TCP连接关闭请求。
作为一种可选的实施方式,在网络服务器根据目标套接字标识与线程当前的映射关系,确定当前的映射关系下与目标套接字标识对应的第一线程的情况下,网络服务器使用第一线程处理TCP连接关闭请求后,TCP连接的TCP连接状态从稳态TCP连接变为非稳态TCP连接,该方法还可以包括以下步骤:
网络服务器删除目标套接字标识与第一线程的映射关系。
在该可选的实施方式中,在网络服务器获得来自应用程序APP的TCP连接关闭请求之 前,网络服务器和客户端之间的数据传输过程的TCP连接属于TCP稳态连接。在网络服务器使用第一线程处理TCP连接关闭请求之后,该TCP连接的TCP连接状态将从稳态TCP连接变为非稳态TCP连接,TCP连接状态发生了改变,此时,原来的目标套接字标识与第一线程的映射关系已经不适用,非稳态TCP连接是由控制线程来处理的,该目标套接字标识所标识的TCP连接已经被拆除,网络服务器需要删除目标套接字标识与第一线程之间的映射关系。
具体的,网络服务器可以通过Socket模块删除目标套接字标识与第一线程之间的映射关系。
作为一种可选的实施方式,网络服务器还可以执行以下步骤:
11)确定目标套接字标识对应的目标五元组;
12)删除目标五元组与第一线程之间的映射关系。
在该可选的实施方式中,网络服务器处理TCP报文之后,网络服务器可以为TCP报文对应的TCP连接分配目标套接字标识,该TCP报文包括目标五元组。其中,目标五元组和目标套接字标识均用于标识TCP报文对应的TCP连接。针对同一条TCP连接,当网络服务器使用第一线程处理TCP连接关闭请求后,TCP连接状态从稳态TCP连接变为非稳态TCP连接时,该目标套接字标识所标识的TCP连接已经被拆除,由于目标五元组和目标套接字标识均用于标识同一条TCP连接,故网络服务器同样需要删除目标五元组与第一线程的映射关系。
在图4所描述的方法流程中,网络服务器可以根据目标套接字标识与线程当前的映射关系,确定当前的映射关系下与目标套接字标识对应的第一线程,并使用第一线程处理来自APP的TCP连接关闭请求,其中,该第一线程为数据处理线程,数据处理线程用于处理稳态TCP连接。这样,可以避免海量TCP连接的拆除对数据传输造成影响。
请参见图5,图5是本发明实施例公开的一种网络报文处理装置的结构示意图,其中,该网络报文处理装置用于执行图2或图3所描述的网络报文处理方法中的部分或全部步骤,具体请参见图2或图3的相关描述,在此不再赘述。如图5所示,该网络报文处理装置500可以包括:
接收单元501,用于接收客户端发送的第一传输控制协议TCP报文,所述第一TCP报文包括第一五元组;
确定单元502,用于根据所述第一五元组,确定处理所述第一TCP报文的第一线程,所述第一五元组用于标识所述第一TCP报文对应的TCP连接,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为控制线程或数据处理线程,所述控制线程用于处理非稳态TCP连接,所述数据处理线程用于处理稳态TCP连接;
可选的,所述确定单元502根据所述第一五元组,确定处理所述第一TCP报文的第一线程的方式具体为:
根据所述第一五元组和线程当前的映射关系,确定所述当前的映射关系下与所述第一 五元组对应的第一线程,其中,所述第一五元组和所述线程的映射关系根据所述TCP连接的TCP连接状态的改变而变更。
可选的,所述控制线程为前控制线程或后控制线程,所述前控制线程用于处理非稳态TCP连接中所述TCP连接的建立过程,所述后控制线程用于处理非稳态TCP连接中所述TCP连接的拆除过程。
处理单元503,用于使用所述第一线程处理所述第一TCP报文。
在图5所描述的网络报文处理装置500中,当接收单元501接收到第一TCP报文后,确定单元502可以根据第一五元组确定处理第一TCP报文的第一线程,如果第一线程为控制线程,则处理单元503可以使用控制线程来处理第一TCP报文。如果第一线程为数据处理线程,则处理单元503可以使用数据处理线程来处理第一TCP报文,从而可以根据TCP连接的状态来自适应处理网络报文。
此外,针对每条TCP连接,网络服务器均可以按照上述步骤来处理该TCP连接的TCP报文。在存在大量TCP连接的情况下,网络服务器根据TCP连接的状态来自适应处理网络报文,可以使得非稳态TCP连接与稳态TCP连接互相不影响,同时,网络服务器可以并行处理非稳态TCP连接的TCP报文以及稳态TCP连接的TCP报文,从而可以提高网络服务器TCP连接的效率。
请参见图6,图6是本发明实施例公开的一种客户端与网络服务器之间交互的示意图。如图6所示,包括客户端6011、客户端6012、网络服务器602,其中,网络服务器602包括APP模块6021、TCP模块6022、TCP模块6023、IP模块6024、IP模块6026、Dispatcher模块6026以及NIC模块6027,其中:
客户端6011与网络服务器602之间交互TCP报文对应的TCP连接为TCP连接1,客户端6012与网络服务器602之间交互TCP报文对应的TCP连接为TCP连接2,网络服务器602包括的NIC模块6027可以接收来自客户端6011的TCP报文,以及接收来自客户端6012的TCP报文,NIC模块6027接收到TCP报文之后,可以将TCP报文发送给Dispatcher模块6026。针对每个TCP报文,Dispatcher模块6026可以解析出TCP报文携带的五元组,并根据TCP报文携带的五元组,确定处理该TCP报文的线程,该线程可以为控制线程或数据处理线程,控制线程用于处理非稳态TCP连接,数据处理线程用于处理稳态TCP连接,进一步地,Dispatcher模块6026可以通过进程或线程之间的通信机制将该TCP报文分发到对应的线程,其中,一个进程可以包括多个线程。
比如:Dispatcher模块6026将来自客户端6011的TCP报文分发到控制线程,经IP模块6024上报给TCP模块6022处理,并通知APP6021模块处理后的结果。又比如:Dispatcher模块6026将来自客户端6012的TCP报文分发到数据处理线程,经IP模块6026上报给TCP模块6023处理,并通知APP模块6021处理后的结果。
需要说明的是,图6中只是示出了2个客户端,但本领域技术人员可以理解,还可以包括比图6所示更多的客户端,同理,还可以包括比图6所示更多的TCP连接。
可见,在存在大量TCP连接的情况下,网络服务器可以根据TCP连接的状态来自适应处理网络报文,可以使得非稳态TCP连接与稳态TCP连接互相不影响,同时,网络服务器 可以并行处理非稳态TCP连接的TCP报文以及稳态TCP连接的TCP报文,从而可以提高网络服务器TCP连接的效率。
请参见图7,图7是本发明实施例公开的另一种客户端与网络服务器之间交互的示意图。其中,如图7所示,包括客户端7011、客户端7012、网络服务器702,其中,网络服务器702包括APP模块7021、TCP模块7022、TCP模块7023、IP模块7024、IP模块7027、Dispatcher模块7027以及NIC模块7027,其中:图7与图6相比,各模块实现的功能以及各模块之间的交互均相同,不同的是,图7中网络服务器可以将处理相同TCP连接状态的线程组成一个集合,比如:控制线程集合,数据处理线程集合。
其中,控制线程集合包括多个控制线程,该控制线程集合中的每个控制线程均用来处理非稳态TCP连接,数据处理线程集合包括多个数据处理线程,该数据处理线程集合中的每个数据处理线程均用来处理稳态TCP连接。网络服务器在建立五元组与控制线程之间的映射关系时,可以根据预设规则从控制线程集合中选取一个目标控制线程来建立映射关系,同理,网络服务器在建立五元组与数据处理线程之间的映射关系时,可以根据预设规则从数据处理线程集合中选取一个目标数据处理线程来建立映射关系。其中,该预设规则可以为负载(如CPU占用内存等)最轻规则。
此外,控制线程集合包括的控制线程的数量以及数据处理线程集合包括的数据处理线程的数量可以按照应用场景的差异化来设置不同的比例,比如:用户数据的传输在应用中需要优先处理,在初始化TCP协议栈的时候,可以将负责处理稳态TCP连接的数据处理线程集合包括的数据处理线程的数量配置多些;又比如:新连接接入能力在应用中需要优先处理,在初始化TCP协议栈的时候,可以将负责处理非稳态TCP连接的控制线程集合包括的控制线程的数量配置多些。
同时,还可以根据报文流量动态配置。比如某一时段,网络服务器需要处理大量的TCP连接接入,可以将负责处理非稳态TCP连接的控制线程集合包括的控制线程的数量配置多些;如果网络服务器遇到大量用户数据需要处理,可以将负责处理稳态TCP连接的数据处理线程集合包括的数据处理线程的数量配置多些。
可见,在该可选的实施方式中,网络服务器不仅可以根据用户不同的需求设置控制线程集合包括的控制线程的数量以及数据处理线程集合包括的数据处理线程的数量,同时,在建立映射关系时还可以根据预设规则来选取目标控制线程或目标数据处理线程,在支持并行CPU计算能力的系统中,不仅可以使TCP协议栈能够高效地利用CPU资源,还可以支持更高的TCP连接并发能力、更高效的TCP连接处理能力以及更高效的用户报文处理能力。
请参见图8,图8是本发明实施例公开的另一种客户端与网络服务器之间交互的示意图。其中,如图8所示,包括客户端8011、客户端8012、客户端8013以及网络服务器802,其中,网络服务器802包括APP模块8021、TCP模块8022、TCP模块8023、TCP模块8024、IP模块8025、IP模块8026、IP模块8028、Dispatcher模块8028以及NIC模块8029,其中:图8与图6相比,各模块实现的功能以及各模块之间的交互均相同,不同的是,图8 中网络服务器可以将系统中的控制线程划分为前控制线程或后控制线程,其中:
TCP连接状态(非稳态TCP连接和稳态TCP连接)还可以进一步划分:稳态前TCP连接、稳态TCP连接、稳态后TCP连接三种状态。稳态前TCP连接指TCP连接成功建立前发生状态迁移的所有连接状态,即处于建立过程的TCP连接,稳态TCP连接为处于数据传输过程的TCP连接,稳态后TCP连接指TCP连接状态从稳态TCP连接发生状态迁移后的其它所有状态,即处于拆除过程的TCP连接。前控制线程用于处理非稳态TCP连接中TCP连接的建立过程,后控制线程用于处理非稳态TCP连接中TCP连接的拆除过程。
这样使得系统中的线程分工更加精细,有利于系统支持更高的TCP连接并发能力以及更高效的TCP报文处理能力。
请参见图9,图9是本发明实施例公开的另一种网络报文处理装置的结构示意图,其中,该网络报文处理装置用于执行图4所描述的网络报文处理方法中的部分或全部步骤,具体请参见图4的相关描述,在此不再赘述。如图9所示,该网络报文处理装置900可以包括:
获得单元901,用于获得来自应用程序APP的TCP连接关闭请求,所述TCP连接关闭请求包括目标套接字标识,所述TCP连接关闭请求用于请求断开所述目标套接字标识所标识的TCP连接;
确定单元902,用于根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程,其中,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为数据处理线程,所述数据处理线程用于处理稳态TCP连接;
其中,确定单元902根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程的方式具体可以为:
根据所述目标套接字标识与线程当前的映射关系,确定所述当前的映射关系下与所述目标套接字标识对应的第一线程,其中,所述目标套接字标识与所述线程的映射关系根据所述目标套接字标识所标识的TCP连接的TCP连接状态的改变而变更。
处理单元903,用于使用所述第一线程处理所述TCP连接关闭请求。
作为一种可选的实施方式,所述处理单元903使用所述第一线程处理所述TCP连接关闭请求后,所述TCP连接的TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,图9所示的网络报文处理装置900还可以包括:
删除单元904,用于删除所述目标套接字标识与所述第一线程的映射关系。
在图9所描述的网络报文处理装置900中,确定单元902可以根据目标套接字标识与线程当前的映射关系,确定当前的映射关系下与目标套接字标识对应的第一线程,处理单元903使用第一线程处理来自APP的TCP连接关闭请求,其中,该第一线程为数据处理线程,数据处理线程用于处理稳态TCP连接。这样,可以避免海量TCP连接的拆除对数据传输造成影响。
请参见图10,图10是本发明实施例公开的另一种网络报文处理装置的结构示意图,如图10所示,该网络报文处理装置1000可以包括:APP模块1001、TCP模块1002,IP模块1003、Dispatcher模块1004以及NIC1005,其中,TCP模块1002包括Socket模块10021,
其中,各模块所实现的功能具体请参见图1.1中所描述的,在此不再赘述。
其中,该网络报文处理装置可以用于执行图2~图4所描述的网络报文处理方法中的部分或全部步骤,具体请参见图2~图4的相关描述,在此不再赘述。
请参见图11,图11是本发明实施例公开的一种网络服务器的结构示意图;其中,该网络服务器用于执行图2或图3所描述的网络报文处理方法中的全部或部分步骤,具体请参见图2或图3中的描述,在此不再赘述。如图11所示,该网络服务器1100包括:处理器1101、接收器1102以及存储器1103。其中,所述处理器1101、接收器1102以及存储器1103分别连接通信总线。存储器1103可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory),接收器1102可以是具有接收对端信息功能的接收器,比如天线。本领域技术人员可以理解,图11中示出的网络服务器1100的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图11所示的更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,处理器1101为网络服务器1100的控制中心,可以是中央处理器(Central Processing Unit,CPU),处理器1101利用各种接口和线路连接整个网络服务器1100的各个部分,通过运行或执行存储在存储器1103内的软件程序和/或模块,以及调用存储在存储器1103内存储的程序代码,用于执行以下操作:
通过所述接收器1102接收客户端发送的第一传输控制协议TCP报文,所述第一TCP报文包括第一五元组;
根据所述第一五元组,确定处理所述第一TCP报文的第一线程,其中,所述第一五元组用于标识所述第一TCP报文对应的TCP连接,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为控制线程或数据处理线程,所述控制线程用于处理非稳态TCP连接,所述数据处理线程用于处理稳态TCP连接;
使用所述第一线程处理所述第一TCP报文。
作为一种可选的实施方式,所述处理器1101根据所述第一五元组,确定处理所述第一TCP报文的第一线程的方式具体为:
根据所述第一五元组和线程当前的映射关系,确定所述当前的映射关系下与所述第一五元组对应的第一线程,其中,所述第一五元组和所述线程的映射关系根据所述TCP连接的TCP连接状态的改变而变更。
其中,可选的,所述控制线程为前控制线程或后控制线程,所述前控制线程用于处理非稳态TCP连接中所述TCP连接的建立过程,所述后控制线程用于处理非稳态TCP连接中所述TCP连接的拆除过程。
作为一种可选的实施方式,所述第一线程为所述控制线程,所述处理器使用所述第一 线程处理所述第一TCP报文后,所述TCP连接的TCP连接状态从所述非稳态TCP连接变为所述稳态TCP连接,所述处理器1101还用于调用所述存储器1103中存储的程序代码,用于执行以下步骤:
删除所述第一五元组与所述第一线程的映射关系;
新建所述第一五元组与线程的映射关系,以使得所述第一五元组对应的线程变更为第二线程,所述第二线程为所述数据处理线程。
作为另一种可选的实施方式,所述处理器1101还用于调用所述存储器1103中存储的程序代码,用于执行以下步骤:
通过所述接收器1102接收所述客户端发送的第二TCP报文,所述第二TCP报文包括所述第一五元组;
根据新建的所述第一五元组与线程的映射关系,确定所述第一五元组对应的线程为所述第二线程;
使用所述第二线程处理所述第二TCP报文。
作为另一种可选的实施方式,所述第一线程为所述数据处理线程,所述处理器使用所述第一线程处理所述第一TCP报文后,所述TCP连接的TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,所述处理器1101还用于调用所述存储器1103中存储的程序代码,用于执行以下步骤:
删除所述第一五元组与所述第一线程的映射关系;
新建所述第一五元组与线程的映射关系,以使得所述第一五元组对应的线程变更为第三线程,所述第三线程为所述控制线程。
作为另一种可选的实施方式,所述处理器1101还用于调用所述存储器1103中存储的程序代码,用于执行以下步骤:
通过所述接收器1102接收所述客户端发送的第三TCP报文,所述第三TCP报文包括所述第一五元组;
根据新建的所述第一五元组与线程的映射关系,确定所述第一五元组对应的线程为所述第三线程;
使用所述第三线程处理所述第三TCP报文。
在图11所描述的网络服务器中,当网络服务器接收到第一TCP报文后,网络服务器可以根据第一五元组确定处理第一TCP报文的第一线程,如果第一线程为控制线程,则网络服务器可以使用控制线程来处理第一TCP报文。如果第一线程为数据处理线程,则网络服务器可以使用数据处理线程来处理第一TCP报文,从而可以根据TCP连接的状态来自适应处理网络报文。
此外,针对每条TCP连接,网络服务器均可以按照上述步骤来处理该TCP连接的TCP报文。在存在大量TCP连接的情况下,网络服务器根据TCP连接的状态来自适应处理网络报文,可以使得非稳态TCP连接与稳态TCP连接互相不影响,同时,网络服务器可以并行处理非稳态TCP连接的TCP报文以及稳态TCP连接的TCP报文,从而可以提高网络服务器TCP连接的效率。
请参见图12,图12是本发明实施例公开的另一种网络服务器的结构示意图;其中,该网络服务器用于执行图4所描述的网络报文处理方法中的全部或部分步骤,具体请参见图4中的描述,在此不再赘述。如图12所示,该网络服务器1200包括:处理器1201以及存储器1202。其中,所述处理器1201以及存储器1202分别连接通信总线。存储器1202可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory)。本领域技术人员可以理解,图12中示出的网络服务器1200的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图12所示的更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,处理器1201为网络服务器1200的控制中心,可以是中央处理器(Central Processing Unit,CPU),处理器1201利用各种接口和线路连接整个网络服务器1200的各个部分,通过运行或执行存储在存储器1202内的软件程序和/或模块,以及调用存储在存储器1202内存储的程序代码,用于执行以下操作:
获得来自应用程序APP的TCP连接关闭请求,所述TCP连接关闭请求包括目标套接字标识,所述TCP连接关闭请求用于请求断开所述目标套接字标识所标识的TCP连接;
根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程,其中,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为数据处理线程,所述数据处理线程用于处理稳态TCP连接;
使用所述第一线程处理所述TCP连接关闭请求。
作为一种可选的实施方式,所述处理器1201根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程的方式具体为:
根据所述目标套接字标识与线程当前的映射关系,确定所述当前的映射关系下与所述目标套接字标识对应的第一线程,其中,所述目标套接字标识与所述线程的映射关系根据所述目标套接字标识所标识的TCP连接的TCP连接状态的改变而变更。
作为一种可选的实施方式,所述处理器1201使用所述第一线程处理所述TCP连接关闭请求后,所述TCP连接的TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,所述处理器1201还用于调用所述存储器1202中存储的程序代码,用于执行以下步骤:
删除所述目标套接字标识与所述第一线程的映射关系。
在图12所描述的网络服务器中,网络服务器可以根据目标套接字标识确定处理TCP连接关闭请求的第一线程,并使用第一线程处理TCP连接关闭请求,其中,该第一线程为数据处理线程,数据处理线程用于处理稳态TCP连接。这样,可以避免海量TCP连接的拆除对数据传输造成影响。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和单元并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部 分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (30)

  1. 一种网络报文处理方法,其特征在于,包括:
    接收客户端发送的第一传输控制协议TCP报文,所述第一TCP报文包括第一五元组;
    根据所述第一五元组,确定处理所述第一TCP报文的第一线程,其中,所述第一五元组用于标识所述第一TCP报文对应的TCP连接,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为控制线程或数据处理线程,所述控制线程用于处理非稳态TCP连接,所述数据处理线程用于处理稳态TCP连接;
    使用所述第一线程处理所述第一TCP报文。
  2. 根据权利要求1所述的方法,其特征在于,所述根据所述第一五元组,确定处理所述第一TCP报文的第一线程包括:
    根据所述第一五元组和线程当前的映射关系,确定所述当前的映射关系下与所述第一五元组对应的第一线程,其中,所述第一五元组和所述线程的映射关系根据所述TCP连接的TCP连接状态的改变而变更。
  3. 根据权利要求2所述的方法,其特征在于,所述第一线程为所述控制线程,所述使用所述第一线程处理所述第一TCP报文后,所述TCP连接的TCP连接状态从所述非稳态TCP连接变为所述稳态TCP连接,所述方法还包括:
    删除所述第一五元组与所述第一线程的映射关系;
    新建所述第一五元组与线程的映射关系,以使得所述第一五元组对应的线程变更为第二线程,所述第二线程为所述数据处理线程。
  4. 根据权利要求3所述的方法,其特征在于,所述方法还包括:
    接收所述客户端发送的第二TCP报文,所述第二TCP报文包括所述第一五元组;
    根据新建的所述第一五元组与线程的映射关系,确定所述第一五元组对应的线程为所述第二线程;
    使用所述第二线程处理所述第二TCP报文。
  5. 根据权利要求2所述的方法,其特征在于,所述第一线程为所述数据处理线程,所述使用所述第一线程处理所述第一TCP报文后,所述TCP连接的TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,所述方法还包括:
    删除所述第一五元组与所述第一线程的映射关系;
    新建所述第一五元组与线程的映射关系,以使得所述第一五元组对应的线程变更为第三线程,所述第三线程为所述控制线程。
  6. 根据权利要求5所述的方法,其特征在于,所述方法还包括:
    接收所述客户端发送的第三TCP报文,所述第三TCP报文包括所述第一五元组;
    根据新建的所述第一五元组与线程的映射关系,确定所述第一五元组对应的线程为所述第三线程;
    使用所述第三线程处理所述第三TCP报文。
  7. 根据权利要求1~6任一项所述的方法,其特征在于,所述控制线程为前控制线程或 后控制线程,所述前控制线程用于处理非稳态TCP连接中所述TCP连接的建立过程,所述后控制线程用于处理非稳态TCP连接中所述TCP连接的拆除过程。
  8. 一种网络报文处理方法,其特征在于,包括:
    获得来自应用程序APP的TCP连接关闭请求,所述TCP连接关闭请求包括目标套接字标识,所述TCP连接关闭请求用于请求断开所述目标套接字标识所标识的TCP连接;
    根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程,其中,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为数据处理线程,所述数据处理线程用于处理稳态TCP连接;
    使用所述第一线程处理所述TCP连接关闭请求。
  9. 根据权利要求8所述的方法,其特征在于,所述根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程包括:
    根据所述目标套接字标识与线程当前的映射关系,确定所述当前的映射关系下与所述目标套接字标识对应的第一线程,其中,所述目标套接字标识与所述线程的映射关系根据所述目标套接字标识所标识的TCP连接的TCP连接状态的改变而变更。
  10. 根据权利要求9所述的方法,其特征在于,所述使用所述第一线程处理所述TCP连接关闭请求后,所述TCP连接的TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,所述方法还包括:
    删除所述目标套接字标识与所述第一线程的映射关系。
  11. 一种网络报文处理装置,其特征在于,包括:
    接收单元,用于接收客户端发送的第一传输控制协议TCP报文,所述第一TCP报文包括第一五元组;
    确定单元,用于根据所述第一五元组,确定处理所述第一TCP报文的第一线程,所述第一五元组用于标识所述第一TCP报文对应的TCP连接,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为控制线程或数据处理线程,所述控制线程用于处理非稳态TCP连接,所述数据处理线程用于处理稳态TCP连接;
    处理单元,用于使用所述第一线程处理所述第一TCP报文。
  12. 根据权利要求11所述的网络报文处理装置,其特征在于,所述确定单元根据所述第一五元组,确定处理所述第一TCP报文的第一线程的方式具体为:
    根据所述第一五元组和线程当前的映射关系,确定所述当前的映射关系下与所述第一五元组对应的第一线程,其中,所述第一五元组和所述线程的映射关系根据所述TCP连接的TCP连接状态的改变而变更。
  13. 根据权利要求12所述的网络报文处理装置,其特征在于,所述第一线程为所述控制线程,所述处理单元使用所述第一线程处理所述第一TCP报文后,所述TCP连接的TCP连接状态从所述非稳态TCP连接变为所述稳态TCP连接,所述网络报文处理装置还包括:
    第一删除单元,用于删除所述第一五元组与所述第一线程的映射关系;
    第一新建单元,用于新建所述第一五元组与线程的映射关系,以使得所述第一五元组对应的线程变更为第二线程,所述第二线程为所述数据处理线程。
  14. 根据权利要求13所述的网络报文处理装置,其特征在于,
    所述接收单元,还用于接收所述客户端发送的第二TCP报文,所述第二TCP报文包括所述第一五元组;
    所述确定单元,还用于根据新建的所述第一五元组与线程的映射关系,确定所述第一五元组对应的线程为所述第二线程;
    所述处理单元,还用于使用所述第二线程处理所述第二TCP报文。
  15. 根据权利要求12所述的网络报文处理装置,其特征在于,所述第一线程为所述数据处理线程,所述处理单元使用所述第一线程处理所述第一TCP报文后,所述TCP连接的TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,所述网络报文处理装置还包括:
    第二删除单元,用于删除所述第一五元组与所述第一线程的映射关系;
    第二新建单元,用于新建所述第一五元组与线程的映射关系,以使得所述第一五元组对应的线程变更为第三线程,所述第三线程为所述控制线程。
  16. 根据权利要求15所述的网络报文处理装置,其特征在于,
    所述接收单元,还用于接收所述客户端发送的第三TCP报文,所述第三TCP报文包括所述第一五元组;
    所述确定单元,还用于根据新建的所述第一五元组与线程的映射关系,确定所述第一五元组对应的线程为所述第三线程;
    所述处理单元,还用于使用所述第三线程处理所述第三TCP报文。
  17. 根据权利要求11~16任一项所述的网络报文处理装置,其特征在于,所述控制线程为前控制线程或后控制线程,所述前控制线程用于处理非稳态TCP连接中所述TCP连接的建立过程,所述后控制线程用于处理非稳态TCP连接中所述TCP连接的拆除过程。
  18. 一种网络报文处理装置,其特征在于,包括:
    获得单元,用于获得来自应用程序APP的TCP连接关闭请求,所述TCP连接关闭请求包括目标套接字标识,所述TCP连接关闭请求用于请求断开所述目标套接字标识所标识的TCP连接;
    确定单元,用于根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程,其中,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为数据处理线程,所述数据处理线程用于处理稳态TCP连接;
    处理单元,用于使用所述第一线程处理所述TCP连接关闭请求。
  19. 根据权利要求18所述的网络报文处理装置,其特征在于,所述确定单元根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程的方式具体为:
    根据所述目标套接字标识与线程当前的映射关系,确定所述当前的映射关系下与所述目标套接字标识对应的第一线程,其中,所述目标套接字标识与所述线程的映射关系根据 所述目标套接字标识所标识的TCP连接的TCP连接状态的改变而变更。
  20. 根据权利要求19所述的网络报文处理装置,其特征在于,所述处理单元使用所述第一线程处理所述TCP连接关闭请求后,所述TCP连接的TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,所述网络报文处理装置还包括:
    删除单元,用于删除所述目标套接字标识与所述第一线程的映射关系。
  21. 一种网络服务器,其特征在于,包括:处理器、接收器以及存储器,其中,所述处理器、接收器以及存储器分别连接通信总线,所述存储器中存储一组程序代码,且所述处理器用于调用所述存储器中存储的程序代码,用于执行以下步骤:
    通过所述接收器接收客户端发送的第一传输控制协议TCP报文,所述第一TCP报文包括第一五元组;
    根据所述第一五元组,确定处理所述第一TCP报文的第一线程,所述第一五元组用于标识所述第一TCP报文对应的TCP连接,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为控制线程或数据处理线程,所述控制线程用于处理非稳态TCP连接,所述数据处理线程用于处理稳态TCP连接;
    使用所述第一线程处理所述第一TCP报文。
  22. 根据权利要求21所述的网络服务器,其特征在于,所述处理器根据所述第一五元组,确定处理所述第一TCP报文的第一线程的方式具体为:
    根据所述第一五元组和线程当前的映射关系,确定所述当前的映射关系下与所述第一五元组对应的第一线程,其中,所述第一五元组和所述线程的映射关系根据所述TCP连接的TCP连接状态的改变而变更。
  23. 根据权利要求22所述的网络服务器,其特征在于,所述第一线程为所述控制线程,所述处理器使用所述第一线程处理所述第一TCP报文后,所述TCP连接的TCP连接状态从所述非稳态TCP连接变为所述稳态TCP连接,所述处理器还用于调用所述存储器中存储的程序代码,用于执行以下步骤:
    删除所述第一五元组与所述第一线程的映射关系;
    新建所述第一五元组与线程的映射关系,以使得所述第一五元组对应的线程变更为第二线程,所述第二线程为所述数据处理线程。
  24. 根据权利要求23所述的网络服务器,其特征在于,所述处理器还用于调用所述存储器中存储的程序代码,用于执行以下步骤:
    通过所述接收器接收所述客户端发送的第二TCP报文,所述第二TCP报文包括所述第一五元组;
    根据新建的所述第一五元组与线程的映射关系,确定所述第一五元组对应的线程为所述第二线程;
    使用所述第二线程处理所述第二TCP报文。
  25. 根据权利要求22所述的网络服务器,其特征在于,所述第一线程为所述数据处理线程,所述处理器使用所述第一线程处理所述第一TCP报文后,所述TCP连接的TCP 连接状态从所述稳态TCP连接变为所述非稳态TCP连接,所述处理器还用于调用所述存储器中存储的程序代码,用于执行以下步骤:
    删除所述第一五元组与所述第一线程的映射关系;
    新建所述第一五元组与线程的映射关系,以使得所述第一五元组对应的线程变更为第三线程,所述第三线程为所述控制线程。
  26. 根据权利要求25所述的网络服务器,其特征在于,所述处理器还用于调用所述存储器中存储的程序代码,用于执行以下步骤:
    通过所述接收器接收所述客户端发送的第三TCP报文,所述第三TCP报文包括所述第一五元组;
    根据新建的所述第一五元组与线程的映射关系,确定所述第一五元组对应的线程为所述第三线程;
    使用所述第三线程处理所述第三TCP报文。
  27. 根据权利要求21~26任一项所述的网络服务器,其特征在于,所述控制线程为前控制线程或后控制线程,所述前控制线程用于处理非稳态TCP连接中所述TCP连接的建立过程,所述后控制线程用于处理非稳态TCP连接中所述TCP连接的拆除过程。
  28. 一种网络服务器,其特征在于,包括:处理器以及存储器,其中,所述处理器以及存储器分别连接通信总线,所述存储器中存储一组程序代码,且所述处理器用于调用所述存储器中存储的程序代码,用于执行以下步骤:
    获得来自应用程序APP的TCP连接关闭请求,所述TCP连接关闭请求包括目标套接字标识,所述TCP连接关闭请求用于请求断开所述目标套接字标识所标识的TCP连接;
    根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程,其中,所述TCP连接的TCP连接状态为非稳态TCP连接或稳态TCP连接,所述非稳态TCP连接表示处于建立过程或拆除过程的TCP连接,所述稳态TCP连接表示处于数据传输过程的TCP连接,所述第一线程为数据处理线程,所述数据处理线程用于处理稳态TCP连接;
    使用所述第一线程处理所述TCP连接关闭请求。
  29. 根据权利要求28所述的网络服务器,其特征在于,所述处理器根据所述目标套接字标识,确定处理所述TCP连接关闭请求的第一线程的方式具体为:
    根据所述目标套接字标识与线程当前的映射关系,确定所述当前的映射关系下与所述目标套接字标识对应的第一线程,其中,所述目标套接字标识与所述线程的映射关系根据所述目标套接字标识所标识的TCP连接的TCP连接状态的改变而变更。
  30. 根据权利要求29所述的网络服务器,其特征在于,所述处理器使用所述第一线程处理所述TCP连接关闭请求后,所述TCP连接的TCP连接状态从所述稳态TCP连接变为所述非稳态TCP连接,所述处理器还用于调用所述存储器中存储的程序代码,用于执行以下步骤:
    删除所述目标套接字标识与所述第一线程的映射关系。
PCT/CN2017/078588 2016-07-30 2017-03-29 一种网络报文处理方法、装置及网络服务器 WO2018023988A1 (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP21176705.8A EP3934209A1 (en) 2016-07-30 2017-03-29 Tcp network packet processing
EP17836172.1A EP3481028B1 (en) 2016-07-30 2017-03-29 Thread-based tcp packet processing
US16/260,656 US11218570B2 (en) 2016-07-30 2019-01-29 Network packet processing method and apparatus and network server
US17/538,940 US11689646B2 (en) 2016-07-30 2021-11-30 Network packet processing method and apparatus and network server

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610619837.3A CN107666474B (zh) 2016-07-30 2016-07-30 一种网络报文处理方法、装置及网络服务器
CN201610619837.3 2016-07-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/260,656 Continuation US11218570B2 (en) 2016-07-30 2019-01-29 Network packet processing method and apparatus and network server

Publications (1)

Publication Number Publication Date
WO2018023988A1 true WO2018023988A1 (zh) 2018-02-08

Family

ID=61072494

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2017/078588 WO2018023988A1 (zh) 2016-07-30 2017-03-29 一种网络报文处理方法、装置及网络服务器

Country Status (4)

Country Link
US (2) US11218570B2 (zh)
EP (2) EP3481028B1 (zh)
CN (2) CN113259415B (zh)
WO (1) WO2018023988A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983957B2 (en) * 2015-07-27 2021-04-20 Sas Institute Inc. Distributed columnar data set storage
CN109862088B (zh) * 2019-01-23 2021-06-08 新华三云计算技术有限公司 Tcp连接迁移方法及装置
CN110247863A (zh) * 2019-07-12 2019-09-17 广州西麦科技股份有限公司 数据包处理方法、装置、sdn交换机及存储介质
CN112532714B (zh) * 2020-11-25 2022-06-03 北京金山云网络技术有限公司 一种数据处理方法、处理装置、服务器及存储介质
CN113037873B (zh) * 2021-05-24 2021-09-07 广东睿江云计算股份有限公司 一种优化tcp传输的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101547210A (zh) * 2009-05-14 2009-09-30 福建星网锐捷网络有限公司 一种tcp连接的处理方法和装置
CN102710497A (zh) * 2012-04-24 2012-10-03 汉柏科技有限公司 多核多线程网络设备的报文处理方法及系统
CN102916953A (zh) * 2012-10-12 2013-02-06 青岛海信传媒网络技术有限公司 基于tcp连接实现并发服务的方法及装置
US20150003467A1 (en) * 2007-11-07 2015-01-01 Netapp, Inc. Application-controlled network packet classification

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2323344A (en) * 1939-03-18 1943-07-06 Moeller August Process of breaking petroleum emulsions and breaking agent
US20040015591A1 (en) * 2002-07-18 2004-01-22 Wang Frank Xiao-Dong Collective TCP control for improved wireless network performance
US7181742B2 (en) * 2002-11-19 2007-02-20 Intel Corporation Allocation of packets and threads
US7363369B2 (en) * 2003-10-16 2008-04-22 International Business Machines Corporation Monitoring thread usage to dynamically control a thread pool
US7668165B2 (en) * 2004-03-31 2010-02-23 Intel Corporation Hardware-based multi-threading for packet processing
US8224966B2 (en) * 2004-08-24 2012-07-17 Cisco Technology, Inc. Reproxying an unproxied connection
US7564847B2 (en) * 2004-12-13 2009-07-21 Intel Corporation Flow assignment
CN101355577B (zh) * 2008-09-01 2011-04-20 中兴通讯股份有限公司 一种多线程通讯程序中防止线程吊死的方法
US20100161783A1 (en) * 2008-12-18 2010-06-24 Konica Minolta Systems Laboratory, Inc. Socket connection-based printer discovery method using a thread management scheme
CN101656737B (zh) * 2009-09-10 2012-09-26 中兴通讯股份有限公司 一种实现多协议接入的方法及接口平台
CN101895529B (zh) * 2010-05-31 2014-05-21 上海网宿科技股份有限公司 一种在驱动层判断tcp/ip包所属进程的方法
CN102647358A (zh) * 2012-04-24 2012-08-22 北京星网锐捷网络技术有限公司 报文发送和处理方法、装置、客户端设备和网络设备
US8875287B2 (en) * 2012-10-04 2014-10-28 Akamai Technologies, Inc. Server with mechanism for reducing internal resources associated with a selected client connection
US9740523B2 (en) * 2013-07-30 2017-08-22 Badu Networks, Inc. Optimizing stream-mode content cache
CN104519019B (zh) * 2013-09-29 2019-09-13 腾讯科技(深圳)有限公司 一种信息传输方法、装置及系统
JP2015179444A (ja) * 2014-03-19 2015-10-08 株式会社東芝 データ受信装置、データ受信方法、およびコンピュータプログラム
CN103873474B (zh) * 2014-03-27 2017-05-17 西安航天动力试验技术研究所 基于Windows的TCP/IP协议的网络传输方法
US9336040B2 (en) * 2014-09-15 2016-05-10 Intel Corporation Techniques for remapping sessions for a multi-threaded application
US9923677B2 (en) * 2014-12-26 2018-03-20 Intel Corporation Multiplexing many client streams over a single connection
JP5996691B2 (ja) * 2015-02-19 2016-09-21 株式会社シミュラティオ ファイル転送方法及びファイル転送プログラム
CN106657134B (zh) * 2017-01-12 2020-01-07 比特大陆科技有限公司 稳定通信的方法、系统、挖矿服务器和客户端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150003467A1 (en) * 2007-11-07 2015-01-01 Netapp, Inc. Application-controlled network packet classification
CN101547210A (zh) * 2009-05-14 2009-09-30 福建星网锐捷网络有限公司 一种tcp连接的处理方法和装置
CN102710497A (zh) * 2012-04-24 2012-10-03 汉柏科技有限公司 多核多线程网络设备的报文处理方法及系统
CN102916953A (zh) * 2012-10-12 2013-02-06 青岛海信传媒网络技术有限公司 基于tcp连接实现并发服务的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3481028A4

Also Published As

Publication number Publication date
EP3481028A1 (en) 2019-05-08
CN113259415B (zh) 2023-03-10
CN113259415A (zh) 2021-08-13
US11218570B2 (en) 2022-01-04
EP3481028B1 (en) 2021-06-30
EP3934209A1 (en) 2022-01-05
US11689646B2 (en) 2023-06-27
CN107666474B (zh) 2021-04-20
US20220086262A1 (en) 2022-03-17
US20190158634A1 (en) 2019-05-23
CN107666474A (zh) 2018-02-06
EP3481028A4 (en) 2019-07-17

Similar Documents

Publication Publication Date Title
WO2018023988A1 (zh) 一种网络报文处理方法、装置及网络服务器
CN107087019B (zh) 一种基于端云协同计算架构的任务调度方法及装置
CN101217493B (zh) 一种tcp数据包的传输方法
US10148565B2 (en) OPENFLOW communication method and system, controller, and service gateway
Pipatsakulroj et al. mumq: A lightweight and scalable mqtt broker
CN110022330B (zh) 用于网络数据包的处理方法、装置及电子设备
Laufer et al. Climb: Enabling network function composition with click middleboxes
CN111614631B (zh) 一种用户态流水线架构防火墙系统
WO2022148363A1 (zh) 数据传输方法及数据传输服务器
WO2017028399A1 (zh) 通信数据传输方法及系统
CN110535811B (zh) 远端内存管理方法及系统、服务端、客户端、存储介质
CN112104679B (zh) 处理超文本传输协议请求的方法、装置、设备和介质
US20150127799A1 (en) Hierarchical distribution of control information in a massively scalable network server
Kadhim et al. Hybrid load-balancing algorithm for distributed fog computing in internet of things environment
WO2023197666A1 (zh) 服务调度方法、系统、vtep、存储介质及计算机程序产品
CN110609746B (zh) 管理网络系统的方法、设备和计算机可读介质
CN110753043B (zh) 一种通信方法、装置、服务器及介质
CN114024968A (zh) 一种基于中间设备的报文发送方法、装置和电子设备
Nikitinskiy et al. A stateless transport protocol in software defined networks
CN111901689A (zh) 流媒体数据的传输方法、装置、终端设备和存储介质
Ivanisenko Methods and Algorithms of load balancing
Zheng et al. Janus: a user-level TCP stack for processing 40 million concurrent TCP connections
Liu et al. IBRMP: A Reliable Multicast Protocol for InfiniBand
CN107196819A (zh) 一种网络连接的方法及其系统、存储设备
CN116361038B (zh) 一种加速计算管理方法、系统、设备及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17836172

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2017836172

Country of ref document: EP

Effective date: 20190204