一种基于快速转发表项的丢包方法和装置与流程

文档序号:14624290发布日期:2018-06-08 06:32阅读:299来源:国知局

本申请涉及网络通信技术领域,特别涉及一种基于快速转发表项的丢包方法和装置。



背景技术:

快速转发表项是根据报文中的五元组(源IP、源端口、目的IP、目的端口、协议号)在高速缓存中生成的转发条目。设备根据五元组信息生成相应的快速转发信息缓存的同时,还记录了转发时的封装信息及接口信息。当后续报文到达后,设备根据该报文中的五元组,查找是否存在与该五元组匹配的快速转发表项。如果存在,基于查找到的快速转发表项直接进行转发出去。在这一过程中,不需要经过CPU查找路由转发表项来转发报文,从而突出了快速转发的效果。

请参见图1,图1为现有技术示出的一种多CPU设备处理报文的流程图。

在多CPU设备中,当报文经过设备时,该设备的驱动查找与该报文匹配的会话表项,当不存在与该报文匹配的会话表项时,该设备可以计算确定处理该报文的目的CPU,并将该报文上送至该目的CPU。在多CPU设备中,各CPU 均配置了检测流量安全性的策略,各CPU对上送至本端的报文进行安全检测,如果没有通过检测,该CPU则将会丢弃该报文。其中,设备通过哈希算法对报文的五元组进行计算确定目的CPU。

如果报文在本设备上做NAT业务,那么本设备从内网接收到该报文(正向报文)中的五元组,与本设备从外网接收到同一会话的报文(反向报文)中五元组不相同,那么通过哈希算法计算目的CPU后,同一会话的报文将会上送不同的CPU处理。为了保证同一会话的报文上送同一CPU处理,现有技术中采用软件流分类的技术,实现同一会话的正反向报文上送同一CPU。

其中,如果任一报文为无法通过CPU的安全检测的报文,那么,当本设备接收到与该报文属于同一会话的报文后,均会将该会话中的报文上送至同一 CPU进行新建会话表项的流程。根据图1所示的新建会话表项的流程可以看出, CPU处理该会话的报文时,当完成策略处理后,该会话中的报文均会被丢弃。

当该会话的报文较多时,那么该CPU将会不断进行报文的安全检测和报文的丢弃,从而会导致该CPU的使用率过高。



技术实现要素:

有鉴于此,本申请提供一种基于快速转发表项的丢包方法和装置,应用于多CPU设备,用于解决同一会话的大量报文经过设备,且由于未通过安全检测而被丢弃时造成与该会话对应的CPU使用率过高的问题。

具体地,本申请是通过如下技术方案实现的:

一种基于快速转发表项的丢包方法,应用于多CPU设备,包括:

当接收到的报文与快速转发表中的快速转发表项匹配时,查找与所述报文匹配的目标快速转发表项;

当查找到所述目标快速转发表项时,判断所述目标快速转发表项是否携带丢包标记;

如果是,丢弃所述报文。

一种基于快速转发表项的丢包装置,应用于多CPU设备,包括:

查找单元,用于当接收到的报文与快速转发表中的快速转发表项匹配时,查找与所述报文匹配的目标快速转发表项;

判断单元,用于当查找到所述目标快速转发表项时,判断所述目标快速转发表项是否携带丢包标记;

丢弃单元,用于如果是,丢弃所述报文。

本申请提出的技术方案带来的有效效果:

在本申请中,当设备首次接收到无法通过检测的报文时,处理该报文的目的CPU先创建对应的快速转发表项,并在该快速转发表项中携带丢包标记后保存至快速转发表,然后再将该报文丢弃。当设备接收到该报文所属会话的后续报文时,设备的驱动可以直接匹配到对应的快速转发表项,并将该会话的报文通过驱动直接丢弃,不再需要将该会话的报文上送至该目的CPU进行检测后并在未通过检测后再将该会话的报文进行丢弃,从而解决了同一会话的大量报文经过设备,且由于未通过安全检测而被丢弃时造成与该会话对应的CPU使用率过高的问题。

附图说明

图1为现有技术示出的一种多CPU设备处理报文的流程图;

图2为本申请实施例一示出的一种基于快速转发表项的丢包方法流程图;

图3为本申请实施例一示出的一种多CPU设备处理报文的流程图;

图4为本申请一种基于快速转发表项的丢包装置所在多CPU设备的一种硬件结构图;

图5为本申请实施例二示出的一种基于快速转发表项的丢包装置。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

请参见图1,在现有技术中,当多CPU设备接收到某一会话的报文时,该设备的驱动可以将该报文与本设备的会话表中的会话表项进行匹配,查询与该报文匹配的会话表项。当驱动未查找到与该报文匹配的会话表项时,说明本设备之前已经接收到该报文所属会话的其它报文,但没有通过了安全检测(情况1),或者首次接收到该报文所属会话的报文,该报文为该会话中的第一个报文(情况2),或者,该报文所属会话对应的目的CPU正在处理该会话中的首个报文,但还未基于该首个报文创建对应的会话表项,此时驱动接收到的报文为该会话中的第二个报文(情况3)。

不管上述三种情况中的哪一种情况导致驱动未查找到与该报文匹配的会话表项,本设备的驱动都将对该报文的五元组进行计算,确定与该报文所述会话对应的目的CPU,然后将该报文上送至该目的CPU。

当目的CPU接收到驱动上送的报文时,该目的CPU将会在会话表中查找与该报文匹配的会话表项。其中,此时该目的CPU查找与该报文匹配的会话表项是为了针对上述情况3。如果该报文为该报文所属会话中的第二个报文,当目的 CPU接收到该报文时,该会话的首个报文此时可能已经通过安全检测,该目的 CPU已经基于该首个报文创建了与该会话对应的会话表项并保存至会话表。在这样的情况下,该目的CPU可以在会话表中查找到与该报文匹配的会话表项,那么此时该目的CPU不再需要基于该报文为该报文所属会话创建对应的会话表项。

如果该目的CPU在会话表中查找到与该报文匹配的会话表项,该目的CPU 通过配置的策略对该报文进行安全检测。如果该目的CPU没有在会话表中查找到与该报文匹配的会话表项时,该目的CPU可以基于该报文为该报文所属会话创建对应的会话表项,然后再通过配置的策略对该报文进行安全检测。

1)、当该报文未通过安全检测,并且在该目的CPU未在会话表中查找到与该报文匹配的会话表项后,基于该报文为该报文所属会话创建了对应的会话表项时,该目的CPU将丢弃该报文和该会话表项。

2)、当该报文未通过安全检测,并且该目的CPU在会话表中查找到了与该报文匹配的会话表项时,该目的CPU可以直接将该报文丢弃。

3)、当该报文通过安全检测,并且在该目的CPU未在会话表中查找到与该报文匹配的会话表项后,基于该报文为该报文所属会话创建了对应的会话表项时,该目的CPU将会把该会话表项保存至会话表,以及基于预设规则确定该报文所属会话是否支持快速转发。

4)、当该报文通过安全检测,并且该目的CPU在会话表中查找到了与该报文匹配的会话表项时,该目的CPU将基于预设规则确定该报文所属会话是否支持快速转发。

如果该报文通过安全检测,且该报文所属会话支持快速转发,该目的CPU 将为该报文所属会话创建快速转发表项,并将该快速转发表项保存至本设备的快速转发表,然后将该报文下发至驱动,通过驱动将该报文转发出去。

如果该报文通过安全检测,但该报文所属会话不支持快速转发,该目的CPU 将直接将该报文下发至驱动,通过驱动将该报文转发出去。

上述所描述的内容为本设备的驱动接收到报文,但未在会话表中查找到与该报文匹配的会话表项时,本设备对该报文所做的处理。

当本设备的驱动接收到报文后,并且在会话表中查找到与该报文匹配的会话表项时,驱动将在快速转发表中查找与该报文匹配的快速转发表项。如果驱动查找到与该报文匹配的快速转发表项,则基于查找到的快速转发表项,对该报文进行快速转发。如果驱动未查找到与该报文匹配的快速转发表项,则驱动将通过哈希算法对该报文的五元组进行计算确定目的CPU,并将该报文上送至该目的CPU,由该目的CPU对该报文进行处理,具体的处理过程详见本申请前述内容,在此不再进行赘述。

上述所描述的内容为现有技术中,多CPU对接收到的报文进行处理的具体过程。

从现有技术中可以看出,当某一会话的报文上送目的CPU,且该会话的报文无法通过安全检测时,那么该目的CPU将会不断地新建会话表项,并通过策略对接收到的报文进行安全检测,以及在报文未通过安全检测后将报文以及新建的会话表项进行丢弃,由于CPU的处理资源是有限的,当该会话的报文达到一定数量时,会造成该目的CPU使用率过高。另外,当目的CPU配置大量策略时,会更加地提高该目的CPU的使用率。

实施例一

为了解决同一会话的大量报文经过设备,且由于未通过安全检测而被丢弃时造成与该会话对应的CPU使用率过高的问题,本申请实施例一提供了一种基于快速转发表项的丢包方法,应用于多CPU设备。

请参见图2,图2为本申请实施例一示出的一种基于快速转发表项的丢包方法流程图,应用于多CPU设备,具体执行以下步骤:

步骤201:当接收到的报文与快速转发表中的快速转发表项匹配时,查找与所述报文匹配的目标快速转发表项;

步骤202:当查找到所述目标快速转发表项时,判断所述目标快速转发表项是否携带丢包标记;

步骤203:如果是,丢弃所述报文。

在本实施例中,当多CPU设备接收到报文时,基于预设的算法计算确定处理该报文的目的CPU,该目的CPU基于预设的策略对该报文进行安全检测,当该报文未通过安全检测时,该目的CPU为该报文所属的会话创建快速转发表项,并在该快速转发表项中携带丢包标记后将该快速转发表项保存至快速转发表。当多CPU设备再次接收到同一会话的其余报文时,这些报文可以匹配到快速转发表项,由于该快速转发表项携带丢包标记,多CPU设备可以通过驱动直接将该会话的报文丢弃。

请参见图3,图3为本申请实施例一示出的一种多CPU设备处理报文的流程图。以下通过图3所示的流程图,对本申请提出的技术方案进行具体的描述。

在本实施例中,当多CPU设备接收到某一会话的报文时,该设备的驱动可以将该报文与本设备的会话表中的会话表项进行匹配,查询与该报文匹配的会话表项。当驱动未查找到与该报文匹配的会话表项时,说明本设备之前已经接收到该报文所属会话的其它报文,但没有通过了安全检测(情况1),或者首次接收到该报文所属会话的报文,该报文为该会话中的第一个报文(情况2),或者,该报文所属会话对应的目的CPU正在处理该会话中的首个报文,但还未基于该首个报文创建对应的会话表项,此时驱动接收到的报文为该会话中的第二个报文(情况3)。

不管上述三种情况中的哪一种情况导致驱动未查找到与该报文匹配的会话表项,本设备的驱动都将对该报文的五元组进行计算,确定与该报文所述会话对应的目的CPU,然后将该报文上送至该目的CPU。

当目的CPU接收到驱动上送的报文时,该目的CPU将会在会话表中查找与该报文匹配的会话表项。其中,此时该目的CPU查找与该报文匹配的会话表项是为了针对上述情况3。如果该报文为该报文所属会话中的第二个报文,当目的 CPU接收到该报文时,该会话的首个报文此时可能已经通过安全检测,该目的 CPU已经基于该首个报文创建了与该会话对应的会话表项并保存至会话表。在这样的情况下,该目的CPU可以在会话表中查找到与该报文匹配的会话表项,那么此时该目的CPU不再需要基于该报文为该报文所属会话创建对应的会话表项。

如果该目的CPU在会话表中查找到与该报文匹配的会话表项,该目的CPU 通过配置的策略对该报文进行安全检测。如果该目的CPU没有在会话表中查找到与该报文匹配的会话表项时,该目的CPU可以基于该报文为该报文所属会话创建对应的会话表项,然后再通过配置的策略对该报文进行安全检测。

在本实施例中,当目的CPU完成对该报文的安全检测后,该目的CPU将会确认是否基于该报文为该报文所属会话创建了会话表项。如果是,该目的CPU 将为该会话表项保存至会话表,然后再判断该报文所属的会话是否支持快速转发。如果该目的CPU没有基于该报文为该报文所属的会话创建会话表项,即该目的CPU在会话表中查找到了与该报文匹配的会话表项,则该目的CPU可以直接判断该报文所属的会话是否支持快速转发。

如果该报文所属的会话支持快速转发,该目的CPU可以基于该报文为该报文所属会话创建快速转发表项。如果该报文所属的会话不支持快速转发,继续对该报文进行后续处理。

当目的CPU创建完快速转发表项后,该目的CPU可以基于检测结果在该快速转发表项中携带丢包标记。如果该报文没有通过检测,那么该目的CUP可以在该快速转发表项中携带丢包标记,然后再将该快速转发标记保存至快速转发表。如果该报文通过了检测,那么该目的CPU可以直接将该快速转发表项保存至快速转发表。

在本实施例中,当该目的CPU基于该报文完成了会话表的更新以及快速转发表的更新后,该目的CPU再对该报文是否通过检测的结果进行丢包处理。如果该报文通过检测,则该目的CPU可以直接将该报文下发驱动,通过驱动将该报文转发出去。如果该报文未通过检测,则该目的CPU可以丢弃该报文。

上述所描述的内容为本设备的驱动接收到报文,但未在会话表中查找到与该报文匹配的会话表项时,本设备对该报文所做的处理。

当本设备的驱动接收到报文后,并且在会话表中查找到与该报文匹配的会话表项时,驱动将在快速转发表中查找与该报文匹配的快速转发表项。如果驱动查找到与该报文匹配的快速转发表项,驱动可以检测该匹配中的快速转发表项是否携带丢包标记。如果该快速转发表项携带了丢包标记,则驱动可以直接将该报文丢弃,如果该快速转发表项未携带丢包标记,则驱动该快速转发表项,对该报文进行快速转发。如果驱动未查找到与该报文匹配的快速转发表项,则驱动将通过哈希算法对该报文的五元组进行计算确定目的CPU,并将该报文上送至该目的CPU,由该目的CPU对该报文进行处理,具体的处理过程详见本申请前述内容,在此不再进行赘述。

由于设备用于保存快速转发表项的资源有限,当无法通过安全检测的报文所属的会话比较繁多时,设备将会创建较多的快速转发表项。当携带丢包标记的快速转发表项占有太多存储资源时,可能会导致正常会话的快速转发表项无法保存,从而影响到正常会话。

因此,在本实施例中,用户为快速转发表中的快速转发表项设置了老化时间。当任一快速转发表项的更新时间与当前时间之间的差值超过老化时间时,驱动可以将该快速转发表项删除;其中,当任一快速转发表项被匹配中时,将更新时间修改为当前时间。通过为快速转发表项设置老化时间从而实现对快速转发表中的快速转发表项的更新,使得长时间未被匹配中的快速转发表项占用存储资源。

由上述技术内容可以看出,当设备首次接收到无法通过检测的报文时,处理该报文的目的CPU先创建对应的快速转发表项,并在该快速转发表项中携带丢包标记后保存至快速转发表,然后再将该报文丢弃。当设备接收到该报文所属会话的后续报文时,设备的驱动可以直接匹配到对应的快速转发表项,并将该会话的报文通过驱动直接丢弃,不再需要将该会话的报文上送至该目的CPU 进行检测后并在未通过检测后再将该会话的报文进行丢弃,从而解决了同一会话的大量报文经过设备,且由于未通过安全检测而被丢弃时造成与该会话对应的CPU使用率过高的问题。

实施例二

与前述一种基于快速转发表项的丢包方法的实施例一相对应,本申请还提供了一种基于快速转发表项的丢包装置的实施例二。

本申请一种基于快速转发表项的丢包装置的实施例可以应用在多CPU设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在多CPU设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请一种基于快速转发表项的丢包装置所在多CPU设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的多CPU设备通常根据该基于快速转发表项的丢包装置的实际功能,还可以包括其他硬件,对此不再赘述。

请参见图5,图5为本申请实施例二示出的一种基于快速转发表项的丢包装置,应用于多CPU设备,该装置包括:查找单元510,判断单元520,丢弃单元530。

其中,所述查找单元510,用于当接收到的报文与快速转发表中的快速转发表项匹配时,查找与所述报文匹配的目标快速转发表项;

所述判断单元520,用于当查找到所述目标快速转发表项时,判断所述目标快速转发表项是否携带丢包标记;

所述丢弃单元530,用于如果是,丢弃所述报文。

在本实施例中,该装置还包括:

创建单元,用于创建携带丢包标记的快速转发表项;其中,创建过程为:当接收到的报文为首次接收到的报文时,通过预设的算法计算确定处理所述报文的目的CPU,由所述目的CPU基于预设的策略对所述报文进行检测;当所述报文未通过检测时,由所述目的CPU为所述报文所属的会话创建快速转发表项,并在所述快速转发表项中携带丢包标记后将所述快速转发表项添加至快速转发表以更新快速转发表;当更新完快速转发表后,由所述目的CPU丢弃所述报文。

设置单元,用于为快速转发表中的快速转发表项设置老化时间;

更新单元,用于基于所述老化时间,更新快速转发表。

转发单元,用于如果所述目标快速转发表项未携带丢包标记,基于所述目标快速转发表项转发所述报文。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1