一种检测FPGA工作状态的方法和装置与流程

文档序号:14293567阅读:289来源:国知局

本申请涉及通信设备技术领域,特别涉及一种检测fpga工作状态的方法和装置。



背景技术:

fpga(fieldprogrammablegatearray,现场可编程门阵列)是一种可编程的集成电路,由于具有高性能、低功耗的特点,而被广泛应用。现在市场上出现了很多通过嵌入fpga实现特定功能的产品。

由于通过嵌入fpga实现特定功能的产品是否能够被使用,很大程度上依赖于fpga是否工作正常。当fpga出现异常时,该产品通常无法使用。因此,为了保证产品的正常使用,通常需要对fpga工作状态进行检测。

请参见图1,图1为fpga工作状态的示意图。fpga通常采用多个通信通道的方式并行处理报文,并且遵循报文从哪个通信通道进入,就从同一个通信通道出来的原则。其中,fpga配置了报文处理策略,基于策略对接收到的报文进行处理。其中,报文处理策略中通常包括安全检测策略,如果接收到的报文没有通过安全检测,fpga将丢弃该报文,因此有些报文经过fpga后可能会造成报文的丢弃。针对丢弃的报文,fpga基于通信通道对丢弃的报文进行了统计,比如,从通信通道1进行fpga的报文没有通过安全检测被丢弃后,fpga将会对通信通道1的丢失报文的个数进行累加。

在现有技术中,与fpga连接的cpu定时检测fpga,在检测时段内,如果有报文从目标通信通道进入fpga,却没有报文从该目标通信通道输出并且从该目标通信通道进入fpga的丢失报文个数为零那么确定fpga检测不通过,当fpga连续3次没有通过检测,那么认定fpga异常。



技术实现要素:

有鉴于此,本申请提供一种检测fpga工作状态的方法和装置,应用于cpu,用于提高检测fpga工作状态的准确度。

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

一种检测fpga工作状态的方法,应用于cpu,所述方法包括:

当检测周期到达时,向fpga发送若干预设的检测报文,以使fpga通过与所述检测报文对应的内部通路将所述检测报文上送至本端;其中,不同的检测报文用于检测fpga中不同内部通路的工作状态;

在检测结束时,如果没有接收到发送至所述fpga的所有检测报文,确定所述fpga检测未通过;

如果所述fpga连续检测未通过的次数达到预设阈值,确定所述fpga异常。

一种检测fpga工作状态的装置,应用于cpu,所述装置包括:

发送单元,用于当检测周期到达时,向fpga发送若干预设的检测报文,以使fpga通过与所述检测报文对应的内部通路将所述检测报文上送至本端;其中,不同的检测报文用于检测fpga中不同内部通路的工作状态;

第一确定单元,用于在检测结束时,如果没有接收到发送至所述fpga的所有检测报文,确定所述fpga检测未通过;

第二确定单元,用于如果所述fpga连续检测未通过的次数达到预设阈值,确定所述fpga异常。

本申请带来的有益效果:

在本申请中,cpu预先针对fpga中进行报文传输的内部通路配置了检测报文,不同的检测报文用于检测不同的内部通路。当检测周期到达时,cpu向fpga发送用于检测fpga内部通路的各检测报文。在检测结束之前,如果没有接收到fpga返回的各检测报文,则确定fpga未通过检测。当fpga连续未通过检测的次数达到预设阈值时,cpu可以确定fpga异常。由于本申请中采用各内部通路使用对应的检测报文进行检测的方式,从而可以通过cpu接收到的检测报文准确的确定对应的内部通路是否异常。

附图说明

图1为fpga工作状态的示意图;

图2为现有技术提出的fpga的工作原理示意图;

图3为本申请实施例一示出的一种检测fpga工作状态的方法流程图;

图4为申请实施例二示出的一种检测fpga工作状态的装置。

具体实施方式

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

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

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

请参见图2,图2为现有技术提出的fpga的工作原理示意图。

从图2可以看出,fpga主要包括若干通信通道、汇聚模块、会话模块、策略模块、分发模块以及内部模块之间进行报文传输的内部通路(图2所示的通路1、通路2和通路3),另外还包括与cpu之间进行报文传输的外部通路(图2所示的通路4)。

其中,通信通道为fpga上配置的与外部设备之间进行报文传输的通道。

汇聚模板用于当通信通道接收到外部设备上传的报文时,将各通信通道上传的报文进行分类汇聚。其中,将fgpa不能够解析处理的报文(比如gre报文和arp报文等)进行汇聚生成汇聚子模块1,将fpga能够解析处理的报文(比如会话报文等)进行汇聚生成汇聚子模块2。当分发模块允许接收报文时,从汇聚子模块1中顺次读取报文,并将该报文传输至分发模块;当会话模块允许接收报文时,从汇聚子模块2顺次读取报文,并将该报文传输至会话模块。

会话模块用于对汇聚子模块2上传的报文进行解析处理。其中,会话模块上配置了会话表,该会话表中保存了若干会话表项。其中,会话表项包括报文特征(五元组信息)、与该报文特征对应的若干策略和路由转发信息等。当会话模块接收到汇聚子模块2上传的报文后,会话模块可以将该报文与会话表中会话表项进行匹配,查找会话表中是否存在与该报文匹配的会话表项。如果存在,基于查找到的会话表项对该报文进行处理,并将处理后的报文通过图2所示的通路2传输至分发模块;如果不存在,将该报文发送至策略模块,并接收保存策略模块基于该报文创建的会话表项。

策略模块用于接收会话模块发送的报文,并基于该报文创建会话表项。此外,策略模块还用于基于该会话表项,将该报文通过图2所示的通路3传输至分发模块,以及,将该会话表项发送至会话模块。

分发模块用于基于报文从哪个通信通道进入fpga,就从同一个通信通道输出的原则,将接收到的报文分发至对应的通信通道,通过该通信通道转发出去。

另外,当fpga接收到的报文中存在需要cpu处理的报文时,fpga通过图2所示的通路4将该报文上传至cpu,当然,fpga将该报文从fpga传输出去时同样遵循报文从哪个通信通道进入fpga,就从同一个通信通道输出的原则。

在现有技术中,cpu定时检测fpga,在检测时段内,如果有报文从目标通信通道进入fpga,却没有报文从该目标通信通道输出,并且该目标通信通道的丢失报文个数为零那么确定fpga检测不通过,当fpga连续3次没有通过检测,那么认定fpga异常。

然而,现有技术存在以下问题:

1、由于fpga在处理报文时存在时间延迟,在检测时段内,fpga还没有对从目标通信通道进行fpga的报文完成处理,检测时间已经结束,因此cpu由于检测到没有报文从目标通信通道输出且该目标通信通道的丢失报文的个数为零,从而误认为fpga异常。

2、从现有技术中可以看出,会话模块从汇聚子模块2中读取报文时时采用逐个读取并处理的方式,只有在对读取到的报文处理完毕之后才会继续读取。然而,读取到的报文是否能命中会话表中的会话表项是未知的,因此,该报文从通路2传输至分发模块,还是从通路3传输至分发模块是不确定的。换言之,通路2和通路3的工作状态会互相影响,比如,通路2出现异常导致无法传输报文时,通路3也会无法传输报文。

而从通路1进行传输的报文在汇聚子模块1中,从通路2和通路3进行传输的报文在汇聚子模块2中,汇聚子模块1和汇聚子模块2互不影响。当有报文从目标通信通道进入fpga时,如果通路2或者通路3任一通路出现异常异常,那么需要通过通路2或者通路3传输至分发模块的报文无法从通路2或者通路3进行传输,在这样的情况下,如果通路1正常,从需要通过通路1进行传输的报文可以通过通路1传输至分发模块,比从目标通信通道输出,那么此时,cpu由于检测到有报文从目标通信通路输出,从而认定fpga工作正常,然而实际上fpga中的通路2或者通路3工作异常,因此cpu此时的检测结果是错误的。

3、在现有技术中,cpu只能检测fpga内部的工作状态,无法检测fpga与cpu之间的通路4的工作状态。

实施例一

为了提高检测fpga工作状态的准确度,本申请实施例一提出了一种检测fpga工作状态的方法,应用于cpu。请参见图3,图3为本申请实施例一示出的一种检测fpga工作状态的方法流程图,具体执行以下步骤:

步骤301:当检测周期到达时,向fpga发送若干预设的检测报文,以使fpga通过与所述检测报文对应的内部通路将所述检测报文上送至本端;其中,不同的检测报文用于检测fpga中不同内部通路的工作状态;

步骤302:在检测结束时,如果没有接收到发送至所述fpga的所有检测报文,确定所述fpga检测未通过;

步骤303:如果所述fpga连续检测未通过的次数达到预设阈值,确定所述fpga异常。

其中,fpga主要包括若干通信通道、汇聚模块、会话模块、策略模块、分发模块以及内部模块之间进行报文传输的内部通路,另外还包括与cpu之间进行报文传输的外部通路。各模块、通信通道、通路的具体功能与现有技术相同,在此不再赘述。

在本实施例中,cpu加载了检测驱动程序,通过该检测驱动程序周期性检测fpga的工作状态。其中,fpga中存在若干不同的内部通路,由于不同内部通路的报文传输特性不同,为了能够准确的检测到不同内部通路的工作状态,因此,cpu需要针对不同报文传输特性的内部通路配置与其对应的检测报文。

当检测周期到达时,cpu向fpga发送若干预设的检测报文。fpga将接收到的不同检测报文,通过与其对应的内部通路从fpga输出,并通过fpga与cpu之间的传输通路将各检测报文上送至cpu。在检测结束时,如果cpu没有接收到发送至fpga的所有检测报文,则确定fpga中存在工作异常的内部通路,从而确定fpga检测未通过。由于fpga存在报文处理时延,因此不能只凭一次检测未通过就确定fpga工作异常,在本实施例中,如果fpga连续检测未通过的次数达到预设阈值,cpu可以确定fpga异常。

其中,在fpga中,主要包括三种报文传输的内部通路,分别为用于传输fpga无法解析处理的报文的内部通路(简称第一通路),用于传输与所述fpga保存的任一会话表项匹配的报文的内部通路(简称第二通路),以及用于传输与所述fpga保存的任一会话表项不匹配的报文的内部通路(简称第三通路)。

例如,图2所示的通路1为第一通路,通路2为第二通路,通路3为第三通路。

具体地,当检测周期到达时,cpu向fpga发送第一检测报文。其中,该第一检测报文用于检测第一通路是否工作正常。由于第一通路用于传输fpga无法解析处理的报文,因此,该第一检测报文可以是icmp(internetcontrolmessageprotocol,控制报文协议)报文,也可以是其它类型的报文,只要满足fpga无法解析处理该报文即可。

当fpga通过目标通信通道接收到第一检测报文时,由于fpga无法解析处理该第一检测报文,fpga将会把第一检测报文添加至用于缓存fpga无法解析处理的报文的汇聚子模块(即图2所示的汇聚子模块1),等待fpga从该汇聚子模块读取该第一检测报文,并通过第一通路将该第一检测报文传输至分发模块。分发模块基于报文从哪个通信通道进入fpga,从同一个通信通道从fpga输出的原则,将该第一检测报文从目标通信通道输出,并通过fpga与cpu之间的传输通路(即图2所示的通路4)将该第一检测报文上送至cpu。如果cpu没有接收到第一检测报文,则可以确定第一通路异常。

第一检测报文的整个传输路径为:cpu→目标通信通道→汇聚模块→第一通路→分发模块→目标通信通道→fpga与cpu之间的传输通路→cpu。

同样地,当检测周期到达时,cpu也会向fpga发送用于检测第二通路和第三通路的检测报文,由于用于检测第二通路的报文需要满足第二通路的报文传输特性(即该报文需要命中会话表项),用于检测第三通路的报文需要满足第三通路的报文传输特性(即该报文与会话表项均不匹配),然而用于检测第三通路的报文对第三通路完成检测后,fpga中的策略模块可以生成与该报文对应的会话表项,因此可以优先检测第三通路,然后选择同样的报文检测第二通路,这样可以避免重新获取用于检测第二通路的报文。

优选地,在本实施例中,当检测周期到达时,cpu向fpga发送第二检测报文。其中,该第二检测报文用于检测第三通路是否工作正常。由于第三通路用于传输fpga可以解析处理,并且与会话表项均不匹配的报文,因此,该第二检测报文可以是udp(userdatagramprotocol,用户数据报协议)报文,也可以是其它类型的报文,只要满足第三通络的报文传输特性即可。

当fpga通过目标通信通道接收到第二检测报文时,由于fpga可以解析处理该第二检测报文,fpga将会把第二检测报文添加至用于缓存fpga可以解析处理的报文的汇聚子模块(即图2所示的汇聚子模块2),等待会话模块从该汇聚子模块读取该第二检测报文,由于该第二检测报文与会话表项均不匹配,因此,会话模块会将该第二检测报文发送至策略模块,策略模块可以为该第二检测模块生成对应的会话表项,并通过第三通路将该第二检测报文传输至分发模块以及将生成的会话表项发送至会话模块,会话模块对该会话表项进行保存。分发模块基于报文从哪个通信通道进入fpga,从同一个通信通道从fpga输出的原则,将该第二检测报文从目标通信通道输出,并通过fpga与cpu之间的传输通路(即图2所示的通路4)将该第二检测报文上送至cpu。如果cpu没有接收到第二检测报文,则可以确定第三通路异常。

第二检测报文的整个传输路径为:cpu→目标通信通道→汇聚模块→会话模块→策略模块→第三通路→分发模块→目标通信通道→fpga与cpu之间的传输通路→cpu。

在本实施例中,当cpu向fpga发送第二检测报文后,可以再次向fpga发送第二检测报文,由于会话模块采用依次对报文进行处理的方式,当前的报文还没有处理完之前不会从汇聚子模块读取报文,因此,会话模块在对fpga接收到的两个第二检测报文进行处理时存在先后顺序,当会话表项对第二个第二检测报文进行处理时,已经存在了与第二检测报文匹配的会话表项,从而保保证两个第二检测报文分别通过第二通路和第三通路传输至分发模块。

在实现时,当cpu向fpga发送完第一个第二检测报文后,可以立即再次向fpga发送第二个第二检测报文,由于fpga可以解析处理该第二检测报文,fpga将会把第二检测报文添加至用于缓存fpga可以解析处理的报文的汇聚子模块(即图2所示的汇聚子模块2),等待会话模块从该汇聚子模块读取该第二检测报文,由于存在该第二检测报文匹配的会话表项,因此,会话模块会将该第二检测报文通过第二通路将该第二检测报传输至分发模块以及将生成的会话表项发送至会话模块,会话模块对该会话表项进行保。分发模块基于报文从哪个通信通道进入fpga,从同一个通信通道从fpga输出的原则,将该第二检测报文从目标通信通道输出,并通过fpga与cpu之间的传输通路(即图2所示的通路4)将该第二检测报文上送至cpu。如果cpu没有接收到第二检测报文,则可以确定第二通路异常。

第二检测报文的整个传输路径为:cpu→目标通信通道→汇聚模块→会话模块→第二通路→分发模块→目标通信通道→fpga与cpu之间的传输通路→cpu。

需要说明的是,第一检测报文和两个第二检测报文之间不存在发送的先后顺序,可以先发送第一检测报文,也可以最后发送第一检测报文,以及,cpu对fpga进行检测的检测周期的时长不固定,用户可以自动配置与更改。

在本实施例中,在检测结束时,如果cpu没有接收到第一检测报文和两个第二检测报文,那么可以确定,fpga没有未通过检测。如果fpga连续检测未通过的次数达到预设阈值,确定所述fpga异常。

另外,在本实施例中,不管是第一检测报文还是第二检测报文均需要通过fpga与cpu之间的传输通路上送至cpu,因此,通过第一检测报文和第二检测报文对fpga的工作状态进行检测的同时,也对fpga与cpu之间的传输通路的工作状态进行了检测。当cpu在对fpga的工作状态进行检测时,如果cpu可以接收到第一检测报文和第二检测报文中的任一检测报文,则可以确定fpga与cpu之间的传输通路工作正常,如果没有接收到任一检测报文,则进一步分析fpga与cpu之间的传输通路工作异常,还是fpga的工作异常。

此外,实际工作中,fpga的处理性能有限,当fpga处于繁忙状态时,fpga没有额外的资源对报文进行处理。这样的情况下,cpu对fpga工作状态进行检测时得到fpga连续未通过检测的次数达到预设阈值的结果,并不能够说明fpga异常。

因此,在本实施例中,当fpga自检测到处理性能到达预设阈值时,fpga可以通过预设的方式向cpu发送fpga处于繁忙状态的提示信息,比如,fpga可以通过告警日志的方式向cpu发送fpga处于繁忙状态的提示信息。

当cpu接收到fpga处于繁忙状态的提示信息时,cpu可以终止对fpga的工作状态的检测。当fpga自检测到处理性能脱离繁忙状态时,fpga可以通过预设的方式向cpu发送fpga脱离繁忙状态的提示信息。cpu接收到fpga脱离繁忙状态的提示信息后,恢复对fpga的工作状态的检测。

综上所述,在本申请中,cpu预先针对fpga中进行报文传输的内部通路配置了检测报文,不同的检测报文用于检测不同的内部通路。当检测周期到达时,cpu向fpga发送用于检测fpga内部通路的各检测报文。在检测结束之前,如果没有接收到fpga返回的各检测报文,则确定fpga未通过检测。当fpga连续未通过检测的次数达到预设阈值时,cpu可以确定fpga异常。由于本申请中采用各内部通路使用对应的检测报文进行检测的方式,从而可以通过cpu接收到的检测报文准确的确定对应的内部通路是否异常。相比于现有技术,本申请提出的技术方案的检测准确度更高。

实施例二

与前述一种检测fpga工作状态的方法的实施例一相对应,本就申请还提供了一种检测fpga工作状态的装置的实施例二。

请参见图4,图4为申请实施例二示出的一种检测fpga工作状态的装置,应用于cpu,所述装置包括:发送单元410,第一确定单元420,第二确定单元430。

所述发送单元410,用于当检测周期到达时,向fpga发送若干预设的检测报文,以使fpga通过与所述检测报文对应的内部通路将所述检测报文上送至本端;其中,不同的检测报文用于检测fpga中不同的内部通路的工作状态;

所述第一确定单元420,用于在检测结束时,如果没有接收到发送至所述fpga的所有检测报文,确定所述fpga检测未通过;

所述第二确定单元430,用于如果所述fpga连续检测未通过的次数达到预设阈值,确定所述fpga异常。

其中,在本实施例的装置中,所述检测周期的时长支持自动配置。

在本实施例中,所述fpga包括用于传输所述fpga无法解析处理的报文的内部通路(简称第一通路),用于传输与所述fpga保存的任一会话表项匹配的报文的内部通路(简称第二通路),以及用于传输与所述fpga保存的任一会话表项不匹配的报文的内部通路(简称第三通路)。

在本实施例示出的装置中,所述发送单元410具体用于:

向所述fpga发送用于检测所述第一通路工作状态的第一检测报文,以使所述fpga通过所述第一通路将所述第一检测报文上送至本端;

向所述fpga发送用于检测所述第三通路工作状态的第二检测报文,以使所述fpga为所述第二检测报文创建并保存会话表项,以及通过所述第三通路将所述第二检测报文上送至本端;

向所述fpga发送用于检测所述第二通路工作状态的所述第二检测报文,以使所述fpga通过所述第二通路将所述第二检测报文上送至本端。

此外,在本实施例中,所述装置还包括:

接收单元,用于当所述fpga自检测到处理性能达到预设阈值时,接收所述fpga通过预设的方式发送的所述fpga处于繁忙状态的提示信息;

终止单元,用于终止对fpga工作状态的检测;

恢复单元,用于当接收到所述fpga通过预设的方式发送的所述fpga脱离繁忙状态的提示信息时,恢复对fpga工作状态的检测。

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

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

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

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