CN108306832B - 一种网络流量分流方法及装置 - Google Patents
一种网络流量分流方法及装置 Download PDFInfo
- Publication number
- CN108306832B CN108306832B CN201810083429.XA CN201810083429A CN108306832B CN 108306832 B CN108306832 B CN 108306832B CN 201810083429 A CN201810083429 A CN 201810083429A CN 108306832 B CN108306832 B CN 108306832B
- Authority
- CN
- China
- Prior art keywords
- data packet
- network data
- service process
- network
- target service
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/20—Traffic policing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
Abstract
本发明提供了一种网络流量分流方法及装置,该方法应用于多核设备,包括:获取用于用户态访问的网络数据包;对网络数据包进行剥离分析,得到目标业务进程编号;若目标业务进程编号小于分流器进程所对应的业务进程数,获取目标业务进程编号所对应的目标虚拟网卡编号,其中,所述分流器进程是预先基于配置文件所开启的;将网络数据包发送至目标虚拟网卡编号所对应的目标虚拟网卡,以使目标虚拟网卡将网络数据包转发至目标业务进程。基于本发明,可以在低端网卡的单队列或者少队列分流过程中,业务进程实现无锁无竞争地处理网络数据包,充分保障CPU核的高效利用率。
Description
技术领域
本发明涉及网络流量分配技术领域,更具体地说,涉及一种网络流量分流方法及装置。
背景技术
一般的高速网络数据分析系统均采用多核设备,在某CPU核上绑定业务进程并行处理网络数据包。业务进程在对网络流进行流重组的情况下,为保证流前后相继的报文绝对保序,需要对网络流量进行分流。
现阶段的网络流量分流方式虽然均从软件分流的层面上提高分流的及时性和效率,但是,由于并未考虑到低端网卡单队列或者少队列,比如2队列或者4队列分流过程中如何避免业务进程的竞争,这就会就产生CPU核利用率过低的问题。
发明内容
有鉴于此,本发明提供一种网络流量分流方法及装置,以解决低端网卡单队列或者少队列分流过程中如何避免业务进程的竞争的问题。技术方案如下:
一种网络流量分流方法,应用于多核设备,所述方法包括:
获取用于用户态访问的网络数据包;
对所述网络数据包进行剥离分析,得到目标业务进程编号;
若所述目标业务进程编号小于分流器进程所对应的业务进程数,获取所述目标业务进程编号所对应的目标虚拟网卡编号,其中,所述分流器进程是预先基于配置文件所开启的;
将所述网络数据包发送至所述目标虚拟网卡编号所对应的目标虚拟网卡,以使所述目标虚拟网卡将所述网络数据包转发至所述目标业务进程。
优选的,所述获取用于用户态访问的网络数据包,包括:
从物理网卡处获取原始网络数据包;
将所述原始网络数据包从所述物理网卡所对应的内存空间映射到用户态所对应的用户空间,得到用于用户态访问的网络数据包。
优选的,所述对所述网络数据包进行剥离分析,得到目标业务进程编号,包括:
在分流器进程处于开启状态的情况下,判断所述网络数据包的数据包类型是否为预设偏移数据包类型;
若所述网络数据包的数据包类型不为预设偏移数据包类型,判断所述网络数据包是否为IP碎片;
若所述网络数据包为IP碎片,判断所述网络数据包是否为首包;
若所述网络数据包为首包或者所述网络数据包不为IP碎片,判断所述网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;
若所述网络数据包在预设分流表内,从所述预设分流表内查找所述网络数据包的标识所对应的目标业务进程编号;
若所述网络数据包不在预设分流表内,根据所述网络数据包的三元组信息或者五元组信息计算目标业务进程编号;
若所述网络数据包的数据包类型为预设偏移数据包类型,对所述网络数据包的数据包头进行偏移处理,并判断处理后的所述网络数据包是否为IP碎片;
若处理后的所述网络数据包为IP碎片,判断处理后的所述网络数据包是否为首包;
若处理后的所述网络数据包为首包或者处理后的所述网络数据包不为IP碎片,判断处理后的所述网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;
若处理后的所述网络数据包在预设分流表内,从所述预设分流表内查找处理后的所述网络数据包的标识所对应的目标业务进程编号;
若处理后的所述网络数据包不在预设分流表内,根据处理后的所述网络数据包的三元组信息或者五元组信息计算目标业务进程编号。
优选的,还包括:
在所述多核设备配置为混合模式的情况下,判断所述目标业务进程编号所预先绑定CPU核与物理网卡是否为同一路;
若否,将所述网络数据包拷贝至所述目标业务进程编号所预先绑定CPU核的同路内存中。
优选的,所述三元组信息包括:源IP地址、目的IP地址和源端口号。
优选的,所述五元组信息包括:源IP地址、目的IP地址、源端口号、目的端口号和传输层协议。
一种网络流量分流装置,包括:第一获取模块、剥离分析模块、第二获取模块和发送模块;
所述第一获取模块,用于获取用于用户态访问的网络数据包;
所述剥离分析模块,用于对所述网络数据包进行剥离分析,得到目标业务进程编号;
所述第二获取模块,用于若所述目标业务进程编号小于分流器进程所对应的业务进程数,获取所述目标业务进程编号所对应的目标虚拟网卡编号,其中,所述分流器进程是预先基于配置文件所开启的;
所述发送模块,用于将所述网络数据包发送至所述目标虚拟网卡编号所对应的目标虚拟网卡,以使所述目标虚拟网卡将所述网络数据包转发至所述目标业务进程。
优选的,所述第一获取模块,具体用于:
从物理网卡处获取原始网络数据包;将所述原始网络数据包从所述物理网卡所对应的内存空间映射到用户态所对应的用户空间,得到用于用户态访问的网络数据包。
优选的,所述剥离分析模块,具体用于:
在分流器进程处于开启状态的情况下,判断所述网络数据包的数据包类型是否为预设偏移数据包类型;若所述网络数据包的数据包类型不为预设偏移数据包类型,判断所述网络数据包是否为IP碎片;若所述网络数据包为IP碎片,判断所述网络数据包是否为首包;若所述网络数据包为首包或者所述网络数据包不为IP碎片,判断所述网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;若所述网络数据包在预设分流表内,从所述预设分流表内查找所述网络数据包的标识所对应的目标业务进程编号;若所述网络数据包不在预设分流表内,根据所述网络数据包的三元组信息或者五元组信息计算目标业务进程编号;若所述网络数据包的数据包类型为预设偏移数据包类型,对所述网络数据包的数据包头进行偏移处理,并判断处理后的所述网络数据包是否为IP碎片;若处理后的所述网络数据包为IP碎片,判断处理后的所述网络数据包是否为首包;若处理后的所述网络数据包为首包或者处理后的所述网络数据包不为IP碎片,判断处理后的所述网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;若处理后的所述网络数据包在预设分流表内,从所述预设分流表内查找处理后的所述网络数据包的标识所对应的目标业务进程编号;若处理后的所述网络数据包不在预设分流表内,根据处理后的所述网络数据包的三元组信息或者五元组信息计算目标业务进程编号。
优选的,还包括:判断模块和拷贝模块;
所述判断模块,用于在所述多核设备配置为混合模式的情况下,判断所述目标业务进程编号所预先绑定CPU核与物理网卡是否为同一路;若否,则触发所述拷贝模块;
所述拷贝模块,用于将所述网络数据包拷贝至所述目标业务进程编号所预先绑定CPU核的同路内存中。
相较于现有技术,本发明实现的有益效果为:
以上本发明提供的一种网络流量分流方法及装置,该方法应用于多核设备,可以在不修改现有操作系统以及不需要特殊硬件支持的情况下,通过分流器进程将网络数据包通过目标虚拟网卡有序地分配到目标业务进程进行处理。这就可以在低端网卡的单队列或者少队列分流过程中,业务进程实现无锁无竞争地处理网络数据包,充分保障CPU核的高效利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的网络流量分流方法的方法流程图;
图2为本发明实施例提供的网络流量分流方法的部分方法流程图;
图3为本发明实施例提供的网络流量分流方法的另一方法流程图;
图4示出双路十核设备系统示意图;
图5为本发明实施例提供的网络流量分流装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种网络流量分流方法,该方法应用于多核设备,方法流程图如图1所示,包括如下步骤:
S10,获取用于用户态访问的网络数据包;
本实施例中,网络数据包为用户态可直接进行访问的数据包,保存于预分配固定大小的内存池中。
具体的,可从物理网卡处获取网络流量的原始网络数据包;进而,通过将内核中物理网卡驱动的内存空间映射到用户空间,将原始网络数据包从内存空间映射到用户空间,从而得到用于用户态访问的网络数据包。
S20,对网络数据包进行剥离分析,得到目标业务进程编号;
本实施例中,针对单路多核或者多路多核的多核设备,如果分流器进程开启需要确定分流器进程所对要绑定的CPU核以及业务进程所绑定的CPU核,开启分流器进程需要采用如下步骤:
首先,根据配置文件获取分流器进程的配置值,以确定独立模式或者混合模式下分流器进程所对应负责的业务进程个数以及物理网卡的队列数。
其次,注册业务进程用到的虚拟网卡,通过配置文件配置分流器进程为独立模式或者是混合模式,同时分流器进程的个数和模式决定了虚拟网卡的个数。利用虚拟网卡向业务进程的接收队列发送数据包,从而实现了业务进程间可以无锁处理接收到的网络数据包。
进而,通过读取配置文件并处理后,来创建多核设备的分流器进程,且单独的分流器进程绑定单独的CPU核,单独的分流器进程处理网络数据包,且多核设备配置为独立模式或者混合模式。
此外,在获取分流器进程的配置值的同时,还可初始化自定义的信号对应中断动作,也就是在特定中断发生时执行特定的处理动作。
具体实现过程中,步骤S20“对网络数据包进行剥离分析,得到目标业务进程编号”可以具体采用以下步骤,方法流程图如图2所示:
S201,在分流器进程处于开启状态的情况下,判断网络数据包的数据包类型是否为预设偏移数据包类型;若网络数据包的数据包类型不为预设偏移数据包类型,则执行步骤S202;若网络数据包的数据包类型为预设偏移数据包类型,则执行步骤S207;
本实施例中,预设偏移数据包类型包括但不局限于PPPoE、MPL和VLAN,可根据实际需要具体设置。
S202,判断网络数据包是否为IP碎片;若网络数据包为IP碎片,则执行步骤S203;
本实施例中,可通过网络数据包的三元组信息来判断是否为IP碎片,具体的,三元组信息包括IP地址、目的IP地址和源端口号。
S203,判断网络数据包是否为首包;
本实施例中,若网络数据包不为首包,则等待首包到达。
S204,若网络数据包为首包或者网络数据包不为IP碎片,判断网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;若网络数据包在预设分流表内,则执行步骤S205;若网络数据包不在预设分流表内,则执行步骤S206;
S205,从预设分流表内查找网络数据包的标识所对应的目标业务进程编号;
S206,根据网络数据包的三元组信息或者五元组信息计算目标业务进程编号;
本实施例中,通过对三元组信息或者五元组信息进行哈希计算,得到目标业务进程编号,具体的,五元组信息包括源IP地址、目的IP地址、源端口号、目的端口号和传输层协议。
S207,对网络数据包的数据包头进行偏移处理,并判断处理后的网络数据包是否为IP碎片;若处理后的网络数据包为IP碎片,则执行步骤S208;若处理后的网络数据包为首包或者处理后的网络数据包不为IP碎片,则执行步骤S209;
本实施例中,可根据网络数据包的数据包类型进行偏移处理,具体的数据包类型与偏移规则,可根据实际需要具体设置,本实施例不做具体限定。
S208,判断处理后的网络数据包是否为首包;
S209,判断处理后的网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;若处理后的网络数据包在预设分流表内,则执行步骤S210;若处理后的网络数据包不在预设分流表内,则执行步骤S211;
S210,从预设分流表内查找处理后的网络数据包的标识所对应的目标业务进程编号;
S211,根据处理后的网络数据包的三元组信息或者五元组信息计算目标业务进程编号。
S30,若目标业务进程编号小于分流器进程所对应的业务进程数,获取目标业务进程编号所对应的目标虚拟网卡编号,其中,所述分流器进程是预先基于配置文件所开启的;
本实施例中,业务进程与虚拟网卡的对应关系预先设置完成,同时,业务进程编号与虚拟网卡编号的对应关系也为预置。
S40,将网络数据包发送至目标虚拟网卡编号所对应的目标虚拟网卡,以使目标虚拟网卡将网络数据包转发至目标业务进程;
本实施例中,分流特性为五元组分流或者三元组分流,通过配置文件配置选择,需要分流的网络数据包只在一个固定CPU核上处理,不需要分流的网络数据包均衡到各CPU核上平衡处理。
此外,为避免混合模式下分流所出现的跨QPI总线降低系统运行效率的问题,在图1示出的网络流量分流方法的基础上,还包括如下步骤,方法流程图如图3所示:
S50,在多核设备配置为混合模式的情况下,判断目标业务进程编号所预先绑定CPU核与物理网卡是否为同一路;若否,则执行步骤S60;
S60,将网络数据包拷贝至目标业务进程编号所预先绑定CPU核的同路内存中。
需要说明的是,步骤S50~步骤S60在步骤S20之后即可,与步骤S30~步骤S40,并不限定先后关系。
还需要说明的是,若目标业务进程编号所预先绑定CPU核与物理网卡为同一路,则不执行任何操作。
图4示出双路十核设备系统示意图。除主进程之外每路各开启两个分流器进程绑定两个CPU核,各业务进程绑定其余CPU核。即在充分保证物理网口稳定性的情况下,对多路多核设备配置混合模式,由各路CPU核处理物理网卡的网络数据包时,经哈希计算得到数据包分发到业务进程所绑定的CPU核是否与物理网卡同路,决定是否拷贝网络数据包到业务进程同路内存中,以此避免多次跨QPI总线访问物理网卡造成的效率低下。
以上步骤S201~步骤S212仅仅是本申请实施例公开的步骤S20“对网络数据包进行剥离分析,得到目标业务进程编号”过程的一种优选的实现方式,有关此过程的具体实现方式可根据自己的需求任意设置,在此不做限定。
本发明实施例提供的网络流量分流方法,应用于多核设备,可以在不修改现有操作系统以及不需要特殊硬件支持的情况下,通过分流器进程将网络数据包通过目标虚拟网卡有序地分配到目标业务进程进行处理。这就可以在低端网卡的单队列或者少队列分流过程中,业务进程实现无锁无竞争地处理网络数据包,充分保障CPU核的高效利用率。
基于上述实施例提供的网络流量分流方法,本发明实施例则对应提供执行上述网络流量分流方法的装置,其结构示意图如图5所示,包括:第一获取模块10、剥离分析模块20、第二获取模块30和发送模块40;
第一获取模块10,用于获取用于用户态访问的网络数据包;
剥离分析模块20,用于对网络数据包进行剥离分析,得到目标业务进程编号;
第二获取模块30,用于若目标业务进程编号小于分流器进程所对应的业务进程数,获取目标业务进程编号所对应的目标虚拟网卡编号,其中,所述分流器进程是预先基于配置文件所开启的;
发送模块40,用于将网络数据包发送至目标虚拟网卡编号所对应的目标虚拟网卡,以使目标虚拟网卡将网络数据包转发至目标业务进程。
在其他一些实施例中,第一获取模块10,具体用于:
从物理网卡处获取原始网络数据包;将原始网络数据包从物理网卡所对应的内存空间映射到用户态所对应的用户空间,得到用于用户态访问的网络数据包。
在其他一些实施例中,剥离分析模块20,具体用于:
在分流器进程处于开启状态的情况下,判断网络数据包的数据包类型是否为预设偏移数据包类型;若网络数据包的数据包类型不为预设偏移数据包类型,判断网络数据包是否为IP碎片;若网络数据包为IP碎片,判断网络数据包是否为首包;若网络数据包为首包或者网络数据包不为IP碎片,判断网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;若网络数据包在预设分流表内,从预设分流表内查找网络数据包的标识所对应的目标业务进程编号;若网络数据包不在预设分流表内,根据网络数据包的三元组信息或者五元组信息计算目标业务进程编号;若网络数据包的数据包类型为预设偏移数据包类型,对网络数据包的数据包头进行偏移处理,并判断处理后的网络数据包是否为IP碎片;若处理后的网络数据包为IP碎片,判断处理后的网络数据包是否为首包;若处理后的网络数据包为首包或者处理后的网络数据包不为IP碎片,判断处理后的网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;若处理后的网络数据包在预设分流表内,从预设分流表内查找处理后的网络数据包的标识所对应的目标业务进程编号;若处理后的网络数据包不在预设分流表内,根据处理后的网络数据包的三元组信息或者五元组信息计算目标业务进程编号。
此外,为避免混合模式下分流所出现的跨QPI总线降低系统运行效率的问题,在图5示出的网络流量分流装置的基础上,还包括如下模块:
判断模块,用于在多核设备配置为混合模式的情况下,判断目标业务进程编号所预先绑定CPU核与物理网卡是否为同一路;若否,则触发拷贝模块;
拷贝模块,用于将网络数据包拷贝至目标业务进程编号所预先绑定CPU核的同路内存中。
本发明实施例提供的网络流量分流装置,可以在不修改现有操作系统以及不需要特殊硬件支持的情况下,通过分流器进程将网络数据包通过目标虚拟网卡有序地分配到目标业务进程进行处理。这就可以在低端网卡的单队列或者少队列分流过程中,业务进程实现无锁无竞争地处理网络数据包,充分保障CPU核的高效利用率。
以上对本发明所提供的一种网络流量分流方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素,或者是还包括为这些过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种网络流量分流方法,其特征在于,应用于多核设备,所述方法包括:
获取用于用户态访问的网络数据包;
对所述网络数据包进行剥离分析,得到目标业务进程编号;
若所述目标业务进程编号小于分流器进程所对应的业务进程数,获取所述目标业务进程编号所对应的目标虚拟网卡编号,其中,所述分流器进程是预先基于配置文件所开启的,所述分流器进程的个数和模式决定了虚拟网卡的个数,所述目标业务进程编号与所述目标虚拟网卡编号的对应关系为预先设置完成的;
将所述网络数据包发送至所述目标虚拟网卡编号所对应的目标虚拟网卡,以使所述目标虚拟网卡将所述网络数据包转发至所述目标业务进程。
2.根据权利要求1所述的方法,其特征在于,所述获取用于用户态访问的网络数据包,包括:
从物理网卡处获取原始网络数据包;
将所述原始网络数据包从所述物理网卡所对应的内存空间映射到用户态所对应的用户空间,得到用于用户态访问的网络数据包。
3.根据权利要求1所述的方法,其特征在于,所述对所述网络数据包进行剥离分析,得到目标业务进程编号,包括:
在分流器进程处于开启状态的情况下,判断所述网络数据包的数据包类型是否为预设偏移数据包类型;
若所述网络数据包的数据包类型不为预设偏移数据包类型,判断所述网络数据包是否为IP碎片;
若所述网络数据包为IP碎片,判断所述网络数据包是否为首包;
若所述网络数据包为首包或者所述网络数据包不为IP碎片,判断所述网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;
若所述网络数据包在预设分流表内,从所述预设分流表内查找所述网络数据包的标识所对应的目标业务进程编号;
若所述网络数据包不在预设分流表内,根据所述网络数据包的三元组信息或者五元组信息计算目标业务进程编号;
若所述网络数据包的数据包类型为预设偏移数据包类型,对所述网络数据包的数据包头进行偏移处理,并判断处理后的所述网络数据包是否为IP碎片;
若处理后的所述网络数据包为IP碎片,判断处理后的所述网络数据包是否为首包;
若处理后的所述网络数据包为首包或者处理后的所述网络数据包不为IP碎片,判断处理后的所述网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;
若处理后的所述网络数据包在预设分流表内,从所述预设分流表内查找处理后的所述网络数据包的标识所对应的目标业务进程编号;
若处理后的所述网络数据包不在预设分流表内,根据处理后的所述网络数据包的三元组信息或者五元组信息计算目标业务进程编号。
4.根据权利要求1所述的方法,其特征在于,还包括:
在所述多核设备配置为混合模式的情况下,判断所述目标业务进程编号所预先绑定CPU核与物理网卡是否为同一路;
若否,将所述网络数据包拷贝至所述目标业务进程编号所预先绑定CPU核的同路内存中。
5.根据权利要求3所述的方法,其特征在于,所述三元组信息包括:源IP地址、目的IP地址和源端口号。
6.根据权利要求3所述的方法,其特征在于,所述五元组信息包括:源IP地址、目的IP地址、源端口号、目的端口号和传输层协议。
7.一种网络流量分流装置,其特征在于,应用于多核设备,包括:第一获取模块、剥离分析模块、第二获取模块和发送模块;
所述第一获取模块,用于获取用于用户态访问的网络数据包;
所述剥离分析模块,用于对所述网络数据包进行剥离分析,得到目标业务进程编号;
所述第二获取模块,用于若所述目标业务进程编号小于分流器进程所对应的业务进程数,获取所述目标业务进程编号所对应的目标虚拟网卡编号,其中,所述分流器进程是预先基于配置文件所开启的,所述分流器进程的个数和模式决定了虚拟网卡的个数,所述目标业务进程编号与所述目标虚拟网卡编号的对应关系为预先设置完成的;
所述发送模块,用于将所述网络数据包发送至所述目标虚拟网卡编号所对应的目标虚拟网卡,以使所述目标虚拟网卡将所述网络数据包转发至所述目标业务进程。
8.根据权利要求7所述的装置,其特征在于,所述第一获取模块,具体用于:
从物理网卡处获取原始网络数据包;将所述原始网络数据包从所述物理网卡所对应的内存空间映射到用户态所对应的用户空间,得到用于用户态访问的网络数据包。
9.根据权利要求7所述的装置,其特征在于,所述剥离分析模块,具体用于:
在分流器进程处于开启状态的情况下,判断所述网络数据包的数据包类型是否为预设偏移数据包类型;若所述网络数据包的数据包类型不为预设偏移数据包类型,判断所述网络数据包是否为IP碎片;若所述网络数据包为IP碎片,判断所述网络数据包是否为首包;若所述网络数据包为首包或者所述网络数据包不为IP碎片,判断所述网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;若所述网络数据包在预设分流表内,从所述预设分流表内查找所述网络数据包的标识所对应的目标业务进程编号;若所述网络数据包不在预设分流表内,根据所述网络数据包的三元组信息或者五元组信息计算目标业务进程编号;若所述网络数据包的数据包类型为预设偏移数据包类型,对所述网络数据包的数据包头进行偏移处理,并判断处理后的所述网络数据包是否为IP碎片;若处理后的所述网络数据包为IP碎片,判断处理后的所述网络数据包是否为首包;若处理后的所述网络数据包为首包或者处理后的所述网络数据包不为IP碎片,判断处理后的所述网络数据包的标识是否在预设分流表内,所述预设分流表内记录有历史网络数据包的标识及其所对应的业务进程编号;若处理后的所述网络数据包在预设分流表内,从所述预设分流表内查找处理后的所述网络数据包的标识所对应的目标业务进程编号;若处理后的所述网络数据包不在预设分流表内,根据处理后的所述网络数据包的三元组信息或者五元组信息计算目标业务进程编号。
10.根据权利要求7所述的装置,其特征在于,还包括:判断模块和拷贝模块;
所述判断模块,用于在所述多核设备配置为混合模式的情况下,判断所述目标业务进程编号所预先绑定CPU核与物理网卡是否为同一路;若否,则触发所述拷贝模块;
所述拷贝模块,用于将所述网络数据包拷贝至所述目标业务进程编号所预先绑定CPU核的同路内存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810083429.XA CN108306832B (zh) | 2018-01-29 | 2018-01-29 | 一种网络流量分流方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810083429.XA CN108306832B (zh) | 2018-01-29 | 2018-01-29 | 一种网络流量分流方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108306832A CN108306832A (zh) | 2018-07-20 |
CN108306832B true CN108306832B (zh) | 2021-07-27 |
Family
ID=62866932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810083429.XA Active CN108306832B (zh) | 2018-01-29 | 2018-01-29 | 一种网络流量分流方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108306832B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109889448B (zh) * | 2019-03-25 | 2021-03-02 | 武汉思普崚技术有限公司 | 一种网络流量的分流方法及装置 |
CN110908798B (zh) * | 2019-11-08 | 2022-11-25 | 丁剑明 | 多进程协同式网络流量解析方法及装置 |
CN111371608B (zh) * | 2020-02-28 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 一种部署sfc业务链的方法、装置和介质 |
CN111711577B (zh) * | 2020-07-24 | 2022-07-22 | 杭州迪普信息技术有限公司 | 流控设备的报文转发方法及装置 |
CN113556265B (zh) * | 2021-07-14 | 2024-02-20 | 国家计算机网络与信息安全管理中心 | 数据处理方法、计算机设备及可读存储介质 |
CN116170396A (zh) * | 2022-12-29 | 2023-05-26 | 天翼云科技有限公司 | 一种im消息传输方法及系统 |
CN117201405B (zh) * | 2023-11-07 | 2023-12-29 | 成都卓拙科技有限公司 | 一种网络包分流方法及装置、存储介质及电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102497322A (zh) * | 2011-12-19 | 2012-06-13 | 曙光信息产业(北京)有限公司 | 一种基于分流网卡和多核cpu实现的高速包过滤设备和方法 |
CN102811169B (zh) * | 2012-07-24 | 2015-05-27 | 成都卫士通信息产业股份有限公司 | 采用哈希算法进行多核并行处理的vpn实现方法及系统 |
CN103312601B (zh) * | 2013-05-31 | 2017-04-19 | 汉柏科技有限公司 | 用户态到内核态的数据报文处理方法 |
CN103428226B (zh) * | 2013-08-30 | 2017-04-19 | 天津汉柏汉安信息技术有限公司 | 一种用户态与内核通信的方法与系统 |
WO2016042519A2 (en) * | 2014-09-17 | 2016-03-24 | Simless, Inc. | Apparatuses, methods and systems for implementing a trusted subscription management platform |
CN105518620B (zh) * | 2014-10-31 | 2019-02-01 | 华为技术有限公司 | 一种网卡配置方法及资源管理中心 |
-
2018
- 2018-01-29 CN CN201810083429.XA patent/CN108306832B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108306832A (zh) | 2018-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108306832B (zh) | 一种网络流量分流方法及装置 | |
US6901079B1 (en) | Providing different quality of services (QOS) to different point-to-point sessions | |
US11146531B2 (en) | Separating CGN forwarding and control | |
US20020059169A1 (en) | System for quickly collecting operational data for internet destinations | |
CN107769992B (zh) | 一种报文解析分流方法及装置 | |
EP3979577B1 (en) | Queue congestion control method, device and storage medium | |
CN112437023B (zh) | 虚拟化安全网元数据处理方法、系统、介质和云平台 | |
CN111314179A (zh) | 网络质量检测方法、装置、设备和存储介质 | |
CN111049947B (zh) | 报文转发方法及装置、电子设备、存储介质 | |
CN113726636B (zh) | 软件转发设备的数据转发方法、系统及电子设备 | |
CN109672594B (zh) | IPoE报文处理方法、装置及宽带远程接入服务器 | |
US9716673B2 (en) | Packet storage method and packet storage apparatus | |
US9137158B2 (en) | Communication apparatus and communication method | |
CN113055420B (zh) | Https业务识别方法、装置及计算设备 | |
WO2023125056A1 (zh) | 网络数据的控制方法、装置和存储介质及电子设备 | |
CN113132273B (zh) | 一种数据转发方法及装置 | |
CN109818882B (zh) | 一种执行QoS策略的方法及装置 | |
CN107086965B (zh) | 一种arp表项的生成方法、装置及交换机 | |
CN112929277B (zh) | 一种报文处理方法及装置 | |
CN115550470A (zh) | 工控网络数据包解析方法、装置、电子设备与存储介质 | |
US8819107B2 (en) | Relay apparatus, recording medium storing a relay program, and a relay method | |
CN110995680A (zh) | 虚拟机报文接收方法、系统、装置及计算机可读存储介质 | |
CN106027405B (zh) | 数据流的分流方法及装置 | |
CN106209556B (zh) | 一种地址学习、报文传输的方法及装置 | |
CN110908798A (zh) | 多进程协同式网络流量解析方法及装置 |
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 |