首页> 中国专利> 多核平台上转发系统的加速方法及装置

多核平台上转发系统的加速方法及装置

摘要

本发明公开了一种多核平台上转发系统的加速方法及装置,多核平台上的每个CPU都在本地预先创建并维护一个本地连接表,所述方法包括:每个CPU在收到某数据流的数据包时,优先在本地连接表中查找与该数据流对应的本地连接,如果找到,则根据该本地连接转发该数据包;否则在连接表中查找该数据流对应的连接,如果找到,则根据该连接转发该数据包并在本地连接表中建立一个与该数据流对应的本地连接,否则在连接表中建立一个与该数据流对应的连接并转发出去;本发明通过每个CPU遵循优先查找本地连接表然后查找连接表的原则,使得多个CPU之间访问连接表的竞争减少,大幅提高了多核转发系统的性能。

著录项

  • 公开/公告号CN101789901A

    专利类型发明专利

  • 公开/公告日2010-07-28

    原文格式PDF

  • 申请/专利权人 北京天融信科技有限公司;

    申请/专利号CN200910243265.3

  • 发明设计人 王震;吴亚飚;

    申请日2009-12-30

  • 分类号H04L12/56(20060101);H04L29/06(20060101);

  • 代理机构11010 信息产业部电子专利中心;

  • 代理人梁军

  • 地址 100085 北京市海淀区上地东路1号华控大厦三层

  • 入库时间 2023-12-18 00:10:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-03-15

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/56 变更前: 变更后: 申请日:20091230

    专利权人的姓名或者名称、地址的变更

  • 2015-10-28

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/56 变更前: 变更后: 申请日:20091230

    专利权人的姓名或者名称、地址的变更

  • 2015-03-25

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/56 变更前: 变更后: 申请日:20091230

    专利权人的姓名或者名称、地址的变更

  • 2014-08-06

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/56 变更前: 变更后: 申请日:20091230

    专利权人的姓名或者名称、地址的变更

  • 2012-11-14

    授权

    授权

  • 2011-03-16

    实质审查的生效 IPC(主分类):H04L12/56 申请日:20091230

    实质审查的生效

  • 2010-07-28

    公开

    公开

查看全部

说明书

技术领域

本发明涉及网络安全技术领域,尤其涉及一种多核平台上转发系统的加速方法及装置。

背景技术

随着CPU的换代升级,多核CPU已经进入到了商用阶段,不仅在PC市场,在网络设备市场也占有了一席之地。这就要求各个厂商需要在新的多核平台上开发产品或者将以前的软件移植到多核平台上来提升自身产品的竞争力。

目前的防火墙系统都是基于状态检测技术的。防火墙在收到包之后匹配访问策略,如果策略允许通过,就建立session(连接,由源地址、源端口、目的地址、目的端口和协议号等构成)转发出去。防火墙在收到后续的属于这个session的包后就直接转发出去,不需要再匹配访问策略等工作。在多核平台上,运行转发系统的CPU需要加锁访问这个SESSION表(在内存中存放所有session的一张表)。这样运行转发系统的CPU越多,他们之间访问SESSION表的竞争越大,导致CPU的增加不能线性提高转发系统的整体性能,甚至在极端情况下还不如一个CPU的转发性能。

因此,在多核平台上,如何实现转发系统的快速转发,减少多个CPU之间的锁竞争是需要解决的关键技术。

发明内容

鉴于上述的分析,本发明旨在提供一种多核平台上转发系统的加速方法及装置,达到多核平台上转发系统加速的目的。

本发明的目的主要是通过以下技术方案实现的:

本发明提供了一种多核平台上转发系统的加速方法,多核平台上的每个CPU都在本地预先创建并维护一个本地连接表,则所述方法包括:

步骤A:每个CPU在收到某数据流的数据包时,优先在本地连接表中查找与该数据流对应的本地连接,如果找到,则根据该本地连接转发该数据包,否则执行步骤B;

步骤B:在连接表中查找该数据流对应的连接,如果找到,则根据该连接转发该数据包并在本地连接表中建立一个与该数据流对应的本地连接,否则在连接表中建立一个与该数据流对应的连接并转发出去。

进一步地,所述步骤A中,在本地连接表中查找与该数据流对应的本地连接的过程不需要加锁保护;所述步骤B中,在连接表中查找该数据流对应的连接的过程需要加锁保护。

其中,所述本地连接至少包括:源地址、源端口、目的地址、目的端口和协议号。

本发明还提供了一种多核平台上转发系统的加速装置,包括:连接存储模块、每个CPU中的本地连接存储模块和查找转发模块,其中,

所述连接存储模块,用于存储并维护每个数据流对应的连接;

所述本地连接存储模块,用于存储并维护该CPU接收到的数据流对应的连接;

所述查找转发模块,用于在该CPU收到某数据流的数据包时,优先在本地连接存储模块中查找与该数据流对应的本地连接,如果找到,则根据该本地连接转发该数据包;否则在连接存储模块中查找该数据流对应的连接,如果找到,则根据该连接转发该数据包并在本地连接存储模块中建立一个与该数据流对应的本地连接,否则在连接存储模块中建立一个与该数据流对应的连接并转发出去。

进一步地,所述步骤查找转发模块在本地连接表中查找与该数据流对应的本地连接的过程不需要进行加锁保护处理,在连接表中查找该数据流对应的连接的过程需要进行加锁保护处理。

其中,所述本地连接至少包括:源地址、源端口、目的地址、目的端口和协议号。

本发明有益效果如下:

本发明通过每个CPU在本地都维护一个local_session表,并且遵循优先查找local_session表然后查找SESSION表的原则,使得多个CPU之间访问SESSION表的竞争减少,大幅提高了多核转发系统的性能。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分的从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

图1为本发明实施例所述方法的流程示意图;

图2为本发明实施例所述装置的结构示意图。

具体实施方式

下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理。为了清楚和简化目的,当其可能使本发明的主题模糊不清时,将省略本文所描述的器件中已知功能和结构的详细具体说明。

本发明实施例的主要内容包括:

每个CPU在收到某数据流的数据包时,优先在本地连接表中查找与该数据流对应的本地连接,如果找到,则根据该本地连接转发该数据包,否则在连接表中查找该数据流对应的连接;

如果在连接表中查找到该数据流对应的连接,则根据该连接转发该数据包并在本地连接表中建立一个与该数据流对应的本地连接,否则在连接表中建立一个与该数据流对应的连接并转发出去。

首先结合附图1对本发明实施例所述方法进行详细说明。

如图1所示,图1为本发明实施例所述方法的流程示意图,设定本实施例的多核平台上有n个CPU,每个CPU都预先在本地创建并维护一个local_session表,则所述方法具体可以包括如下步骤:

步骤101:TOS转发系统的CPU1在收到某数据流的一个数据包后,优先到local_session表中查找与该数据流对应的local_session,如果找到该数据流对应的local_session,就直接转发该数据包;如果没有在local_session表中查找与该数据流对应的local_session,那么就要查找SESSION表,如果没有查找到与该数据流对应的session,就建立一个与该数据流对应的session,并根据该session转发出去;如果找到与该数据包对应的session,就根据该session直接转发出去,同时在local_session表中建立一个与该数据流对应的local_session;

本发明实施例中,由于CPU1第一次收到该数据流的数据包,因而对于该数据流在local_session表尚未建立对应的local_session,在SESSION表也尚未建立对应的session,因此本步骤中需要先在SESSION表中建立一个与该数据流对应的session,并且,CPU1查找SESSION表,建立session的过程需要加锁保护;

步骤102:TOS转发系统的CPU2在收到后续同一数据流的数据包后,优先查找local_session表,由于CPU2也是第一次收到该数据流的数据包,因而对于该数据流在local_session表尚未建立对应的local_session,因此需要查找SESSION表,由于在SESSION表找到与该数据流对应的session,并且这个session的状态是可用的状态,于是CPU2就在local_session表中创建一个与该数据流对应的local_session,这个local_session是CPU变量,只有这个CPU(即CPU2)才能访问这个local_session,这个local_session记录这个数据流转发出去所需的所有信息,至少包括:源地址、源端口、目的地址、目的端口和协议号;本步骤中,CPU2查找SESSION表过程需要加锁保护;

步骤103:TOS转发系统的CPUn在收到后续同一数据流的数据包后,优先查找local_session表,由于CPUn也是第一次收到该数据流的数据包,因而对于该数据流在local_session表尚未建立对应的local_session,因此需要查找SESSION表,由于在SESSION表找到与该数据流对应的session,并且这个session的状态是可用的状态,于是CPUn就在local_session表中创建一个与该数据流对应的local_session,这个local_session是CPU变量,只有这个CPU才能访问这个local_session;本步骤中,CPUn查找SESSION表的过程需要加锁保护;

步骤104:TOS转发系统的CPU1再次收到同一数据流后续的数据包后,优先查找local_session表,由于CPU1第一次收到该数据流的数据包时只是在SESSION中创建了与该数据流对应的session,而在local_session表尚未建立对应的local_session,因此当在SESSION表中查找到与该数据流对应的session,并且这个session的状态是可用的状态时,CPU1就在local_session表中创建一个与该数据流对应的local_session,这个local_session是CPU变量,只有这个CPU才能访问这个local_session,这个local_session记录这个流转发出去所需的所有信息,至少包括:源地址、源端口、目的地址、目的端口和协议号;

步骤105:TOS转发系统的CPU2再次收到同一数据流后续的数据包后,首先查找local_session表,因为之前步骤102中CPU2对于该数据流已经建立了对应的local_session,这时CPU2在local_session表中就能查找到与该数据流对应的local_session,并根据该local_session转发出去;本步骤CPU2查找local_session表这个过程不需要加锁保护;

步骤106:TOS转发系统的CPUn在收到同一数据流的后续数据包后,首先查找local_session表,因为之前步骤103中CPUn对于该数据流已经建立了对应的local_session,这时CPUn在local_session表中就能查找到与该数据流对应的local_session,并根据该local_session转发出去;本步骤CPUn查找local_session表这个过程不需要加锁保护;

步骤107:TOS转发系统的CPU1在第三次收到同一数据流的数据包后,首先查找local_session表,因为之前步骤104中CPU1对于该数据流已经建立了对应的local_session,这时CPU1在local_session表中就能查找到与该数据流对应的local_session,并根据local_session转发出去;本步骤CPU1查找local_session表这个过程不需要加锁保护;

如图1所示:在第一阶段,CPU1-n在收到数据包后都建立了session和local_session。这个阶段是需要锁竞争的,需要大量的CPU资源。在第二阶段,CPU1-n收到数据包后在local_session表中能查找到local_session就直接转发出去了,由于是在local_session表中查找,所以没有锁竞争,达到加速转发的目的。

需要说明的是,对于每个CPU在查找时都要遵循优先查找local_session表然后查找SESSION表的原则,即在收到某数据流的一个数据包后都要优先到local_session表中查找与该数据流对应的local_session,如果找到与该数据流对应的local_session,则进行转发;如果没有找到与该数据流对应的local_session,再到SESSION表中查找与该数据流对应的session,如果找到与该数据流对应的session,则进行转发,如果没有找到与该数据流对应的session,则建立一个与该数据流对应的session并转发出去。

接下来结合附图2对本发明实施例所述装置进行详细说明。

如图2所示,图2为本发明实施例所述装置的结构示意图,具体可以包括:连接存储模块、每个CPU中的本地连接存储模块和查找转发模块,其中,

连接存储模块,负责存储并维护每个数据流对应的连接,本发明实施例中采用SESSION表的形式;

本地连接存储模块,负责存储并维护该CPU接收到的数据流对应的连接,本发明实施例中采用local_session表的形式;

查找转发模块,遵循优先查找local_session表然后查找SESSION表的原则对该CPU接收到的数据包进行查找转发处理,即在该CPU收到某数据流的数据包时,查找转发模块优先在local_session表中查找与该数据流对应的本地连接,如果找到,则根据该本地连接转发该数据包;否则在SESSION表中查找该数据流对应的连接,如果找到,则根据该连接转发该数据包并在local_session表中建立一个与该数据流对应的本地连接,否则在SESSION表中建立一个与该数据流对应的连接,并且转发出去。

对于本发明实施例所述装置的具体实施过程,由于上述方法已有详细说明,故此处不再赘述。

综上所述,本发明实施例所述方法提供了一种多核平台上转发系统的加速方法及装置,通过每个CPU在本地都维护一个local_session表,并且遵循优先查找local_session表然后查找SESSION表的原则,使得多个CPU之间访问SESSION表的竞争减少,大幅提高了多核转发系统的性能,尤其是运行转发系统的CPU个数很多时,效果非常好。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号