CN112671653B - 一种基于多核异构平台的cam表的操作方法 - Google Patents
一种基于多核异构平台的cam表的操作方法 Download PDFInfo
- Publication number
- CN112671653B CN112671653B CN202011387149.1A CN202011387149A CN112671653B CN 112671653 B CN112671653 B CN 112671653B CN 202011387149 A CN202011387149 A CN 202011387149A CN 112671653 B CN112671653 B CN 112671653B
- Authority
- CN
- China
- Prior art keywords
- message
- cam table
- cam
- new
- session
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000012423 maintenance Methods 0.000 claims abstract description 21
- 230000008569 process Effects 0.000 claims description 45
- 230000007246 mechanism Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 12
- 238000004519 manufacturing process Methods 0.000 abstract description 6
- 238000010276 construction Methods 0.000 abstract description 5
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于多核异构平台的CAM表的操作方法,通过将CAM表与会话表的构建进行结合,使得基于会话表的报文对CAM表的新建操作集中在CAM表主维护核CPUS中,大幅降低了对CAM表的锁竞争,从而保证了多核并发时报文转发的性能能够随着CPU个数的增加而线性增长。
Description
技术领域
本发明属于计算机网络技术领域,具体涉及一种基于多核异构平台的CAM表的操作方法。
背景技术
二层交换机的地址(CAM)表是由物理地址(Media Access Control,Mac)、Vlan、二层设备组成的地址表。CAM表是全局表,在数据转发系统中,数据转发方每收到或者发送一个报文时都需要对CAM表进行查询和/或更新操作,对CAM表的更新包括增加CAM表项、删除CAM表项、更新CAM表项操作。
现有的基于多核异构平台的报文转发系统中对CAM表的操作如图1所示,从图中可以看到,用户态下不同的转发核、内核态下的线程或软中断在进行报文转发的过程中都需要对CAM表进行查询和/或更新操作,其中,内核态的线程作为配置模块,该配置模块用于配置静态CAM表,例如增加CAM表项、删除CAM表项等;内核态的软中断为慢速转发核,该慢速转发核用于新建或刷新会话表时需要查询CAM表获取当前报文的二层出口设备;用户态的进程为快速转发核,该快速转发核在收到报文时需要新建CAM表项、更新CAM表项。此外,由于CAM表具有超时机制,所以每个CPU都需要维护CAM表的超时功能。
在报文转发过程中,对CAM表进行操作最多的应该是基于会话转发报文对CAM表的操作,这些报文并发时吞吐甚至可以达到每秒10G,而且,由于CAM表为全局表,因此在多核报文转发系统中会存在多核竞争同一CAM表的问题。综上所述,在多核报文转发系统报文转发量较大时,对CAM表项的更新操作必然会导致多核并发性能的大幅下降,从而影响整个异构平台报文转发系统的吞吐量。
发明内容
有鉴于此,本发明提供了一种基于多核异构平台的CAM表的操作方法,能够解决基于多核异构平台的报文转发系统的吞吐量问题。
本发明提供的一种基于多核异构平台的CAM表的操作方法,包括以下步骤:
内核态进程从用户态进程转发的报文中选出需要新建CAM表项的报文作为待新建CAM表项报文,所述内核态进程将所述待新建CAM表项报文转发至CAM表主维护核,所述CAM表主维护核运行在用户态;所述CAM表主维护核查询是否存在与所述待新建CAM表项报文对应的CAM表项,如果存在,则所述CAM表主维护核将所述待新建CAM表项报文转发给用户态进程新建会话;否则,所述CAM表主维护核为所述待新建CAM表项报文新建会话及新建CAM表项。
进一步地,所述用户态进程转发的报文的生成过程,包括以下步骤:
所述用户态进程判断是否需要为收到的新报文新建会话,如果需要则查询所述新报文是否存在对应的CAM表项,如果所述新报文存在对应的CAM表项,但所述新报的右方向报文不存在对应的CAM表项,那么将所述新报文转发至所述内核态进程;如果所述新报文存在对应的CAM表项且所述新报文的右方向报文也存在对应的CAM表项,则当所述CAM表项满足更新条件时,更新CAM表,否则,结束流程;如果所述新报文不存在对应的CAM表项,则将增加标签后的所述新报文转发至所述内核态进程;
如果不需要新建会话,则结束流程。
进一步地,所述CAM表的更新过程为无锁操作。
进一步地,所述内核态进程从用户态进程转发的报文中选出需要新建CAM表项的报文作为待新建CAM表项报文的过程包括:
所述内核态进程将带有标签的报文作为所述待新建CAM表项报文;
所述内核态进程接收的报文为不带标签的报文时,判断接收的报文的右方向报文是否需要新建CAM表项,如果需要新建CAM表项,则将接收的报文作为所述待新建CAM表项报文;如果不需要新建CAM表项,则将接收的报文转发至所述用户态进程。
进一步地,所述CAM表主维护核为所述待新建CAM表项报文新建会话及新建CAM表项,所述方法还包括:所述CAM表主维护核将当前时间赋值到新建的CAM表项的time项中。
进一步地,所述方法还包括将会话表项的两个方向报文的五元组使用filter set机制设置到网卡上。
有益效果:
1、本发明通过将CAM表与会话表的构建进行结合,使得基于会话表的报文对CAM表的新建操作集中在CAM表主维护核CPUS中,大幅降低了对CAM表的锁竞争,从而保证了多核并发时报文转发的性能能够随着CPU个数的增加而线性增长。
2.本发明通过仅在会话表新建或删除时更新CAM表项,大幅降低了CAM表项的更新次数,同时,其它模块基于会话表对CAM表操作的报文则采用无锁查找和更新等操作方式,有效提升了并发性能。
3.本发明通过采用filter set功能将会话的五元组配置到网卡,使得会话的报文可以直接被网卡发送到对应的CPU中处理,避免报文在快速模块中基于会话的处理逻辑中进行报文倒核,从而有效提升了整体的转发性能。
附图说明
图1为现有的多核异构平台下报文转发系统中对CAM表的操作示意图。
图2为本发明提供的一种基于多核异构平台的CAM表的操作方法的流程图。
图3为本发明提供的一种基于多核异构平台的CAM表的操作方法的操作示意图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供的一种基于多核异构平台的CAM表的操作方法,其核心思想是:根据当报文需要新建会话时则该报文的CAM表项也不存在的原理,将新建CAM表项与新建会话进行结合,从而实现了由会话触发的CAM表操作。
本发明提供的一种基于多核异构平台的CAM表的操作方法,流程如图2所示,具体包括以下步骤:
步骤1、用户态进程收到报文后,其中,用户态进程为快速转发核,记为CPUX,用户态进程查询是否需要为当前报文新建会话,如果不需要新建会话则不对CAM表进行操作,结束本流程;否则,执行步骤2。
当用户态进程判断当前报文的会话不存在时,可能存在以下两种情况:一是,当前报文的会话确实不存在;二是,当前报文所在会话的右方向报文需要在收到各端口返回的报文后才能确定当前报文是否存在对应的CAM表项。因此,基于上述分析,本发明将CAM表的操作与会话的判断相结合,能够对上述两种情况进行判断,在慢速转发核处理报文的过程中,即可获知当前报文是否存在与之对应的CAM表项,待当前报文从慢速转发核发往快速转发核时,即可将该报文直接转发至用于配置CAM表的主CPU中,该主CPU为CAM表主维护核CPUS,由CPUS完成CAM表的写操作,从而有效减少了多CPU核系统对CAM表项的写操作。其中,CPUS为运行于用户态的快速转发核。
步骤2、快速转发核CPUX查询CAM表,判断当前报文是否存在对应的CAM表项。如果当前报文及其右方向报文均存在对应的CAM表项,再判断当前报文是否满足更新CAM表项的条件,如果条件满足则更新CAM表,然后结束本流程;如果条件不满足,则不对CAM表进行操作,结束本流程。
如果当前报文存在对应的CAM表项,但其右方向报文不存在对应的CAM表项,那么将当前报文转发至对应的内核态慢速转发核,慢速转发核记为CPUY,执行步骤3。
如果当前报文不存在对应的CAM表项,则为当前报文增加cam_cpus标签,该标签用于标记该报文需要发送到CPUS来进行CAM处理,再将当前报文转发给对应的CPUY,执行步骤3。
具体来说,更新CAM表项的条件为:若当前查询到的CAM表项中的具体内容与当前报文的信息不同则需要更新CAM表项。为了优化整体性能,本专利中CAM表项的更新是随着会话表的清除开始更新时间,即会话表仅在新建和删除时,才可能触发基于会话转发的报文的更新。更新原则为cur_time-CAM项超时时间大于设定的阈值时,才更新CAM表项。更新操作并不需要加锁,只需将对应cam表项的超时时间改为当前时间即可。
对于需要转发至慢速转发核的报文包含两种情况,一种是打标签cam_cpus的报文,这类报文是需要慢速报文转发至CPUS进行处理的;另一种则是报文的右方向报文未查到CAM表项,这类报文则是需要慢速转发核进一步判断是否需要新建CAM表项的。这是因为同一会话的同一方向的MAC地址和入口是相同的,故而会话表在其报文的左方向会话一定会新建CAM表项,而右方向则在右包首包处理完毕后,该右包的CAM表项也一定建立。然而会话是其左方向首包构建,在进入在慢速逻辑处理新建报文的策略时,其右包尚未收到和处理。这时策略是可以通过策略判断其右方向的报文CAM表项是否存在的,如果发现报文的右包CAM项未查找成功,这个报文的右方向是需要在右包第一次到来时新建会话的,故而流程图中报文从慢速返回快速时,需要增加判断是否其会话右方向报文是否需要新增CAM表项。
步骤3、慢速转发核CPUY接收到当前报文后进行策略匹配操作。具体来说,对于接收的带有cam_cpus标签的报文,慢速转发核CPUY会将其转发至CAM表主维护核CPUS,执行步骤4;对于接收的报文中,报文本身存在对应的CAM表项,但其右方向报文没有CAM表项的,则判断右方向报文是否需要新建CAM表项,如果需要新建,则将当前报文转发至CAM表主维护核CPUS,执行步骤4;反之,则将当前报文转发至对应的原快速转发核CPUX,执行步骤5。
上述过程如图3所示,在新建会话时,首先进入慢速转发核的CPU去匹配策略,如图3中箭头①所示,匹配会话成功后会将策略匹配结果返回给原来的快速转发核CPU,如图中箭头②所示,由快速转发核新建会话表项。本专利中将CAM学习过程与新建会话结合起来,即当慢速转发核判断当前新建的会话表项需要新建CAM表项时,则将该报文通过箭头③转发至CAM表主维护核CPUS中。由此,所有需要新建CAM表项的基于会话表转发的报文,均会被转发至CPUS上,由CPUS完成CAM表项的新建操作。
本发明中将所有对CAM表的写操作均集中到CPUS上的方式,优化了CAM表的操作。因为在现有技术中新建会话必然需要倒核2次,而在本发明中当需要操作CAM表时,仅需要在慢速转发核将报文发送至快速转发核时,将快速转发核转换为CAM表主维护核CPUS,这使得基于会话表进行的CAM表新建操作全部集中在同一个CPU中,大大减少了多核系统操作同一CAM表所产生的的并发竞争锁开销,相对原有设计来说虽然倒核次数未变但整体性能却大有提升。
步骤4、CAM表主维护核CPUS对接收到的报文,首先查询该报文对应的CAM表项是否存在,如果存在对应的CAM表项,则将当前报文转发回原CPUX新建会话;否则,则新建会话和CAM表项,并将当前时间赋值到CAM表项的time项中,结束本流程。
CPUS对接收到的报文再次判断其是否存在对应的CAM表项,这是因为在多核系统中,可能存在多个CPU收到需要创建同一个CAM表项的报文,再次经过CPUS处理时,CPUS最早处理的项目已经完成了对应的CAM表项的构建,这时CPUS则不必再新建CAM表项。
本发明中为了减少CAM表项更新的次数在本专利CAM的更新设计为仅会话创建和删除时需要判断是否需更新CAM项,故而仍需在CPUX创建会话时判断是否更新CAM项。
步骤5、速转发核CPUX为接收到的报文新建会话,然后再判断当前报文是否满足更新CAM表项的条件,如果条件满足则更新CAM表,然后结束本流程;如果条件不满足,则不对CAM表进行操作,结束本流程。
此外,为了优化设计,将会话表项对应五元组的两个方向报文的五元组使用filter set机制设置到网卡上,使得网卡在收到该会话报文时即可以将报文送到CPUS,而不是被CPUX收到后再通过软件倒核到CPUS中,大大提升整体性能。
这样做优化整体设计,将在CAM核新建会话成功的报文的五元组使用filter set功能配置到网卡上,使得后续该会话的报文可以直接被网卡发送到此CPU中处理,避免报文在快速模块中基于会话的处理逻辑中进行报文倒核。比如说原来报文在快速是快速CPU1收到,新建报文时这种报文应送到慢速CPU1匹配策略,再次新建会话时,报文会被送回原快速CPU即,快速CPU1处理,由于同一报文通常情况下仅会被1个CPU,这条会话原本都只会被快速CPU1收到。基于此,本专利为了避免此类报文性能开销,将此条会话的五元组使用网卡filter set配置,使五元组相同报文只被CPUS处理。从而保证此会话后续报文均可以被CPUS收到,减少报文的倒核次数,因为本专利中同一会话表的报文只能被同一CPU收到,如果不一致将被倒核到快速会话所建立的CPU上处理。
该filter set处理随着此会话的删除而删除,即会话建立同时配置到网卡上,而如果会话被删除,则该配置同时被删除。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于多核异构平台的CAM表的操作方法,其特征在于,包括以下步骤:
用户态进程判断是否需要为收到的新报文新建会话,如果需要则查询所述新报文是否存在对应的CAM表项,如果所述新报文存在对应的CAM表项,但所述新报文的右方向报文不存在对应的CAM表项,那么将所述新报文转发至内核态进程;如果所述新报文存在对应的CAM表项且所述新报文的右方向报文也存在对应的CAM表项,则当所述CAM表项满足更新条件时,更新CAM表,否则,结束流程;如果所述新报文不存在对应的CAM表项,则将增加标签后的所述新报文转发至所述内核态进程;如果不需要新建会话,则结束流程;
内核态进程从用户态进程转发的报文中选出需要新建CAM表项的报文作为待新建CAM表项报文,所述内核态进程将所述待新建CAM表项报文转发至CAM表主维护核,所述CAM表主维护核运行在用户态;所述CAM表主维护核查询是否存在与所述待新建CAM表项报文对应的CAM表项,如果存在,则所述CAM表主维护核将所述待新建CAM表项报文转发给用户态进程新建会话;否则,所述CAM表主维护核为所述待新建CAM表项报文新建会话及新建CAM表项。
2.根据权利要求1所述的方法,其特征在于,所述CAM表的更新过程为无锁操作。
3.根据权利要求1所述的方法,其特征在于,所述内核态进程从用户态进程转发的报文中选出需要新建CAM表项的报文作为待新建CAM表项报文的过程包括:
所述内核态进程将带有标签的报文作为所述待新建CAM表项报文;
所述内核态进程接收的报文为不带标签的报文时,判断接收的报文的右方向报文是否需要新建CAM表项,如果需要新建CAM表项,则将接收的报文作为所述待新建CAM表项报文;如果不需要新建CAM表项,则将接收的报文转发至所述用户态进程。
4.根据权利要求1所述的方法,其特征在于,所述CAM表主维护核为所述待新建CAM表项报文新建会话及新建CAM表项,所述方法还包括:所述CAM表主维护核将当前时间赋值到新建的CAM表项的time项中。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括将会话表项的两个方向报文的五元组使用filter set机制设置到网卡上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011387149.1A CN112671653B (zh) | 2020-12-02 | 2020-12-02 | 一种基于多核异构平台的cam表的操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011387149.1A CN112671653B (zh) | 2020-12-02 | 2020-12-02 | 一种基于多核异构平台的cam表的操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112671653A CN112671653A (zh) | 2021-04-16 |
CN112671653B true CN112671653B (zh) | 2022-07-01 |
Family
ID=75400758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011387149.1A Expired - Fee Related CN112671653B (zh) | 2020-12-02 | 2020-12-02 | 一种基于多核异构平台的cam表的操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671653B (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8599850B2 (en) * | 2009-09-21 | 2013-12-03 | Brocade Communications Systems, Inc. | Provisioning single or multistage networks using ethernet service instances (ESIs) |
CN101958938B (zh) * | 2010-06-01 | 2013-07-24 | 福建星网锐捷网络有限公司 | 基于网络处理器的mac地址表的学习方法及装置 |
CN106487784B (zh) * | 2016-09-28 | 2019-06-25 | 东软集团股份有限公司 | 一种会话迁移的方法、装置及防火墙 |
CN106713023B (zh) * | 2016-12-14 | 2020-01-07 | 东软集团股份有限公司 | Cam表的操作方法及装置 |
CN106789617B (zh) * | 2016-12-22 | 2020-03-06 | 东软集团股份有限公司 | 一种报文转发方法及装置 |
CN108616614B (zh) * | 2018-04-28 | 2021-04-06 | 深圳市风云实业有限公司 | Mac地址管理方法、装置及电子设备 |
CN110224947A (zh) * | 2019-06-05 | 2019-09-10 | 东软集团股份有限公司 | 一种多核转发系统中的报文处理方法、装置及设备 |
-
2020
- 2020-12-02 CN CN202011387149.1A patent/CN112671653B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN112671653A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11836135B1 (en) | Method and system for transparent database query caching | |
CN110808910B (zh) | 一种支持QoS的OpenFlow流表节能存储架构及其方法 | |
US8937942B1 (en) | Storing session information in network devices | |
US8484242B1 (en) | Method and system for transparent database connection pooling and query queuing | |
US6643706B1 (en) | Scaleable route redistribution mechanism | |
JP3957570B2 (ja) | ルータ装置 | |
CN108363621B (zh) | numa架构下的报文转发方法、装置、存储介质及电子设备 | |
JP5396184B2 (ja) | 計算機システム及び複数計算機によるストリームデータ分散処理方法 | |
CN102299843B (zh) | 一种基于gpu和缓冲区的网络数据处理方法及系统 | |
US20080133467A1 (en) | Data structure supporting random delete and timer function | |
CN111835729B (zh) | 报文转发方法、系统、存储介质和电子设备 | |
WO2017219867A1 (zh) | 一种短消息重试处理方法及装置、系统 | |
WO2024183410A1 (zh) | 硬件流表老化方法、软件流表老化方法、装置及电子设备 | |
WO2008141519A1 (fr) | Méthode et structure de puce de mise en concordance de chaînes de caractères | |
Bornea et al. | Adaptive join operators for result rate optimization on streaming inputs | |
US11012542B2 (en) | Data processing method and apparatus | |
CN112671653B (zh) | 一种基于多核异构平台的cam表的操作方法 | |
CN114218135A (zh) | 一种基于Redis缓存的源端流控方法及系统 | |
CN111143427A (zh) | 基于在网计算的分布式信息检索方法、系统与装置 | |
US5430874A (en) | Control method and system for managing memory control blocks of programmed tasks in a multi-processing system | |
CN112131238B (zh) | 一种交易状态机设计方法、处理装置和处理方法 | |
JP3231101B2 (ja) | タスクキュー管理方法 | |
JP2000502202A (ja) | 命令プロセッサのジョブスケジューリング | |
CN111756628A (zh) | 一种数据包转发处理方法、系统、智能网卡及cpu | |
CN116366582B (zh) | 一种基于ovs-dpdk的数据包处理方法、系统 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220701 |