专利名称:一种过滤无效事件上报消息的方法、装置及存储介质
专利类型:发明专利
专利申请号:CN202111652061.2
专利申请(专利权)人:苏州盛科科技有限公司
权利人地址:江苏省苏州市工业园区星汉街5号6号楼201室
专利发明(设计)人:马佳彪,杨八双,郭晓董,戴伟达
专利摘要:本发明揭示了一种过滤无效事件上报消息的方法、装置及存储介质,方法包括获取事件上报消息;获取清除操作时间戳,并判断清除操作时间戳是否为非零;响应于清除操作时间戳为非零,进一步判断清除操作时间戳是否大于事件产生的时间戳;响应于清除操作时间戳大于事件产生的时间戳,将事件上报消息丢弃。本发明能够在清除芯片流表后,使用户不必等待无效消息处理结束才进行其他操作,改善用户体验。
主权利要求:
1.一种过滤无效事件上报消息的方法,其特征在于,所述方法包括:获取事件上报消息,所述事件上报消息携带有该事件产生的时间戳;
获取清除操作时间戳,并判断所述清除操作时间戳是否为非零,所述清除操作时间戳是在关闭芯片的新流学习功能后读取芯片的时间戳获得的,且所述清除操作时间戳定时重置;
响应于清除操作时间戳为非零,进一步判断清除操作时间戳是否大于事件产生的时间戳;
响应于清除操作时间戳大于事件产生的时间戳,将事件上报消息丢弃。
2.根据权利要求1所述的方法,从DMA内存中获取所述事件上报消息。
3.根据权利要求1所述的方法,还包括:
响应于清除操作时间戳为零,根据事件上报消息处理流表。
4.根据权利要求1所述的方法,还包括:
响应于清除操作时间戳小于事件产生的时间戳,根据事件上报消息处理流表。
5.根据权利要求1所述的方法,通过定时器定时将除操作时间戳重置。
6.一种过滤无效事件上报消息的装置,其特征在于,所述装置包括:消息获取模块,用于获取事件上报消息,所述事件上报消息携带有该事件产生的时间戳;
时间戳获取模块,用于获取清除操作时间戳,所述清除操作时间戳是在关闭芯片的新流学习功能后读取芯片的时间戳获得的,且所述清除操作时间戳定时重置;
第一判断模块,用于判断所述清除操作时间戳是否为非零;
第二判断模块,用于在第一判断模块判断清除操作时间戳为非零时进一步判断清除操作时间戳是否大于事件产生的时间戳;
消息处理模块,用于在第二判断模块判断清除操作时间戳大于事件产生的时间戳,将事件上报消息丢弃。
7.根据权利要求6所述的装置,所述消息获取模块从DMA内存中获取所述事件上报消息。
8.根据权利要求6所述的装置,还包括:
流表处理模块,用于在第一判断模块判断清除操作时间戳为零,或者在第二判断模块判断清除操作时间戳小于事件产生的时间戳时,根据事件上报消息处理流表。
9.一种过滤无效事件上报消息的装置,其特征在于,所述装置包括:至少一个处理器;以及
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理器并且存储用于由所述至少一个处理器执行的计算机程序,所述计算机程序由所述至少一个处理器执行时,使得所述装置执行根据权利要求1至5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被机器执行时实现根据权利要求1至5中任一项所述的方法。 说明书 : 一种过滤无效事件上报消息的方法、装置及存储介质技术领域[0001] 本发明涉及网络通信技术领域,尤其涉及一种在清除流表期间过滤无效事件上报消息的方法及实现方法的装置和存储介质。背景技术[0002] 在传统的网络监控方式中,网络管理员只能在网络出现故障或者瓶颈时分析和处理问题。为了让网络管理员能在网络出现问题之前能够及时掌握网络的状态并对网络进行调整,可采用IPFIX(IPFlowInformationExport,即IP数据流信息输出)技术来实现这一目的。[0003] IPFIX用于监控网络中流量的状态,其由输出器、收集器和分析器构成,其中,输出器用于集网络中的流量统计信息,以IPFIX报文的形式发送到收集器,收集器解该报文,将统计数据收集到数据库中,再发送到分析器进行更详细的分析和统计,分析器对流统计信息进一步处理,如以图形界面进行形式显示等。[0004] 在复杂的网络环境中,为了记录流信息时的及时性、准确性,记录操作是由芯片完成的。转发芯片在转发报文的过程中,记录报文的相关信息,更新对应的芯片流表,但是用户没有办法直接看到芯片存储的流表。软件为了让用户能够感知到流的信息,需要和芯片流表同步的维护一个软件流表。如图1所示,芯片在流发生特殊状态变化(如芯片流表记录的报文数达到一定阈值等)时会主动通告给软件,称为事件上报。当芯片生成事件时,会将消息进行存储并通知软件去获取存储介质中的消息。[0005] 当在收集了一段时间流信息后,用户可能想要清除已经收集到的流信息,以重新开始收集流信息。如图2所示,当用户触发清除流表操作时,软件通常按照如下步骤进行操作:(1)关闭芯片的流学习能力;(2)清除芯片流表;(3)清除软件流表;(4)打开芯片的新流学习能力。然而,当在第(2)步之前芯片生成的事件消息已经存放于存储介质中时,清除芯片流表过程中无法对已存放于存储介质中的事件消息进行清除,并且若这些事件消息在第(3)步之前还未清除完,则第(3)步之后软件会认为这些事件消息是有效的,导致软件流表不准确,其中,在清除芯片流表之后,由于对应的芯片流表已不复存在,因而还存在于存储介质中的事件消息为无效消息。[0006] 目前,为了避免产生上述情况,通常在第(2)步清除芯片流表之后,等待一段时间,使软件有足够的时间处理完存储介质中的消息,之后再执行清除软件流表,以确保第(3)步之后不再收到无效消息。然而,在存储空间较大时,需要等待较长的时间才能确保处理完消息,影响用户操作体验。发明内容[0007] 本发明的目的在于提供一种过滤无效事件上报消息的方法,能够在清除芯片流表后,使用户不必等待无效消息处理结束才进行其他操作,改善用户体验。同时,还提供一种实现该方法的装置和存储介质。[0008] 为实现上述目的,本发明提出一种过滤无效事件上报消息的方法,所述方法包括:[0009] 获取事件上报消息,所述事件上报消息携带有该事件产生的时间戳;[0010] 获取清除操作时间戳,并判断所述清除操作时间戳是否为非零,所述清除操作时间戳是在关闭芯片的新流学习功能后读取芯片的时间戳获得的,且所述清除操作时间戳定时重置;[0011] 响应于清除操作时间戳为非零,进一步判断清除操作时间戳是否大于事件产生的时间戳;[0012] 响应于清除操作时间戳大于事件产生的时间戳,将事件上报消息丢弃。[0013] 优选地,从DMA内存中获取所述事件上报消息。[0014] 优选地,还包括:[0015] 响应于清除操作时间戳为零,根据事件上报消息处理流表。[0016] 优选地,还包括:[0017] 响应于清除操作时间戳小于事件产生的时间戳,根据事件上报消息处理流表。[0018] 优选地,通过定时器定时将除操作时间戳重置。[0019] 本发明还揭示了一种过滤无效事件上报消息的装置,所述装置包括:[0020] 消息获取模块,用于获取事件上报消息,所述事件上报消息携带有该事件产生的时间戳;[0021] 时间戳获取模块,用于获取清除操作时间戳,所述清除操作时间戳是在关闭芯片的新流学习功能后读取芯片的时间戳获得的,且所述清除操作时间戳定时重置;[0022] 第一判断模块,用于判断所述清除操作时间戳是否为非零;[0023] 第二判断模块,用于在第一判断模块判断清除操作时间戳为非零时进一步判断清除操作时间戳是否大于事件产生的时间戳;[0024] 消息处理模块,用于在第二判断模块判断清除操作时间戳大于事件产生的时间戳,将事件上报消息丢弃。[0025] 优选地,所述消息获取模块从DMA内存中获取所述事件上报消息。[0026] 优选地,还包括:[0027] 流表处理模块,用于在第一判断模块判断清除操作时间戳为零,或者在第二判断模块判断清除操作时间戳小于事件产生的时间戳时,根据事件上报消息处理流表。[0028] 本发明还揭示了一种过滤无效事件上报消息的装置,所述装置包括:[0029] 至少一个处理器;以及[0030] 至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理器并且存储用于由所述至少一个处理器执行的计算机程序,所述计算机程序由所述至少一个处理器执行时,使得所述装置执行上述所述的方法。[0031] 本发明还揭示了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被机器执行时实现上述所述的方法。[0032] 本发明的有益效果是:[0033] 本发明通过将事件上报时间戳与清除操作时间戳进行对比,以确定事件上报消息是否有效,使用户不必等待无效消息处理结束才进行其他操作,改善用户体验。附图说明[0034] 图1是现有技术中流表清除操作流程图;[0035] 图2是现有技术中事件处理流程图;[0036] 图3是本发明一实施例中过滤无效事件上报消息的方法流程图;[0037] 图4是本发明一实施例中流表清除操作流程图;[0038] 图5是本发明一实施例中事件处理流程图;[0039] 图6是本发明一实施例中过滤无效事件上报消息的装置结构框图。具体实施方式[0040] 下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。[0041] 结合图3~图5所示,本发明所揭示的一种在清除流表期间过滤无效事件上报消息的方法,能够在清除芯片流表后,使用户不必等待无效消息处理结束才进行其他操作,改善用户体验。具体地,过滤无效事件上报消息的方法包括如下步骤:[0042] S100,获取事件上报消息,所述事件上报消息携带有该事件产生的时间戳;[0043] 具体地,结合图3和图5所示,芯片在产生事件上报消息后,可将该事件上报消息存储于存储介质中,该存储介质如DMA内存等。同时,通知软件系统去存储介质中读取该事件上报消息。这里的事件上报消息携带有该事件产生的时间戳,记为eventTs。实施时,芯片生成的事件上报消息优选存放于DMA内存中,并在存储后同时通知软件系统去该内存区域读取。[0044] 当软件系统接收到通知后,进一步从存储介质中获取事件上报消息。如软件系统在读取之后释放该DMA内存。这里的DMA内存可存储多个事件上报消息,具体存储数量可根据实际需求进行设置。[0045] S200,获取清除操作时间戳,并判断所述清除操作时间戳是否为非零,所述清除操作时间戳是在关闭芯片的新流学习功能后读取芯片时间戳获得的,且所述清除操作时间戳定时重置;[0046] 具体地,结合图3和图4所示,本发明通过在关闭芯片的新流学习能力步骤与清除芯片流表步骤之间设置清除操作时间戳获取步骤,以获取清除操作时间戳。通过获取到的清除操作时间戳可用于确定哪些是清除操作之前产生的无效事件。[0047] 实施时,在关闭芯片的新流学习能力之后,通过读取芯片的时间戳作为清除操作时间戳,将该清除操作时间戳记为clearTs。同时,由于DMA内存中来不及处理的事件上报消息在一定时间内会处理完,在处理完后无需再利用清除操作时间戳,因而需要设置一定时器,定时清除该操作时间戳,同时,芯片时间戳的翻转周期远大于DMA中无效消息的处理时间,因而也需要设置一定时器,定时清除该操作时间戳。如若不重置清除操作时间戳clearTs,则芯片时间戳发生翻转一轮后,会被认为是无效消息,因而需要在芯片时间戳发生翻转之前重置清除操作时间戳clearTs。[0048] 当获取到清除操作时间戳之后,进一步判断该清除操作时间戳是否为非零。当该清除操作时间为非零时,进一步判断清除操作时间戳是否大于事件产生的时间戳。当该清除操作时间为零时,进一步根据事件上报消息处理流表。[0049] S300,响应于清除操作时间戳为非零,进一步判断清除操作时间戳是否大于事件产生的时间戳。[0050] S400,响应于清除操作时间戳大于事件产生的时间戳,将事件上报消息丢弃。[0051] 具体地,当该清除操作时间为非零时,进一步判断清除操作时间戳是否大于事件产生的时间戳。当清除操作时间戳小于事件产生的时间戳,则根据事件上报消息处理流表,也即:在清除操作时间戳小于事件产生的时间戳时,如果是针对新流的事件上报消息,则必然在打开芯片的新流学习能力之后,则该事件上报消息为有效消息。如果是非新流的其他事件上报消息,则在清除软件流表之后不会根据该事件上报消息创建新的软件流表,即使是无效消息,也不会影响软件流表。[0052] 当清除操作时间戳大于事件产生的时间戳时,则该事件上报消息是在清除操作发生之前的流所对应的产生的,其为无效消息,因而需要对其进行过滤,也即将其进行丢弃处理。[0053] 如图6所示,为本发明所揭示的一种过滤无效事件上报消息的装置,包括消息获取模块、时间戳获取模块、第一判断模块、第二判断模块和消息处理模块。其中,消息获取模块用于获取事件上报消息,其中,事件上报消息携带有该事件产生的时间戳;时间戳获取模块用于获取清除操作时间戳,其中,清除操作时间戳是在关闭芯片的新流学习功能后读取芯片时间戳获得的,且所述清除操作时间戳定时重置;第一判断模块用于判断所述清除操作时间戳是否为非零;第二判断模块用于在第一判断模块判断清除操作时间戳为非零时进一步判断清除操作时间戳是否大于事件产生的时间戳;消息处理模块用于在第二判断模块判断清除操作时间戳大于事件产生的时间戳,将事件上报消息丢弃。[0054] 进一步地,装置还包括流表处理模块,用于根据事件上报消息处理流表。[0055] 实施时,芯片在产生事件上报消息后,可将该事件上报消息存储于存储介质中,该存储介质如DMA内存等。软件系统通过消息获取模块从存储介质中获取事件上报消息,同时,通过时间戳获取模块获取清除操作时间戳,该清除操作时间戳是在关闭芯片的新流学习能力之后,通过读取芯片的时间戳获得的。当获取到清除操作时间戳之后,进一步通过第一判断模块判断该清除操作时间戳是否为非零。当该清除操作时间为非零时,进一步通过第二判断模块判断清除操作时间戳是否大于事件产生的时间戳。当该清除操作时间为零时,进一步通过流表处理模块根据事件上报消息处理流表。[0056] 当清除操作时间戳小于事件产生的时间戳,则通过流表处理模块根据事件上报消息处理流表;当清除操作时间戳大于事件产生的时间戳时,该事件上报消息是在清除操作发生之前的流所对应的产生的,其为无效消息,因而需要对其进行过滤,进一步通过消息处理模块将其进行丢弃处理。[0057] 本发明还揭示了一种过滤无效事件上报消息的装置,包括存储器、处理器以及计算器程序,其中,计算器程序存储于处理器中并可在处理器中运行,如过滤无效事件上报消息的程序等。实施时,处理器执行该计算器程序时可实现上述方法中的各个步骤,如实现获取事件上报消息的步骤等等。[0058] 示例性的,该计算器程序可被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器中,并由所述存储器执行,以完成本发明。其中,一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该计算机程序指令段用于描述计算机程序在所述装置中的执行过程。[0059] 本发明还揭示了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时,可实现上述方法。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、可执行文件或某些中间形式等,所述计算机可读介质可以包括能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)等等。[0060] 本发明通过将事件上报时间戳与清除操作时间戳进行对比,以确定事件上报消息是否有效,使用户不必等待无效消息处理结束才进行其他操作,改善用户体验。[0061] 本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。
专利地区:江苏
专利申请日期:2021-12-30
专利公开日期:2024-07-26
专利公告号:CN114328319B