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

文档序号:7721120阅读:119来源:国知局
专利名称:多核平台上转发系统的加速方法及装置的制作方法
技术领域
本发明涉及网络安全技术领域,尤其涉及一种多核平台上转发系统的加速方法及
装置。
背景技术
随着CPU的换代升级,多核CPU已经进入到了商用阶段,不仅在PC市场,在网络设 备市场也占有了一席之地。这就要求各个厂商需要在新的多核平台上开发产品或者将以前 的软件移植到多核平台上来提升自身产品的竞争力。 目前的防火墙系统都是基于状态检测技术的。防火墙在收到包之后匹配访问策 略,如果策略允许通过,就建立session (连接,由源地址、源端口 、目的地址、目的端口和协 议号等构成)转发出去。防火墙在收到后续的属于这个session的包后就直接转发出去, 不需要再匹配访问策略等工作。在多核平台上,运行转发系统的CPU需要加锁访问这个 SESSI0N表(在内存中存放所有session的一张表)。这样运行转发系统的CPU越多,他们 之间访问SESSION表的竞争越大,导致CPU的增加不能线性提高转发系统的整体性能,甚至 在极端情况下还不如一个CPU的转发性能。 因此,在多核平台上,如何实现转发系统的快速转发,减少多个CPU之间的锁竞争 是需要解决的关键技术。

发明内容
鉴于上述的分析,本发明旨在提供一种多核平台上转发系统的加速方法及装置, 达到多核平台上转发系统加速的目的。 本发明的目的主要是通过以下技术方案实现的 本发明提供了一种多核平台上转发系统的加速方法,多核平台上的每个CPU都在 本地预先创建并维护一个本地连接表,则所述方法包括 步骤A:每个CPU在收到某数据流的数据包时,优先在本地连接表中查找与该数据
流对应的本地连接,如果找到,则根据该本地连接转发该数据包,否则执行步骤B ; 步骤B :在连接表中查找该数据流对应的连接,如果找到,则根据该连接转发该数
据包并在本地连接表中建立一个与该数据流对应的本地连接,否则在连接表中建立一个与
该数据流对应的连接并转发出去。 进一步地,所述步骤A中,在本地连接表中查找与该数据流对应的本地连接的过 程不需要加锁保护;所述步骤B中,在连接表中查找该数据流对应的连接的过程需要加锁 保护。
其中,所述本地连接至少包括源地址、源端口、目的地址、目的端口和协议号。
本发明还提供了一种多核平台上转发系统的加速装置,包括连接存储模块、每个 CPU中的本地连接存储模块和查找转发模块,其中, 所述连接存储模块,用于存储并维护每个数据流对应的连接;
所述本地连接存储模块,用于存储并维护该CPU接收到的数据流对应的连接;
所述查找转发模块,用于在该CPU收到某数据流的数据包时,优先在本地连接存 储模块中查找与该数据流对应的本地连接,如果找到,则根据该本地连接转发该数据包;否 则在连接存储模块中查找该数据流对应的连接,如果找到,则根据该连接转发该数据包并 在本地连接存储模块中建立一个与该数据流对应的本地连接,否则在连接存储模块中建立 一个与该数据流对应的连接并转发出去。 进一步地,所述步骤查找转发模块在本地连接表中查找与该数据流对应的本地连 接的过程不需要进行加锁保护处理,在连接表中查找该数据流对应的连接的过程需要进行 加锁保护处理。 其中,所述本地连接至少包括源地址、源端口、目的地址、目的端口和协议号。
本发明有益效果如下 本发明通过每个CPU在本地都维护一个1ocal—session表,并且遵循优先查找 local_session表然后查找SESSI ON表的原则,使得多个CPU之间访问SESSI ON表的竞争减 少,大幅提高了多核转发系统的性能。 本发明的其他特征和优点将在随后的说明书中阐述,并且,部分的从说明书中变 得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明 书、权利要求书、以及附图中所特别指出的结构来实现和获得。


图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 :T0S转发系统的CPU2在收到后续同一数据流的数据包后,优先查 找local—session表,由于CPU2也是第一次收到该数据流的数据包,因而对于该数据流 在1ocal—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也是第一次收到该数据流的数据包,因而对于该数据流 在1ocal—session表尚未建立对应的local_session,因此需要查找SESSION表,由于在 SESSION表找到与该数据流对应的session,并且这个session的状态是可用的状态,于是 CPUn就在local_session表中创建一个与该数据流对应的local_session,这个local_ session是CPU变量,只有这个CPU才能访问这个local_session ;本步骤中,CPUn查找 SESSION表的过程需要加锁保护; 步骤104 :T0S转发系统的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 :T0S转发系统的CPU2再次收到同一数据流后续的数据包后,首先查 找local_session表,因为之前步骤102中CPU2对于该数据流已经建立了对应的local_ session,这时CPU2在local—session表中就能查找到与该数据流对应的local—session, 并根据该local—session转发出去;本步骤CPU2查找local_session表这个过程不需要加 锁保护; 步骤106 :TOS转发系统的CPUn在收到同一数据流的后续数据包后,首先查找 1ocal—session表,因为之前步骤103中CPUn对于该数据流已经建立了对应的local_
5session,这时CPUn在local_session表中就能查找到与该数据流对应的local_session, 并根据该local—session转发出去;本步骤CPUn查找local_session表这个过程不需要加 锁保护; 步骤107 :T0S转发系统的CPU1在第三次收到同一数据流的数据包后,首先查 找local_session表,因为之前步骤104中CPU1对于该数据流已经建立了对应的local_ session,这时CPU1在local_session表中就能查找到与该数据流对应的local_session, 并根据1ocal—session转发出去;本步骤CPU1查找local—session表这个过程不需要加锁 保护; 如图1所示在第一阶段,CPUl-n在收到数据包后都建立了 session和local_ session。这个阶段是需要锁竞争的,需要大量的CPU资源。在第二阶段,CPUl-n收到数据 包后在local_session表中能查找到local_session就直接转发出去了,由于是在local_ session表中查找,所以没有锁竞争,达到加速转发的目的。 需要说明的是,对于每个CPU在查找时都要遵循优先查找local—session表然后 查找SESSION表的原则,即在收到某数据流的一个数据包后都要优先到local—session表 中查找与该数据流对应的local_session,如果找到与该数据流对应的local_session,则 进行转发;如果没有找到与该数据流对应的1ocal—session,再到SESSION表中查找与该数 据流对应的session,如果找到与该数据流对应的session,则进行转发,如果没有找到与 该数据流对应的session,则建立一个与该数据流对应的session并转发出去。
接下来结合附图2对本发明实施例所述装置进行详细说明。 如图2所示,图2为本发明实施例所述装置的结构示意图,具体可以包括连接存 储模块、每个CPU中的本地连接存储模块和查找转发模块,其中, 连接存储模块,负责存储并维护每个数据流对应的连接,本发明实施例中采用 SESSION表的形式; 本地连接存储模块,负责存储并维护该CPU接收到的数据流对应的连接,本发明 实施例中采用1ocal—session表的形式; 查找转发模块,遵循优先查找local—session表然后查找SESSION表的原则对该 CPU接收到的数据包进行查找转发处理,即在该CPU收到某数据流的数据包时,查找转发 模块优先在local—session表中查找与该数据流对应的本地连接,如果找到,则根据该本 地连接转发该数据包;否则在SESSION表中查找该数据流对应的连接,如果找到,则根据该 连接转发该数据包并在local—session表中建立一个与该数据流对应的本地连接,否则在 SESSION表中建立一个与该数据流对应的连接,并且转发出去。 对于本发明实施例所述装置的具体实施过程,由于上述方法已有详细说明,故此 处不再赘述。 综上所述,本发明实施例所述方法提供了一种多核平台上转发系统的加速方法 及装置,通过每个CPU在本地都维护一个local_session表,并且遵循优先查找local_ session表然后查找SESSION表的原则,使得多个CPU之间访问SESSION表的竞争减少,大 幅提高了多核转发系统的性能,尤其是运行转发系统的CPU个数很多时,效果非常好。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范 围为准。
权利要求
一种多核平台上转发系统的加速方法,其特征在于,多核平台上的每个CPU都在本地预先创建并维护一个本地连接表,则所述方法包括步骤A每个CPU在收到某数据流的数据包时,优先在本地连接表中查找与该数据流对应的本地连接,如果找到,则根据该本地连接转发该数据包,否则执行步骤B;步骤B在连接表中查找该数据流对应的连接,如果找到,则根据该连接转发该数据包并在本地连接表中建立一个与该数据流对应的本地连接,否则在连接表中建立一个与该数据流对应的连接并转发出去。
2. 根据权利要求1所述的方法,其特征在于,所述步骤A中,在本地连接表中查找与该 数据流对应的本地连接的过程不需要加锁保护;所述步骤B中,在连接表中查找该数据流 对应的连接的过程需要加锁保护。
3. 根据权利要求1或2所述的方法,其特征在于,所述本地连接至少包括源地址、源端口 、目的地址、目的端口和协议号。
4. 一种多核平台上转发系统的加速装置,其特征在于,包括连接存储模块、每个CPU 中的本地连接存储模块和查找转发模块,其中,所述连接存储模块,用于存储并维护每个数据流对应的连接; 所述本地连接存储模块,用于存储并维护该CPU接收到的数据流对应的连接;所述查找转发模块,用于在该CPU收到某数据流的数据包时,优先在本地连接存储模 块中查找与该数据流对应的本地连接,如果找到,则根据该本地连接转发该数据包;否则在 连接存储模块中查找该数据流对应的连接,如果找到,则根据该连接转发该数据包并在本 地连接存储模块中建立一个与该数据流对应的本地连接,否则在连接存储模块中建立一个 与该数据流对应的连接并转发出去。
5. 根据权利要求4所述的装置,其特征在于,所述步骤查找转发模块在本地连接表中 查找与该数据流对应的本地连接的过程不需要进行加锁保护处理,在连接表中查找该数据 流对应的连接的过程需要进行加锁保护处理。
6. 根据权利要求4或5所述的方法,其特征在于,所述本地连接至少包括源地址、源 端口 、目的地址、目的端口和协议号。
全文摘要
本发明公开了一种多核平台上转发系统的加速方法及装置,多核平台上的每个CPU都在本地预先创建并维护一个本地连接表,所述方法包括每个CPU在收到某数据流的数据包时,优先在本地连接表中查找与该数据流对应的本地连接,如果找到,则根据该本地连接转发该数据包;否则在连接表中查找该数据流对应的连接,如果找到,则根据该连接转发该数据包并在本地连接表中建立一个与该数据流对应的本地连接,否则在连接表中建立一个与该数据流对应的连接并转发出去;本发明通过每个CPU遵循优先查找本地连接表然后查找连接表的原则,使得多个CPU之间访问连接表的竞争减少,大幅提高了多核转发系统的性能。
文档编号H04L29/06GK101789901SQ20091024326
公开日2010年7月28日 申请日期2009年12月30日 优先权日2009年12月30日
发明者吴亚飚, 王震 申请人:北京天融信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1