申威防火墙报文轨迹追踪的方法及装置与流程

文档序号:16146683发布日期:2018-12-05 16:32阅读:160来源:国知局

本发明实施例涉及计算机领域,具体涉及一种申威防火墙报文轨迹追踪的方法及装置。

背景技术

研发内部定位问题一般使用申威debug调试版本,获取报文轨迹的方法一般是gdb下通过设置断点然后使用bt命令查看函数调用栈信息,或依次逐层设置目标函数为断点,若目标函数被断住则执行到了该函数,然则反之,但是gdb调试过程中流量是中断的;现网发布使用的版本一般为申威release版本,非gdb方式启动不能直接进行gdb调试,并且在不允许流量中断的现网环境调试时一般也无法使用gdbattatchpid的方式进行gdb调试,所以在现网环境出现流量不通或业务功能异常时就需要一种轨迹追踪方式,能够判断出报文走的大致函数调用流程,以确认报文被丢弃在哪一层(二层:物理链路层,三层:传输层,四层及以上:网络层),是接收方向有问题,还是发送方向有问题等。



技术实现要素:

针对现有技术存在的不足和缺陷,本发明实施例提供一种申威防火墙报文轨迹追踪的方法及装置。

一方面,本发明实施例提出一种申威防火墙报文轨迹追踪的方法,包括:

s1、预先添加到申威防火墙各个业务的函数调用流程中的宏函数在判断获知对应的被调用函数的入口参数中的报文指针为标记报文的指针时,记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名;

s2、根据该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名确定出所述标记报文的函数调用流程。

另一方面,本发明实施例提出一种申威防火墙报文轨迹追踪的装置,包括:

记录单元,用于通过预先添加到申威防火墙各个业务的函数调用流程中的宏函数在判断获知对应的被调用函数的入口参数中的报文指针为标记报文的指针时,记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名;

确定单元,用于根据该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名确定出所述标记报文的函数调用流程。

第三方面,本发明实施例提供一种基于申威架构的电子设备,包括:申威处理器、存储器、总线及存储在存储器上并可在申威处理器上运行的计算机程序;

其中,所述申威处理器,存储器通过所述总线完成相互间的通信;

所述申威处理器执行所述计算机程序时实现上述方法。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,所述存储介质上存储有计算机程序,该计算机程序被申威处理器执行时实现上述方法。

本发明实施例提供的申威防火墙报文轨迹追踪的方法及装置,首先通过预先添加到申威防火墙各个业务的函数调用流程中的宏函数在判断获知对应的被调用函数的入口参数中的报文指针为标记报文的指针时,记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名;之后根据该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名确定出所述标记报文的函数调用流程,即本方案能确定出申威防火墙报文的函数调用流程。

附图说明

图1为本发明申威防火墙报文轨迹追踪的方法一实施例的流程示意图;

图2为本发明申威防火墙报文轨迹追踪的装置一实施例的结构示意图;

图3为本发明实施例提供的一种基于申威架构的电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。

参看图1,本实施例公开一种申威防火墙报文轨迹追踪的方法,包括:

s1、预先添加到申威防火墙各个业务的函数调用流程中的宏函数在判断获知对应的被调用函数的入口参数中的报文指针为标记报文的指针时,记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名;

s2、根据该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名确定出所述标记报文的函数调用流程。

本实施例中,在确定出标记报文的函数调用流程后,可以将其与正常报文的函数调用流程进行对比查看,以确认标记报文所经函数调用流程是否正常,可用于快速定位申威申威防火墙网络不通或业务功能异常等现网问题。

本发明实施例提供的申威防火墙报文轨迹追踪的方法,首先通过预先添加到申威防火墙各个业务的函数调用流程中的宏函数在判断获知对应的被调用函数的入口参数中的报文指针为标记报文的指针时,记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名;之后根据该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名确定出所述标记报文的函数调用流程,即本方案能确定出申威防火墙报文的函数调用流程。

在前述方法实施例的基础上,所述宏函数使用全局结构体数组变量记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名。

本实施例中,可以通过自定义命令行开启、关闭报文轨迹追踪功能,主要方法为:定义全局变量g_ulpackettrackflag作为报文轨迹追踪功能开关标志位,定义全局变量指针g_pstpackettrace记录报文指针作为报文追踪对象;下发命令开启该功能时g_ulpackettrackflag置1,在报文源头判定该功能开启则将g_pstpackettrace赋值一个报文指针,后续流程判断是否是标记报文时用;下发命令关闭该功能时g_ulpackettrackflag置0,g_pstpackettrace直接赋值为空null。该开关功能默认关闭,只在有需要情况下开启,不影响正常报文转发及系统性能。

在使用宏函数和全局结构体数组变量之前,需先定义结构体数组并声明全局变量、定义宏函数并依次添加到各函数调用流程中。其中,结构体数组成员包括:函数名、行号、文件名;宏函数的函数实现是判断对应的被调用函数的入口参数中的报文指针是否为标记报文的指针,若是,则将该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名记录进全局结构体数组变量,以备后续遍历、打印、查看等。函数名、行号、文件名记录方法可以借助linux提供的如下宏:__func_:代表当前所在函数名;line__:代表当前源代码中的行号的整数常量;__file__:代表当前源代码文件名的字符串文字,实现代码如下:

g_stpackettracest[g_index++]->funcname=__func__(记录当前所在函数名);

g_stpackettracest[g_index++]->linenumber=__line__(记录当前所在代码中的行号的整数常量);

g_stpackettracest[g_index++]->filename=__file__(记录当前所在文件名的字符串)。

通过__func__、__line__和__file__这样的宏,可以在调试程序时确定出程序运行到了哪个文件的哪一行的哪个函数。

在前述方法实施例的基础上,所述宏函数使用所述全局结构体数组变量还记录该被调用函数的入口参数中的报文指针及其对应的报文的长度。

参看图2,本实施例公开一种申威防火墙报文轨迹追踪的装置,包括:

记录单元1,用于通过预先添加到申威防火墙各个业务的函数调用流程中的宏函数在判断获知对应的被调用函数的入口参数中的报文指针为标记报文的指针时,记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名;

确定单元2,用于根据该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名确定出所述标记报文的函数调用流程。

具体地,所述记录单元1通过预先添加到申威防火墙各个业务的函数调用流程中的宏函数在判断获知对应的被调用函数的入口参数中的报文指针为标记报文的指针时,记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名;所述确定单元2根据该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名确定出所述标记报文的函数调用流程。

本发明实施例提供的申威防火墙报文轨迹追踪的装置,首先记录单元通过预先添加到申威防火墙各个业务的函数调用流程中的宏函数在判断获知对应的被调用函数的入口参数中的报文指针为标记报文的指针时,记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名;之后确定单元根据该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名确定出所述标记报文的函数调用流程,即本方案能确定出申威防火墙报文的函数调用流程。

在前述装置实施例的基础上,所述宏函数使用全局结构体数组变量记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名。

在前述装置实施例的基础上,所述宏函数的函数实现是判断对应的被调用函数的入口参数中的报文指针是否为标记报文的指针,若是,则将该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名记录进所述全局结构体数组变量。

在前述装置实施例的基础上,所述宏函数使用所述全局结构体数组变量还记录该被调用函数的入口参数中的报文指针及其对应的报文的长度。

本实施例的申威防火墙报文轨迹追踪的装置,可以用于执行前述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图3示出了本发明实施例提供的一种基于申威架构的电子设备的实体结构示意图,如图3所示,该基于申威架构的电子设备可以包括:申威处理器11、存储器12、总线13及存储在存储器12上并可在申威处理器11上运行的计算机程序;

其中,所述申威处理器11,存储器12通过所述总线13完成相互间的通信;

所述申威处理器11执行所述计算机程序时实现上述各方法实施例所提供的方法,例如包括:预先添加到申威防火墙各个业务的函数调用流程中的宏函数在判断获知对应的被调用函数的入口参数中的报文指针为标记报文的指针时,记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名;根据该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名确定出所述标记报文的函数调用流程。

本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被申威处理器执行时实现上述各方法实施例所提供的方法,例如包括:预先添加到申威防火墙各个业务的函数调用流程中的宏函数在判断获知对应的被调用函数的入口参数中的报文指针为标记报文的指针时,记录该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名;根据该被调用函数的函数名、该被调用函数在所在代码文件中的行号以及该被调用函数所在代码文件的文件名确定出所述标记报文的函数调用流程。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的申威处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的申威处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

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