CN104038437A - Cavium多核处理器平台数据包负载均衡的实现方法 - Google Patents

Cavium多核处理器平台数据包负载均衡的实现方法 Download PDF

Info

Publication number
CN104038437A
CN104038437A CN201410306681.4A CN201410306681A CN104038437A CN 104038437 A CN104038437 A CN 104038437A CN 201410306681 A CN201410306681 A CN 201410306681A CN 104038437 A CN104038437 A CN 104038437A
Authority
CN
China
Prior art keywords
core
packet
passthrough
snort
cpu1
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.)
Pending
Application number
CN201410306681.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.)
Blue Shield Information Security Technology Co Ltd
Bluedon Information Security Technologies Co Ltd
Original Assignee
Blue Shield Information Security Technology 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 Blue Shield Information Security Technology Co Ltd filed Critical Blue Shield Information Security Technology Co Ltd
Priority to CN201410306681.4A priority Critical patent/CN104038437A/zh
Publication of CN104038437A publication Critical patent/CN104038437A/zh
Pending legal-status Critical Current

Links

Abstract

本发明公开了Cavium多核处理器平台数据包负载均衡的实现方法,该方法通过配置交换芯片上的某些端口为vlan进行数据通路设计,然后再进行多核处理系统的软件设计,目的是使得数据包在2个CPU之间均匀分配且得到处理。一个运行的程序是跑在SE模式下的passthrough,用于数据包的均衡分配,另一个运行的程序是跑在UM模式下的snort,用于业务处理,在这种设计模式下实现多核系统的负载均衡。通过本设计方法并通过实验可以找到每个CPU最优化的分数据包核个数与业务核个数组合,这样就能设计出高性能的产品,并且用软件的均衡负载解决了将数据包均匀分配到每个核来处理的这个问题,设计简单,且容易实现,成本低廉,不用其它硬件的辅助等。

Description

Cavium多核处理器平台数据包负载均衡的实现方法
技术领域
本发明涉及网络安全技术领域,尤其涉及Cavium多核处理器平台数据包负载均衡的实现方法。
背景技术
21世纪是信息爆炸的时代,互联网技术层出不穷,日新月异。人们的日常生活越来越离不开网络系统,从网上的QQ聊天,网上银行的系统交易,网上的淘宝购物等等。这些种种的网上行为都涉及到人们的个人的信息与隐私。还有家庭中的个人电脑的存储介质中都存放着人们的个人资料。要做到这些个人信息不被别人盗用,不被别人恶意删除,网络系统的安全尤其重要。一方面由于网络中数据信息的交流的加大,数据流量愈发频繁,需要处理大数据的设备;另一方面,要保证内部网络系统的信息安全,就需要有对内网数据包进行监测、报警的入侵报警系统。因此,在这样的大数据量的网络环境下,能处理高数据流量的入侵检测系统IDS就显得颇为重要。
现有技术中高性能IDS的设计在交换芯片中可以实现一种叫做VLAN Trunk的负载均衡,利用交换芯片端口的链路聚合的技术来实现负载均衡。该方法实际上是在网络七层模型的二层来实现的。Trunk是端口汇聚的意思,是通过配置软件的设置,将2个或多个物理端口绑定在一起实现一条逻辑路径为trunk1,而与Cavium CPU连接的8个端口又绑定在一起实现另一条逻辑路径为trunk2。然后在trunk1与trunk2之间设置一个vlan在,那么数据溜就可以在trunk1与trunk2之间实现传输,再经过对数据包的hash(hash有硬件来完成计算)就分配8个port中的其中一个,这种hash的计算可以是依照源IP,目的IP等,这样可以保证一个流可以分配到同一个Cavium的CPU上的一个port中。具体如图1所示。
这个vlan trunk的方法可以提高吞吐量是因为可以将几个端口的带宽合并,可以给端口提供一个几倍于独立端口的独享带宽,从而提高了整个数据包的吞吐量。
用VLAN的trunk的链路聚合来实现分流,这个技术用硬件实现,在交换芯片中理论上可以实现100%的转发,速度相比软件更快,同时也可以实现TCP三次握手在同一个CPU上。这是链路聚合的优点。但是这种链路聚合只是针对port来分流,对于32个核的Cavium的CPU,并没有均匀地分配到每个核来处理数据包。
除了上述方法外,还有在交换芯片中配置好,将依照IP与mac的基偶数分配到ATCA的两个Cavium的CPU上,然后每个CPU接收数据包再进行处理。因为每个进入CPU的数据包work的grup号默认为0grup,且将每一个CPU的32个核的grup号设置为0grup,那么进入该CPU的数据包work就可以平均分配到32个核进行处理。这种情况下的设计方案也可以实现数据包的负载均衡,具体如图3和图4所示。
该方法设计简单,将两个CPU的的所有的core设计为组号为0的核,每个Cavium中的调度器POW负责将数据包分发到各个来进行处理,那么这个POW就成为该设计方案的瓶颈,即POW会成为数据包word调度的瓶颈。这样的话,如果要两个CPU都利用上,主要将数据包流进行分类的工作就集中在交换芯片上来处理,可以以基数分到CPU1来处理,偶数分到CPU2进行处理。
发明内容
本发明为了克服现有技术的缺陷,提供一种Cavium多核处理器平台数据包负载均衡的实现方法,实现多核系统的负载均衡,设计出高性能的产品,并且用软件的均衡负载解决了将数据包均匀分配到每个核来处理的这个问题,设计简单,且容易实现,成本低廉,不用其它硬件的辅助等。
Cavium多核处理器平台数据包负载均衡的实现方法,其通过配置交换芯片上的某些端口为vlan进行数据通路设计,然后再进行多核处理系统的软件设计,目的是使得数据包在两个CPU之间均匀分配且得到处理,然后通过软件设计将数据包均匀分配到每个核来处理,一个运行的程序是跑在SE模式下的passthrough,用于数据包的均衡分配,另一个运行的程序是跑在UM模式下的snort,用于业务处理,在这种设计模式下实现多核系统的负载均衡,找到每个CPU最优化的分数据包核个数与业务核个数组合,这样就能设计出高性能的产品,并且用软件的均衡负载解决了将数据包均匀分配到每个核来处理。
交换芯片中的数据通路设计为数据包work从xe23进入交换芯片,交换芯片与vlan的配置与步骤过程如下:
1)配置xe23与xe9为一个vlan1,使数据包work可以进入CPU1;
2)配置xe11与xe22为一个vlan2,先进行CPU1的调试,在CPU1的1-4个核上运行SE模式下的passthrough,在5-32个核下运行UM模式下的passthrough,使得负载均衡后的数据包从5-32个核转发到交换芯片的端口xe11,然后再从xe22给IXIA网络测试仪收包;如果在IXIA网络测试仪发小速率,且没有超出Cavium CPU处理数据包瓶颈的情况下,IXIA网络测试仪收到的数据包与其发的数据包大致相等,则证明CPU1的数据通路配置好,然后在代码中也打印出来每个核的收包的统计信息,5-32个核在之后要运行snort程序;
3)配置xe12与xe1为一个vlan3,配置xe4与xe22为vlan4,同时去掉vlan2,再进行CPU2的调试,同样在CPU1的1-4核上运行SE模式下的passthrough,在5-32个核下运行UM模式下的passthrough;在CPU2的1-2核上运行SE模式下的passthrough,在3-32个核下运行UM模式下的passthrough,这种情况下,经过CPU2的3-32个核的数据包会经过xe4传到IXIA网络测试仪;同理在IXIA网络测试仪所发的数据包在没有超出Cavium CPU的处理的瓶颈下,IXIA网络测试仪收到的数据包大致是其发的数据包的一半,则证明CPU2的数据通路配置好,然后在代码中也打印出来每个核的收包的统计信息,3-32核在之后要运行snort程序;
4)去掉多余的vlan,只是剩下配置vlan1与vlan3,然后在CPU1上1-4核运行SE的passthrough,5-32核运行snort;在CPU2上1-2核运行SE的passthrough,3-32核运行snort;在代码中加入调试信息输出每个核接收到数据包的个数,如果在输出终端见到IXIA网络测试仪发的总数据包数平均分配到每一个核来处理,则表示上面的端口配置成功。
两个CPU间的负载均衡的设计方法为:
为了达到运行SE的passthrough程序与运行业务核的snort程序都运行,则需要将本来在snort中初始化的代码的部分移植到SE的passthrough的代码中,同时删除snort中对硬件初始化的部分代码,修改后就可以同时运行分数据包SE的passthrough与运行业务处理的snort,修改好后的执行流程为:
1)运行SE的passthrough的程序的core为4个,运行业务的snort的core为28个,且在启动脚本中设置同时运行,然后SE的passthrough等待28个业务核snort全部运行起来,SE的passthrough再往下运行;
2)同时snort等待共享内存中的pshminfo->magic值设为MAGIC,而不断的循环等待;
3)运行SE中的passthrough进行Cavium平台的硬件初始化;
4)设置28个业务核的core分别为一个组号,同时设置前4个运行SE的passthrough的4个核为同一个组;
5)运行SE的passthrough分配共享内存,并设置pshminfo->magic=MAGIC;
6)然后SE的passthrough的4个核不断地从POW地调度收包,收包与分包的函数为bl_getwork(),该函数是不断的从POW收包,然后大于本CPU1的workcores的数据包则分发给CPU2,小于本CPU1的workcores则分发给本CPU1的各个业务核的snort进行处理;
7)CPU1中5-32核与CPU2中3-32核运行snort,则从POW中调度相应的组号的数据包work来进行处理。
本发明技术方案带来的有益效果:
通过本发明可以动态地配置分发的数据包的核数(即跑SE的核数)和处理数据包的核数(即跑业务snort的核数),从而找到最优化的,能处理数据包最多的组合。这样的充分的发挥Cavium的多核CPU的性能,设计出高性能的产品。结合Cavium的其它高速处理数据包的模块与调度模块,分担了core的优先级调度的计算,跑业务snort的各个核只是负责业务的处理,这样就可以设计出高性能的产品,以满足当下高数据量,高流量的网络需求。
还有用软件的均衡负载解决了将数据包均匀分配到每个核来处理的这个问题,设计简单,且容易实现,成本低廉,不用其它硬件的辅助等。
此外,本发明虽然是用了若干核来处理数据包,但是经过负载均衡后也要依靠POW来调度数据包,所以瓶颈依然在于POW的限制。但是基于实验的数据包可得,不用核来做均衡负载的数据包,可以处理64字节的100Mbps的为8%左右,而用分核来做均衡负载的数据包,在同等的条件下可以达到12%左右。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是现有技术中多个端口划分为一个Trunk的示意图;
图2是现有技术中两个Trunk划分为一个vlan的示意图;
图3是现有技术中在switch进行IP,MAC奇偶分类的示意图;
图4是现有技术中一个CPU的32个核设为同一个组用于收包的示意图;
图5是本发明方法的实施例中数据通路的设计图;
图6是本发明方法的实施例中两个CPU分核的参数设计图;
图7是本发明方法的实施例中运行SE与业务snort的代码同步流程图;
图8是本发明方法的实施例中两个CPU只有一个vlan的数据传输的情况示意图;
图9是本发明方法的实施例中两个CPU有两个vlan的数据传输的情况示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明是在Cavium平台上开发高性能产品时提出来的,目的是尽量多地检测到进入内网的数据包,就所设计的Cavium平台要尽可能快地匹配处理数据包。该发明为实现多核系统的负载均衡需要解决以下问题:1、要在每个核上跑Cavium中的linux模式,即每个核跑一个snort的应用程序来达到最高的处理数据包。2、每个Cavium的CPU上分出若干个核跑Cavium的SE模式,来经行数据包的分发处理。3、数据包是依照硬件打的tag值来进行分配,这个tag值是依照源IP,目的IP,协议号来由硬件设置tag值,然后进行hash来分到不同的核中处理数据包。4、2个CPU之间与交换芯片有四个接口可以配置为两对vlan共4个port来进行优化,来达到尽可能多的CPU间的传输数据包的目的。通过本发明方法,就能将进入Cavium平台的数据包大致均匀地分配到不同core中来处理,以至于最大限度的利用好Cavium的高性能的处理能力,这样就能设计出在高流量数据的带宽前提下的高性能产品。
本发明方法实施例中交换芯片的数据通路部分设计如图5所示,数据包work从箭头处的xe23进入交换芯片。交换芯片与vlan的配置与步骤如下:
1)配置xe23与xe9为一个vlan1,使数据包work可以进入CPU1;
2)配置xe11与xe22为一个vlan2,先进行CPU1的调试。在CPU1的1-4个核上运行SE模式下的passthrough,再5-32个核下运行UM模式下的passthrough,使得负载均衡后的数据包从5-32个核转发到交换芯片的端口xe11,然后再从xe22给IXIA网络测试仪收包。如果在IXIA网络测试仪发小速率,且没有超出Cavium CPU处理数据包瓶颈的情况下,IXIA网络测试仪收到的数据包与其发的数据包大致相等。则证明CPU1的数据通路配置好,然后在代码中也打印出来每个核的收包的统计信息,5-32个核在之后要运行snort程序。
3)配置xe12与xe1为一个vlan3,配置xe4与xe22为vlan4,同时去掉vlan2,再进行CPU2的调试。同样在CPU1的1-4核上运行SE模式下的passthrough,在5-32个核下运行UM模式下的passthrough;在CPU2的1-2核上运行SE模式下的passthrough,在3-32个核下运行UM模式下的passthrough。这种情况下,经过CPU2的3-32个核的数据包会经过xe4传到IXIA网络测试仪。同理在IXIA网络测试仪所发的数据包在没有超出Cavium CPU的处理的瓶颈下,IXIA网络测试仪收到的数据包大致是其发的数据包的一半。则证明CPU2的数据通路配置好,然后在代码中也打印出来每个核的收包的统计信息,3-32核在之后要运行snort程序。
4)去掉多余的vlan,只是剩下配置vlan1与vlan3,然后在CPU1上1-4核运行SE的passthrough,5-32核运行snort;在CPU2上1-2核运行SE的passthrough,3-32核运行snort;在代码中加入调试信息输出每个核接收到数据包的个数,如果在输出终端见到IXIA网络测试仪发的总数据包数平均分配到每一个核来处理,则表示上面的端口配置成功。
需要说明的是:CPU1与交换芯片相连的有xe9-xe12,CPU2与交换芯片相连的有xe1-xe4,在ATCA板块中RTM背板中的数据包的入口与交换芯片的xe22-xe29端口相连。
在交换芯片的数据通路设计中,选取交换芯片中的端口xe22-xe29的某一个与CPU1或CPU2的某一个配置成vlan就可以实现了数据通路的设计。
例如上述配置中,选取交换芯片中端口xe22-xe29中的xe23与CPU1相连的端口xe9-xe12中的xe9,组成一个vlan1(xe23,xe9)。
vlan2,vlan3,vlan4的划分原理与选取方法要依照上面的端口分配规则来配置。
如图6所示是两个CPU之间分核的参数设计图,其中定义的一个数据包结构包含了图中的信息:
Mycores:表示CPU1的总个数;
Peercores:表示对方CPU2的个数;
Myworkcores:表示运行业务snort的核的个数,图中myworkcores=28;
Peerworkcores:表示对方运行业务snort的核的个数,图中peerworkcores=30;
Firstsecores:表示CPU上第一个balance cores的位置,图中CPU1与CPU2的firstsecores=0;
Firstworkcores:表示CPU上第一个跑业务的核的位置,
图中CPU1中firstworkcores=5,CPU2中firstworkscores=3;
定义的数据结果如下:
为了设计出多核的处理系统,兼顾分包的SE程序与处理的snort的程序,需要对现有的代码进行改造,其中涉及的改造的代码主要包括以下功能点:1)将snort中初始化的部分移到passthrough中。2)实现同步当SE的passthrough的初始化完成后,snort才进行收包get_work()的处理。
同步的过程如图7所示,需要一个共享内存来实现跑SE的passthrough的程序与跑业务snort的同步。
设计的同步的数据结构如下所示:
为了方便统计,还要一些统计信息,例如:
coreflag:表示进程起来的时候的标志位,置1表示core是一个workcore运行的。
total_bl:表示数据包进行分到跑业务核中的数据包的总的数目。
total_peer:表示给CPU2处理的数据包的总的个数。
total_worker:表示处理数据包的core的个数。
total_bycore[X]:表示第X个业务core上面所处理的数据包的总的个数。
同步的流程简单地描述如下:
为了达到运行SE的passthrough程序与运行业务核的snort程序都运行,则需要将本来在snort中初始化的代码的部分移植到SE的passthrough的代码中,同时删除snort中对硬件初始化的部分代码,修改后就可以同时运行分数据包SE的passthrough与运行业务处理的snort,修改好后的执行流程如下:
1)运行SE的passthrough的程序的core为4个,运行业务的snort的core为28个,且在启动脚本中设置同时运行,然后SE的passthrough等待28个业务核snort全部运行起来,SE的passthrough再往下运行。
2)同时snort等待共享内存中的pshminfo->magic值设为MAGIC,而不断的循环等待;
3)运行SE中的passthrough进行Cavium平台的硬件初始化;
4)设置28个业务核的core分别为一个组号,同时设置前4个运行SE的passthrough的4个核为同一个组;
5)运行SE的passthrough分配共享内存,并设置pshminfo->magic=MAGIC;
6)然后SE的passthrough的4个核不断地从POW地调度收包,收包与分包的函数为bl_getwork(),该函数是不断的从POW收包,然后大于本CPU1的workcores的数据包则分发给CPU2,小于本CPU1的workcores则分发给本CPU1的各个业务核的snort进行处理;
7)CPU1中5-32核与CPU2中3-32核运行snort,则从POW中调度相应的组号的数据包work来进行处理。
为了将处理的数据包均匀地分配到两个CPU中运行业务程序snort的不同的core中,我们采用了分核的算法,该分核的算法是基于数据包work中的tag来进行hash运算得到的。该tag是在配置文件中设置为基于源IP,目的IP,协议号来计算得到的。
由下面的算法我们可以计算得到该work是分到哪一个的core来进行处理:
tag=(work->word1.tag>>24)+(work->word1.tag>>16)+(work->word1.tag>>8)+(work->word1.tag&0xff);
core=tag%blinfo.workcores;
如果计算得到的core大于本CPU1的core则发到CPU2。
如果计算得到的core小于本CPU1的core则分发到CPU1的不同的核中进行处理。
此外,经过实验发现,当数据包的数目太大,第一个CPU分给第二个CPU是会出现丢包的现象。由CPU1传到CPU2的数据包,本方法是将连接两个CPU的端口划一个vlan,那么同一个vlan的两个端口就可以传数据包。实验可知,CPU1的出端口与CPU2的进端口要通过PKO(Packet output unit)的连接,数据包的流通瓶颈在于PKO,这是由实验得出的结论。由上面的实现的分析步骤可以看出,一个Cavium的CPU一共有4个万兆的端口可用,既然两个CPU之间的瓶颈是PKO,就可以设计成用两个万兆口与之相连或者三个万兆口相连,用于传输数据包work之用途,会达到更好的性能。这种设计是对本发明方法的改进。
具体如图8和图9所示分别为两个CPU只有一个vlan的数据传输的情况和两个CPU只有两个vlan的数据传输的情况图。
以上的改进方法并不是十全十美的,为了使数据包的丢包率减少,可以采取一切尽可能的方法,其中一种就是如图9所述的两个或以上的数据传输通路的设计来替代图8中只有一条的数据通路的方案。
以上对本发明实施例所提供的Cavium多核处理器平台数据包负载均衡的实现方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (6)

1.Cavium多核处理器平台数据包负载均衡的实现方法,其特征在于,该方法通过配置交换芯片上的某些端口为vlan进行数据通路设计,然后再进行多核处理系统的软件设计,目的是使得数据包在两个CPU之间均匀分配且得到处理,然后通过软件设计将数据包均匀分配到每个核来处理,一个运行的程序是跑在SE模式下的passthrough,用于数据包的均衡分配,另一个运行的程序是跑在UM模式下的snort,用于业务处理,在这种设计模式下实现多核系统的负载均衡,找到每个CPU最优化的分数据包核个数与业务核个数组合,这样就能设计出高性能的产品,并且用软件的均衡负载解决了将数据包均匀分配到每个核来处理。
2.根据权利要求1所述的方法,其特征在于,交换芯片中的数据通路设计为数据包work从xe23进入交换芯片,交换芯片与vlan的配置与步骤过程如下:
1)配置xe23与xe9为一个vlan1,使数据包work可以进入CPU1;
2)配置xe11与xe22为一个vlan2,先进行CPU1的调试,在CPU1的1-4个核上运行SE模式下的passthrough,在5-32个核下运行UM模式下的passthrough,使得负载均衡后的数据包从5-32个核转发到交换芯片的端口xe11,然后再从xe22给IXIA网络测试仪收包;如果在IXIA网络测试仪发小速率,且没有超出Cavium CPU处理数据包瓶颈的情况下,IXIA网络测试仪收到的数据包与其发的数据包大致相等,则证明CPU1的数据通路配置好,然后在代码中也打印出来每个核的收包的统计信息,5-32个核在之后要运行snort程序;
3)配置xe12与xe1为一个vlan3,配置xe4与xe22为vlan4,同时去掉vlan2,再进行CPU2的调试,同样在CPU1的1-4核上运行SE模式下的passthrough,在5-32个核下运行UM模式下的passthrough;在CPU2的1-2核上运行SE模式下的passthrough,在3-32个核下运行UM模式下的passthrough,这种情况下,经过CPU2的3-32个核的数据包会经过xe4传到IXIA网络测试仪;同理在IXIA网络测试仪所发的数据包在没有超出Cavium CPU的处理的瓶颈下,IXIA网络测试仪收到的数据包大致是其发的数据包的一半,则证明CPU2的数据通路配置好,然后在代码中也打印出来每个核的收包的统计信息,3-32核在之后要运行snort程序;
4)去掉多余的vlan,只是剩下配置vlan1与vlan3,然后在CPU1上1-4核运行SE的passthrough,5-32核运行snort;在CPU2上1-2核运行SE的passthrough,3-32核运行snort;在代码中加入调试信息输出每个核接收到数据包的个数,如果在输出终端见到IXIA网络测试仪发的总数据包数平均分配到每一个核来处理,则表示上面的端口配置成功。
3.根据权利要求1或2所述的方法,其特征在于,交换芯片与vlan的配置中CPU1与交换芯片相连的有xe9-xe12,CPU2与交换芯片相连的有xe1-xe4,在ATCA板块中RTM背板中的数据包的入口与交换芯片的xe22-xe29端口相连;在交换芯片的数据通路设计中,选取交换芯片中的端口xe22-xe29的某一个与CPU1或CPU2的某一个配置成vlan就能够实现数据通路的设计。
4.根据权利要求1所述的方法,其特征在于,为了达到运行SE的passthrough程序与运行业务核的snort程序都运行,则需要将本来在snort中初始化的代码的部分移植到SE的passthrough的代码中,同时删除snort中对硬件初始化的部分代码,修改后就可以同时运行分数据包SE的passthrough与运行业务处理的snort,修改好后的执行流程为:
1)运行SE的passthrough的程序的core为4个,运行业务的snort的core为28个,且在启动脚本中设置同时运行,然后SE的passthrough等待28个业务核snort全部运行起来,SE的passthrough再往下运行;
2)同时snort等待共享内存中的pshminfo->magic值设为MAGIC,而不断的循环等待;
3)运行SE中的passthrough进行Cavium平台的硬件初始化;
4)设置28个业务核的core分别为一个组号,同时设置前4个运行SE的passthrough的4个核为同一个组;
5)运行SE的passthrough分配共享内存,并设置pshminfo->magic=MAGIC;
6)然后SE的passthrough的4个核不断地从POW地调度收包,收包与分包的函数为bl_getwork(),该函数是不断的从POW收包,然后大于本CPU1的workcores的数据包则分发给CPU2,小于本CPU1的workcores则分发给本CPU1的各个业务核的snort进行处理;
7)CPU1中5-32核与CPU2中3-32核运行snort,则从POW中调度相应的组号的数据包work来进行处理。
5.根据权利要求1所述的方法,其特征在于,为了将处理的数据包均匀地分配到两个CPU中的运行业务程序snort的不同核中,则采用了分核的算法,该分核的算法是基于数据包work中的tag来进行hash运算得到的,该tag是在配置文件中设置为基于源IP,目的IP,协议号来计算得到的,由下面的算法能计算得到work是分到哪一个的core来进行处理:
tag=(work->word1.tag>>24)+(work->word1.tag>>16)+(work->word1.tag>>8)+(work->word1.tag&0xff);
core=tag%blinfo.workcores;
如果计算得到的core大于本CPU1的core则发到CPU2;
如果计算得到的core小于本CPU1的core则分发到CPU1的不同的核中进行处理。
6.根据权利要求1-5任一项所述的方法,其特征在于,CPU1的出端口与CPU2的进端口要通过PKO(Packet output unit)的连接,数据包的流通瓶颈在于PKO,为克服此现象可设计成将剩下没有用到的交换芯片与Cavium CPU相连的万兆口配置成vlan,用于传输数据包work之用途,会达到更好的性能。
CN201410306681.4A 2014-06-30 2014-06-30 Cavium多核处理器平台数据包负载均衡的实现方法 Pending CN104038437A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410306681.4A CN104038437A (zh) 2014-06-30 2014-06-30 Cavium多核处理器平台数据包负载均衡的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410306681.4A CN104038437A (zh) 2014-06-30 2014-06-30 Cavium多核处理器平台数据包负载均衡的实现方法

Publications (1)

Publication Number Publication Date
CN104038437A true CN104038437A (zh) 2014-09-10

Family

ID=51469029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410306681.4A Pending CN104038437A (zh) 2014-06-30 2014-06-30 Cavium多核处理器平台数据包负载均衡的实现方法

Country Status (1)

Country Link
CN (1) CN104038437A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105337888A (zh) * 2015-11-18 2016-02-17 华为技术有限公司 基于多核转发的负载均衡方法、装置及虚拟交换机
CN113626160A (zh) * 2021-07-07 2021-11-09 厦门市美亚柏科信息股份有限公司 一种基于cavium处理器的网络数据包高并发处理方法与系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217467A (zh) * 2007-12-28 2008-07-09 杭州华三通信技术有限公司 核间负载分发装置及方法
CN101442513A (zh) * 2007-11-20 2009-05-27 杭州华三通信技术有限公司 实现多种业务处理功能的方法和多核处理器设备
CN102004673A (zh) * 2010-11-29 2011-04-06 中兴通讯股份有限公司 多核处理器负载均衡的处理方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101442513A (zh) * 2007-11-20 2009-05-27 杭州华三通信技术有限公司 实现多种业务处理功能的方法和多核处理器设备
CN101217467A (zh) * 2007-12-28 2008-07-09 杭州华三通信技术有限公司 核间负载分发装置及方法
CN102004673A (zh) * 2010-11-29 2011-04-06 中兴通讯股份有限公司 多核处理器负载均衡的处理方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张洛什: "《中国优秀硕士学位论文》", 4 July 2013 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105337888A (zh) * 2015-11-18 2016-02-17 华为技术有限公司 基于多核转发的负载均衡方法、装置及虚拟交换机
CN105337888B (zh) * 2015-11-18 2018-12-07 华为技术有限公司 基于多核转发的负载均衡方法、装置及虚拟交换机
CN113626160A (zh) * 2021-07-07 2021-11-09 厦门市美亚柏科信息股份有限公司 一种基于cavium处理器的网络数据包高并发处理方法与系统

Similar Documents

Publication Publication Date Title
US10728176B2 (en) Ruled-based network traffic interception and distribution scheme
CN107278362B (zh) 云计算系统中报文处理的方法、主机和系统
CN107196870B (zh) 一种基于dpdk的流量动态负载均衡方法
Cheng et al. Using high-bandwidth networks efficiently for fast graph computation
Hamadi et al. Fast path acceleration for open vSwitch in overlay networks
CN108964959A (zh) 一种用于虚拟化平台的网卡直通系统及数据包监管方法
US10616099B2 (en) Hypervisor support for network functions virtualization
CN108363615A (zh) 用于可重构处理系统的任务分配方法和系统
CN107409096A (zh) 自适应负载平衡
CN104954252B (zh) 在高性能、可扩展和无掉话的数据中心交换结构内的流控制
CN107409097A (zh) 利用自动化结构架构的负载平衡移动性
CN103532876A (zh) 数据流的处理方法与系统
CN108984327B (zh) 报文转发方法、多核cpu及网络设备
US11314868B2 (en) Rapidly establishing a chain of trust in a computing system
DE112019000965T5 (de) Technologien zur reduzierung der nic-anschlüsse mit beschleunigter schaltung
CN106612335A (zh) 采用Docker容器实现IoT的信息交换和通信的方法
CN106657279B (zh) 一种网络业务加速方法和设备
CN104038437A (zh) Cavium多核处理器平台数据包负载均衡的实现方法
US20200077535A1 (en) Removable i/o expansion device for data center storage rack
Wu et al. {HyperOptics}: A High Throughput and Low Latency Multicast Architecture for Datacenters
CN107204942A (zh) 一种基于五元组实现服务链透明传输的实现方法
Al-Salim et al. Energy efficient tapered data networks for big data processing in IP/WDM networks
Ni et al. Advancing network function virtualization platforms with programmable nics
US11294688B2 (en) Parallel information processing on multi-core computing platforms
Niu et al. Unveiling performance of NFV software dataplanes

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140910