CN109495404A - 一种报文处理方法、装置、交换机设备及存储介质 - Google Patents
一种报文处理方法、装置、交换机设备及存储介质 Download PDFInfo
- Publication number
- CN109495404A CN109495404A CN201811534742.7A CN201811534742A CN109495404A CN 109495404 A CN109495404 A CN 109495404A CN 201811534742 A CN201811534742 A CN 201811534742A CN 109495404 A CN109495404 A CN 109495404A
- Authority
- CN
- China
- Prior art keywords
- thread
- message
- object message
- processing
- identification information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种报文处理方法、装置、交换机设备及存储介质,所述方法应用于虚拟交换机VSwitch中运行的第一线程,所述VSwitch中运行有至少两个线程,所述至少两个线程包括所述第一线程,所述方法包括:获取待处理的目标报文;基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程,其中,所述数据流标识信息用于标识所述目标报文所属的数据流,以区分不同数据流的报文;如果确定所述第一线程为所述目标报文的处理线程,对所述目标报文进行报文处理。通过本发明实施例提供的技术方案,可以保证同一数据流的多个报文由同一线程来处理,提高了数据处理效率。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种报文处理方法、装置、交换机设备及存储介质。
背景技术
VSwitch(VirtualSwitch,虚拟交换机)工作在二层数据网络,通过软件方式实现物理交换机的二层(或部分三层)网络功能。
VSwitch运行于宿主机中,用于实现报文的转发处理。具体的,VSwitch接收宿主机的物理网卡或安装在宿主机中的虚拟机转发的报文,并通过其自身中运行的线程对所接收到的报文进行封装处理,并将封装处理后的报文转发至作为接收方的目的虚拟机或者目的物理网卡中,其中,报文头相同的报文属于同一数据流。
现有技术中,物理网卡或虚拟机分发报文时,可能将属于同一数据流的多个报文分配至VSwitch中的不同线程。当属于同一数据流的多个报文被分配至不同的线程时,不利于数据转发过程中的数据命中等操作,影响数据处理速率。
发明内容
本发明实施例的目的在于提供一种报文处理方法、装置、交换机设备及存储介质,有效提高数据处理效率。具体技术方案如下:
第一方面,本发明实施例提供了一种报文处理方法,应用于虚拟交换机VSwitch中运行的第一线程,所述VSwitch中运行有至少两个线程,所述至少两个线程包括所述第一线程,所述方法包括:
获取待处理的目标报文;
基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程,其中,所述数据流标识信息用于标识所述目标报文所属的数据流,以区分不同数据流的报文;
如果确定所述第一线程为所述目标报文的处理线程,对所述目标报文进行报文处理。
可选的,在所述基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程的步骤之后,所述方法还包括:
如果确定所述第一线程不为所述目标报文的处理线程,将所述目标报文存入所述目标报文的处理线程对应的缓存队列,以使得所述目标报文的处理线程对所述目标报文进行报文处理,其中,所述目标报文的处理线程为所述至少两个线程中除所述第一线程以外的线程。
可选的,不同的线程对应不同的哈希值;
所述基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程的步骤,包括:
计算所述目标报文携带的数据流标识信息的哈希值;基于预设的线程与哈希值的对应关系,确定所述目标报文携带的数据流标识信息的哈希值是否为所述第一线程对应的哈希值;
如果所述目标报文携带的数据流标识信息的哈希值为所述第一线程对应的哈希值,确定所述第一线程为所述目标报文的处理线程。
可选的,在所述获取待处理的目标报文的步骤之后,在所述基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程的步骤之前,所述方法还包括:
确定所述目标报文是否为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文;
如果所述目标报文为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文,对所述目标报文进行报文处理;
所述基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程的步骤,包括:
如果所述目标报文不为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文,基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程。
可选的,所述数据流标识信息包括:源IP地址和目的IP地址;或者,所述数据流标识信息包括:源IP地址,源端口,目的IP地址,目的端口,和传输层协议。
第二方面,本发明实施例还提供了一种报文处理装置,应用于虚拟交换机VSwitch中运行的第一线程,所述VSwitch中运行有至少两个线程,所述至少两个线程包括所述第一线程,所述装置包括:
报文获取模块,用于获取待处理的目标报文;
线程确定模块,用于基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程,其中,所述数据流标识信息用于标识所述目标报文所属的数据流,以区分不同数据流的报文;
报文处理模块,用于如果所述线程确定模块确定所述第一线程为所述目标报文的处理线程,对所述目标报文进行报文处理。
可选的,所述装置还包括:
报文存放模块,用于如果所述线程确定模块确定所述第一线程不为所述目标报文的处理线程,将所述目标报文存入所述目标报文的处理线程对应的缓存队列,以使得所述目标报文的处理线程对所述目标报文进行报文处理,其中,所述目标报文的处理线程为所述至少两个线程中除所述第一线程以外的线程。
可选的,不同的线程对应不同的哈希值;
所述线程确定模块,具体用于:
计算所述目标报文携带的数据流标识信息的哈希值;基于预设的线程与哈希值的对应关系,确定所述目标报文携带的数据流标识信息的哈希值是否为所述第一线程对应的哈希值;
如果所述目标报文携带的数据流标识信息的哈希值为所述第一线程对应的哈希值,确定所述第一线程为所述目标报文的处理线程。
可选的,所述装置还包括:
报文确定模块,用于在所述报文获取模块获取待处理的目标报文之后,在所述线程确定模块基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程之前,确定所述目标报文是否为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文;
如果所述目标报文为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文,触发所述报文处理模块对所述目标报文进行报文处理;
如果所述目标报文不为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文,触发所述线程确定模块基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程。
可选的,所述数据流标识信息包括:源IP地址和目的IP地址;或者,所述数据流标识信息包括:源IP地址,源端口,目的IP地址,目的端口,和传输层协议。
第三方面,本发明实施例提供了一种交换机设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现了第一方面所述的报文处理方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现了第一方面所述的报文处理方法。
本发明实施例中,通过虚拟交换机VSwitch中运行的第一线程获取目标报文;基于目标报文携带的数据流标识信息,确定第一线程是否为目标报文的处理线程;其中,数据流标识信息用于标识目标报文所属的数据流,以区分不同数据流的报文;如果确定第一线程为目标报文的处理线程,则第一线程对目标报文进行报文处理。由于属于同一数据流的报文携带的数据流标识信息相同,因此,通过本发明实施例提供的方案,处理同一数据流的报文的线程相同,从而可以避免将属于同一数据流的多个报文分配至VSwitch中的不同线程,即可以保证属于同一数据流的多个报文由同一线程来处理,提高了数据处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的一种报文处理方法的流程图;
图2为本发明实施例所提供的另一种报文处理方法的流程图;
图3为本发明实施例所提供的另一种报文处理方法的流程图;
图4为本发明实施例所提供的一种报文处理装置的结构示意图;
图5为本发明实施例所提供的一种交换机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决保证同一数据流的多个报文由同一线程来处理,以提高数据处理效率,本发明实施例提供了一种报文处理方法、装置、交换机设备及存储介质。
第一方面,下面首先对本发明实施例所提供的一种报文处理方法进行介绍。
需要说明的是,本发明实施例提供的报文处理方法,应用于虚拟交换机VSwitch中运行的第一线程,且VSwitch中运行有至少两个线程,该至少两个线程包括第一线程,也就是说,第一线程可以为该至少两个线程中的任一线程。
VSwitch可设置在宿主机中,宿主机中创建有虚拟机。
如图1所示,本发明实施例提供的一种报文处理方法具体可以包括如下步骤:
S110,获取待处理的目标报文。
其中,目标报文可以是VSwitch所在的宿主机的物理网卡转发的报文,还可以是安装在VSwitch所在的宿主机中的虚拟机转发的报文,还可以是VSwitch运行的任一线程中除第一线程以外的其他线程转发的报文,这都是合理的。本发明实施例对目标报文的来源不做具体限定。
S120,基于目标报文携带的数据流标识信息,确定第一线程是否为目标报文的处理线程,其中,数据流标识信息用于标识目标报文所属的数据流,以区分不同数据流的报文。
可以理解的是,属于同一数据流的报文所携带的数据流标识信息相同,为了确保属于同一数据流的多个报文能够由同一线程进行处理,可以基于目标携带的数据流标识信息,确定第一线程是否为目标报文的处理线程,从而有利于后续步骤中,通过相同的线程对属于同一数据流的多个报文进行处理。
并且,报文包括报文头,报文头一般携带有源IP地址和目标IP地址等数据;而源IP地址和目标IP地址可以作为报文的标识信息,用于标识该报文属于哪一数据流。因此,上述数据流标识信息可以为源IP地址和目标IP地址。当然,数据流标识信息还可以是:源IP地址,源端口,目的IP地址,目的端口,和传输层协议,本发明实施例对数据流标识信息不作具体限定。
在一种实施方式中,不同的线程对应不同的哈希值,在该实施方式中,基于目标报文携带的数据流标识信息,确定所述第一线程是否为目标报文的处理线程的步骤,可以包括如下三个步骤:
S1,计算目标报文携带的数据流标识信息的哈希值。
可以理解的是,计算目标报文携带的数据流标识信息的哈希值的方式可以为:利用哈希算法将目标报文携带的数据流标识信息映射为固定比特数的二进制数,该固定比特数的二进制数即为目标报文携带的数据流标识信息的哈希值。并且,为了后续步骤中能够基于预设的线程与哈希值的对应关系,确定目标报文携带的数据流标识信息的哈希值是否为第一线程对应的哈希值,目标报文携带的数据流标识信息的哈希值的比特数与各个线程对应的哈希值的比特数相同。
S2,基于预设的线程与哈希值的对应关系,确定目标报文携带的数据流标识信息的哈希值是否为第一线程对应的哈希值。
由于不同的线程对应不同的哈希值,也就是说,线程与哈希值具有对应关系,第一线程对应一个或几个哈希值。因此,在得到目标报文携带的数据流标识信息的哈希值之后,可以确定目标报文携带的数据流标识信息的哈希值是否为第一线程对应的哈希值。
S3,如果目标报文携带的数据流标识信息的哈希值为第一线程对应的哈希值,确定第一线程为目标报文的处理线程。
如果目标报文携带的数据流标识信息的哈希值为第一线程对应的哈希值,说明第一线程用来处理目标报文,因此,可以将第一线程确定为目标报文的处理线程。
S130,如果确定第一线程为目标报文的处理线程,对目标报文进行报文处理。
如果第一线程为目标报文的处理线程,那么,第一线程可以对目标报文进行报文处理。其中,报文处理可以为:封装、流量控制、转发等,本发明实施例对报文处理不做具体限定。
本发明实施例中,通过虚拟交换机VSwitch中运行的第一线程获取目标报文;基于目标报文携带的数据流标识信息,确定第一线程是否为目标报文的处理线程;其中,数据流标识信息用于标识目标报文所属的数据流,以区分不同数据流的报文;如果确定第一线程为目标报文的处理线程,则第一线程对目标报文进行报文处理。由于属于同一数据流的报文携带的数据流标识信息相同,因此,通过本发明实施例提供的方案,处理同一数据流的报文的线程相同,从而可以避免将属于同一数据流的多个报文分配至VSwitch中的不同线程,即可以保证属于同一数据流的多个报文由同一线程来处理,提高了数据处理效率。
在实际应用中,第一线程可能是目标报文的处理线程,也可能不是目标报文的处理线程,即目标报文的处理线程可能是VSwitch中运行有至少两个线程中除第一线程以外的线程。如图2所示,本发明实施例提供的另一种报文处理方法,可以包括如下步骤:
S210,获取待处理的目标报文。
S220,基于目标报文携带的数据流标识信息,确定第一线程是否为目标报文的处理线程,其中,数据流标识信息用于标识目标报文所属的数据流,以区分不同数据流的报文。
S230,如果确定第一线程为目标报文的处理线程,对目标报文进行报文处理。
由于图2所示实施例中的S210至S230与图1所示实施例中的S110至S130相同,因此,在此不再对S210至S230进行赘述。
S240,如果确定第一线程不为目标报文的处理线程,将目标报文存入目标报文的处理线程对应的缓存队列,以使得目标报文的处理线程对目标报文进行报文处理,其中,目标报文的处理线程为至少两个线程中除第一线程以外的线程。
如果确定出第一线程不为目标报文的处理线程,说明目标报文不由第一线程进行报文处理,而由VSwitch中运行的至少两个线程中除第一线程以外的线程进行报文处理。因此,第一线程可以将目标报文存入到目标报文的处理线程对应的缓存队列中,这样,目标报文的处理线程可以从该缓存队列中获取目标报文,并对目标报文进行报文处理。
需要说明的是,目标报文的处理线程的确定过程可以为分为如下三步:
第一步,计算目标报文携带的数据流标识信息的哈希值;
第二步,基于预设的线程与哈希值的对应关系,确定与目标报文携带的数据流标识信息的哈希值对应的线程;
第三步,将第二步所确定的线程确定为目标报文的处理线程。
本发明实施例中,通过虚拟交换机VSwitch中运行的第一线程获取目标报文;基于目标报文携带的数据流标识信息,确定第一线程是否为目标报文的处理线程;其中,数据流标识信息用于标识目标报文所属的数据流,以区分不同数据流的报文;如果确定第一线程为目标报文的处理线程,则第一线程对目标报文进行报文处理。由于属于同一数据流的报文携带的数据流标识信息相同,因此,通过本发明实施例提供的方案,处理同一数据流的报文的线程相同,从而可以避免将属于同一数据流的多个报文分配至VSwitch中的不同线程,即可以保证属于同一数据流的多个报文由同一线程来处理,提高了数据处理效率。
可以理解的是,在实际应用中,第一线程对应的缓存队列中的报文,可以来自于VSwitch所在的宿主机的物理网卡,也可以来自于安装在VSwitch所在的宿主机中的虚拟机,还可以来自于VSwitch中运行的至少两个线程中第一线程以外的线程。对于来自于VSwitch中运行的至少两个线程中第一线程以外的线程的报文而言,至少两个线程中第一线程以外的线程,已经通过目标报文携带的数据流标识信息确定了第一线程是目标报文的处理线程,因此,至少两个线程中第一线程以外的线程将该报文存入第一线程对应的缓存队列中。
为了进一步提高数据处理效率,本发明实施例还提供了一种报文处理方法,如图3所示,该报文处理方法可以包括如下步骤:
S310,获取待处理的目标报文。
步骤S310,图1所示实施例中的步骤S110相同,因此,在此不再对步骤S310进行赘述。
S320,确定目标报文是否为至少两个线程中第一线程以外的线程所存入第一线程对应的缓存队列中的报文。若为否,则执行步骤S330,若为是,则执行步骤S340。
S330,基于目标报文携带的数据流标识信息,确定第一线程是否为目标报文的处理线程,其中,数据流标识信息用于标识目标报文所属的数据流,以区分不同数据流的报文。
S340,对目标报文进行报文处理。
在获取到待处理的目标报文后,第一线程可以判断该目标报文是否为至少两个线程中第一线程以外的线程所存入第一线程对应的缓存队列中的报文。如果该目标报文为至少两个线程中第一线程以外的线程所存入第一线程对应的缓存队列中的报文,说明至少两个线程中第一线程以外的线程,已经通过目标报文携带的数据流标识信息确定了第一线程是目标报文的处理线程,因此,第一线程对目标报文进行报文处理。如果该目标报文不为至少两个线程中第一线程以外的线程所存入第一线程对应的缓存队列中的报文,则需要基于该目标报文携带的数据流标识信息,来确定第一线程是否为目标报文的处理线程,并且,如果第一线程为目标报文的处理线程,第一线程对目标报文进行报文处理;如果第一线程不为目标报文的处理线程,将目标报文存入目标报文的处理线程对应的缓存队列,从而目标报文的处理线程可以对目标报文进行报文处理,
本发明实施例中,通过虚拟交换机VSwitch中运行的第一线程获取目标报文;基于目标报文携带的数据流标识信息,确定第一线程是否为目标报文的处理线程;其中,数据流标识信息用于标识目标报文所属的数据流,以区分不同数据流的报文;如果确定第一线程为目标报文的处理线程,则第一线程对目标报文进行报文处理。由于属于同一数据流的报文携带的数据流标识信息相同,因此,通过本发明实施例提供的方案,处理同一数据流的报文的线程相同,从而可以避免将属于同一数据流的多个报文分配至VSwitch中的不同线程,即可以保证属于同一数据流的多个报文由同一线程来处理,提高了数据处理效率。
第二方面,本发明实施例还提供了一种报文处理装置,应用于虚拟交换机VSwitch中运行的第一线程,所述VSwitch中运行有至少两个线程,所述至少两个线程包括所述第一线程,如图4所示,所述装置包括:
报文获取模块410,用于获取待处理的目标报文;
线程确定模块420,用于基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程,其中,所述数据流标识信息用于标识所述目标报文所属的数据流,以区分不同数据流的报文;
报文处理模块430,用于如果所述线程确定模块确定所述第一线程为所述目标报文的处理线程,对所述目标报文进行报文处理。
本发明实施例中,通过虚拟交换机VSwitch中运行的第一线程获取目标报文;基于目标报文携带的数据流标识信息,确定第一线程是否为目标报文的处理线程;其中,数据流标识信息用于标识目标报文所属的数据流,以区分不同数据流的报文;如果确定第一线程为目标报文的处理线程,则第一线程对目标报文进行报文处理。由于属于同一数据流的报文携带的数据流标识信息相同,因此,通过本发明实施例提供的方案,处理同一数据流的报文的线程相同,从而可以避免将属于同一数据流的多个报文分配至VSwitch中的不同线程,即可以保证属于同一数据流的多个报文由同一线程来处理,提高了数据处理效率。
可选的,所述装置还可以包括:
报文存放模块,用于如果所述线程确定模块确定所述第一线程不为所述目标报文的处理线程,将所述目标报文存入所述目标报文的处理线程对应的缓存队列,以使得所述目标报文的处理线程对所述目标报文进行报文处理,其中,所述目标报文的处理线程为所述至少两个线程中除所述第一线程以外的线程。
可选的,不同的线程对应不同的哈希值;
所述线程确定模块,具体用于:
计算所述目标报文携带的数据流标识信息的哈希值;基于预设的线程与哈希值的对应关系,确定所述目标报文携带的数据流标识信息的哈希值是否为所述第一线程对应的哈希值;
如果所述目标报文携带的数据流标识信息的哈希值为所述第一线程对应的哈希值,确定所述第一线程为所述目标报文的处理线程。
可选的,所述装置还包括:
报文确定模块,用于在所述报文获取模块获取待处理的目标报文之后,在所述线程确定模块基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程之前,确定所述目标报文是否为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文;
如果所述目标报文为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文,触发所述报文处理模块对所述目标报文进行报文处理;
如果所述目标报文不为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文,触发所述线程确定模块基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程。
可选的,所述数据流标识信息包括:源IP地址和目的IP地址;或者,所述数据流标识信息包括:源IP地址,源端口,目的IP地址,目的端口,和传输层协议。
第三方面,本发明实施例还提供了一种交换机设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现第一方面所述的报文处理方法。具体的,处理器501在执行存储器503上所存放的程序时,运行至少两个线程,该至少两个线程包括第一线程,该第一线程可以为该至少两个线程中的任一线程,该第一线程可以用于执行第一方面所述的报文处理方法。
上述交换机设备提到的通信总线可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述交换机设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例中,通过虚拟交换机VSwitch中运行的第一线程获取目标报文;基于目标报文携带的数据流标识信息,确定第一线程是否为目标报文的处理线程;其中,数据流标识信息用于标识目标报文所属的数据流,以区分不同数据流的报文;如果确定第一线程为目标报文的处理线程,则第一线程对目标报文进行报文处理。由于属于同一数据流的报文携带的数据流标识信息相同,因此,通过本发明实施例提供的方案,处理同一数据流的报文的线程相同,从而可以避免将属于同一数据流的多个报文分配至VSwitch中的不同线程,即可以保证属于同一数据流的多个报文由同一线程来处理,提高了数据处理效率。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的报文处理方法。
本发明实施例中,通过虚拟交换机VSwitch中运行的第一线程获取目标报文;基于目标报文携带的数据流标识信息,确定第一线程是否为目标报文的处理线程;其中,数据流标识信息用于标识目标报文所属的数据流,以区分不同数据流的报文;如果确定第一线程为目标报文的处理线程,则第一线程对目标报文进行报文处理。由于属于同一数据流的报文携带的数据流标识信息相同,因此,通过本发明实施例提供的方案,处理同一数据流的报文的线程相同,从而可以避免将属于同一数据流的多个报文分配至VSwitch中的不同线程,即可以保证属于同一数据流的多个报文由同一线程来处理,提高了数据处理效率。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、宿主机、存储介质的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种报文处理方法,其特征在于,应用于虚拟交换机VSwitch中运行的第一线程,所述VSwitch中运行有至少两个线程,所述至少两个线程包括所述第一线程,所述方法包括:
获取待处理的目标报文;
基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程,其中,所述数据流标识信息用于标识所述目标报文所属的数据流,以区分不同数据流的报文;
如果确定所述第一线程为所述目标报文的处理线程,对所述目标报文进行报文处理。
2.根据权利要求1所述的方法,其特征在于,在所述基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程的步骤之后,所述方法还包括:
如果确定所述第一线程不为所述目标报文的处理线程,将所述目标报文存入所述目标报文的处理线程对应的缓存队列,以使得所述目标报文的处理线程对所述目标报文进行报文处理,其中,所述目标报文的处理线程为所述至少两个线程中除所述第一线程以外的线程。
3.根据权利要求1所述的方法,其特征在于,
不同的线程对应不同的哈希值;
所述基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程的步骤,包括:
计算所述目标报文携带的数据流标识信息的哈希值;
基于预设的线程与哈希值的对应关系,确定所述目标报文携带的数据流标识信息的哈希值是否为所述第一线程对应的哈希值;
如果所述目标报文携带的数据流标识信息的哈希值为所述第一线程对应的哈希值,确定所述第一线程为所述目标报文的处理线程。
4.根据权利要求1所述的方法,其特征在于,在所述获取待处理的目标报文的步骤之后,在所述基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程的步骤之前,所述方法还包括:
确定所述目标报文是否为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文;
如果所述目标报文为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文,对所述目标报文进行报文处理;
所述基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程的步骤,包括:
如果所述目标报文不为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文,基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述数据流标识信息包括:源IP地址和目的IP地址;或者,所述数据流标识信息包括:源IP地址,源端口,目的IP地址,目的端口,和传输层协议。
6.一种报文处理装置,其特征在于,应用于虚拟交换机VSwitch中运行的第一线程,所述VSwitch中运行有至少两个线程,所述至少两个线程包括所述第一线程,所述装置包括:
报文获取模块,用于获取待处理的目标报文;
线程确定模块,用于基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程,其中,所述数据流标识信息用于标识所述目标报文所属的数据流,以区分不同数据流的报文;
报文处理模块,用于如果所述线程确定模块确定所述第一线程为所述目标报文的处理线程,对所述目标报文进行报文处理。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
报文存放模块,用于如果所述线程确定模块确定所述第一线程不为所述目标报文的处理线程,将所述目标报文存入所述目标报文的处理线程对应的缓存队列,以使得所述目标报文的处理线程对所述目标报文进行报文处理,其中,所述目标报文的处理线程为所述至少两个线程中除所述第一线程以外的线程。
8.根据权利要求6所述的装置,其特征在于,不同的线程对应不同的哈希值;
所述线程确定模块,具体用于:
计算所述目标报文携带的数据流标识信息的哈希值;基于预设的线程与哈希值的对应关系,确定所述目标报文携带的数据流标识信息的哈希值是否为所述第一线程对应的哈希值;
如果所述目标报文携带的数据流标识信息的哈希值为所述第一线程对应的哈希值,确定所述第一线程为所述目标报文的处理线程。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
报文确定模块,用于在所述报文获取模块获取待处理的目标报文之后,在所述线程确定模块基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程之前,确定所述目标报文是否为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文;
如果所述目标报文为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文,触发所述报文处理模块对所述目标报文进行报文处理;
如果所述目标报文不为所述至少两个线程中所述第一线程以外的线程所存入所述第一线程对应的缓存队列中的报文,触发所述线程确定模块基于所述目标报文携带的数据流标识信息,确定所述第一线程是否为所述目标报文的处理线程。
10.根据权利要求6至9任一项所述的装置,其特征在于,所述数据流标识信息包括:源IP地址和目的IP地址;或者,所述数据流标识信息包括:源IP地址,源端口,目的IP地址,目的端口,和传输层协议。
11.一种交换机设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811534742.7A CN109495404B (zh) | 2018-12-14 | 2018-12-14 | 一种报文处理方法、装置、交换机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811534742.7A CN109495404B (zh) | 2018-12-14 | 2018-12-14 | 一种报文处理方法、装置、交换机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109495404A true CN109495404A (zh) | 2019-03-19 |
CN109495404B CN109495404B (zh) | 2021-03-26 |
Family
ID=65710320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811534742.7A Active CN109495404B (zh) | 2018-12-14 | 2018-12-14 | 一种报文处理方法、装置、交换机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109495404B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981409A (zh) * | 2019-03-26 | 2019-07-05 | 新华三技术有限公司 | 报文转发方法、装置及转发设备 |
CN112965824A (zh) * | 2021-03-31 | 2021-06-15 | 北京金山云网络技术有限公司 | 报文的转发方法及装置、存储介质、电子设备 |
CN116095028A (zh) * | 2023-01-13 | 2023-05-09 | 厦门网宿有限公司 | 报文发送方法、设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101605018A (zh) * | 2009-06-17 | 2009-12-16 | 中兴通讯股份有限公司 | 一种基于流的深度报文检测协议解码方法、设备及系统 |
CN102075427A (zh) * | 2011-01-18 | 2011-05-25 | 中兴通讯股份有限公司 | 基于安全联盟的IPSec报文处理方法及装置 |
CN102710497A (zh) * | 2012-04-24 | 2012-10-03 | 汉柏科技有限公司 | 多核多线程网络设备的报文处理方法及系统 |
CN103166845A (zh) * | 2013-03-01 | 2013-06-19 | 华为技术有限公司 | 数据处理方法和装置 |
US20150063355A1 (en) * | 2013-08-27 | 2015-03-05 | Oracle International Corporation | System and method for supporting data service addressing in an engineered system for middleware and application execution |
CN105577567A (zh) * | 2016-01-29 | 2016-05-11 | 国家电网公司 | 基于Intel DPDK的网络数据包并行处理方法 |
-
2018
- 2018-12-14 CN CN201811534742.7A patent/CN109495404B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101605018A (zh) * | 2009-06-17 | 2009-12-16 | 中兴通讯股份有限公司 | 一种基于流的深度报文检测协议解码方法、设备及系统 |
CN102075427A (zh) * | 2011-01-18 | 2011-05-25 | 中兴通讯股份有限公司 | 基于安全联盟的IPSec报文处理方法及装置 |
CN102710497A (zh) * | 2012-04-24 | 2012-10-03 | 汉柏科技有限公司 | 多核多线程网络设备的报文处理方法及系统 |
CN103166845A (zh) * | 2013-03-01 | 2013-06-19 | 华为技术有限公司 | 数据处理方法和装置 |
US20150063355A1 (en) * | 2013-08-27 | 2015-03-05 | Oracle International Corporation | System and method for supporting data service addressing in an engineered system for middleware and application execution |
CN105577567A (zh) * | 2016-01-29 | 2016-05-11 | 国家电网公司 | 基于Intel DPDK的网络数据包并行处理方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981409A (zh) * | 2019-03-26 | 2019-07-05 | 新华三技术有限公司 | 报文转发方法、装置及转发设备 |
CN109981409B (zh) * | 2019-03-26 | 2021-05-07 | 新华三技术有限公司 | 报文转发方法、装置及转发设备 |
CN112965824A (zh) * | 2021-03-31 | 2021-06-15 | 北京金山云网络技术有限公司 | 报文的转发方法及装置、存储介质、电子设备 |
CN112965824B (zh) * | 2021-03-31 | 2024-04-09 | 北京金山云网络技术有限公司 | 报文的转发方法及装置、存储介质、电子设备 |
CN116095028A (zh) * | 2023-01-13 | 2023-05-09 | 厦门网宿有限公司 | 报文发送方法、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109495404B (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109495404A (zh) | 一种报文处理方法、装置、交换机设备及存储介质 | |
CN104734964B (zh) | 报文处理方法、节点及系统 | |
US10873534B1 (en) | Data plane with flow learning circuit | |
CN107566206A (zh) | 一种流量测量方法、设备及系统 | |
JP5148707B2 (ja) | 待ち行列形成方法 | |
US20090092131A1 (en) | Method and Device for Rejecting Redundantly Retransmitted SIP Messages | |
US20190149345A1 (en) | Systems and methods for processing packets in a computer network | |
CN106789730B (zh) | 分片报文的处理方法及装置 | |
CN105991763B (zh) | 未决兴趣表行为 | |
CN110247986A (zh) | 一种文件传输方法、装置及电子设备 | |
CN107113282A (zh) | 一种抽取数据报文的方法及装置 | |
CN108769146A (zh) | 一种基于区块链的数据传输方法、装置及区块链系统 | |
US20140126374A1 (en) | Method and apparatus for load balancing | |
TWI652623B (zh) | 用於後援處理器單元的資訊查找請求處理或異常封包處理之方法及裝置 | |
CN109495320B (zh) | 一种数据报文的传输方法和装置 | |
CN108259346A (zh) | 一种等价路由表项建立方法和装置 | |
US8365045B2 (en) | Flow based data packet processing | |
CN105407096A (zh) | 基于流管理的报文数据检测方法 | |
CN104252504B (zh) | 数据查询方法、设备和系统 | |
CN107749826A (zh) | 一种数据包转发方法及系统 | |
CN107547311A (zh) | 一种流量统计方法及装置 | |
CN104270287A (zh) | 一种报文乱序检测方法及装置 | |
CN105704052A (zh) | 一种量化的拥塞通告消息生成方法及装置 | |
CN107086960B (zh) | 一种报文传输方法和装置 | |
US9652310B1 (en) | Method and apparatus for using consistent-hashing to ensure proper sequencing of message processing in a scale-out environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |