CN113612661B - 检验程序稳定性的方法、装置、计算设备及存储介质 - Google Patents
检验程序稳定性的方法、装置、计算设备及存储介质 Download PDFInfo
- Publication number
- CN113612661B CN113612661B CN202110885593.4A CN202110885593A CN113612661B CN 113612661 B CN113612661 B CN 113612661B CN 202110885593 A CN202110885593 A CN 202110885593A CN 113612661 B CN113612661 B CN 113612661B
- Authority
- CN
- China
- Prior art keywords
- analysis program
- flow analysis
- flow
- program
- execution process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Environmental & Geological Engineering (AREA)
- Debugging And Monitoring (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种检验程序稳定性的方法、装置、计算设备及存储介质,其中方法包括:确定待检验的流量解析程序在指定周期的执行过程,该指定周期的执行过程至少包括:该流量解析程序读取网卡的接收环、该流量解析程序访问流量报文的协议数据地址;根据预设的检验逻辑判断该指定周期的执行过程,以确定该流量解析程序是否稳定。本方案,能够实现对流量解析程序是否稳定的检验。
Description
技术领域
本发明实施例涉及软件技术领域,特别涉及一种检验程序稳定性的方法、装置、计算设备及存储介质。
背景技术
在网络中传输的流量报文需要遵循一些协议,比如,IP协议、TCP协议等。遵循这些协议的流量报文一般包括两个部分:协议头和协议数据。其中,协议头中具有该协议头的长度字段。流量解析程序可以从流量报文的协议头中解析得到协议头长度,然后根据该协议头长度确定出协议数据地址,并利用该协议数据地址读取协议数据。
发明内容
基于流量解析程序由于未对流量报文执行越界判断而造成稳定性较差的问题,本发明实施例提供了一种检验程序稳定性的方法、装置、计算设备及存储介质,能够实现对流量解析程序是否稳定的检验。
第一方面,本发明实施例提供了一种检验程序稳定性的方法,包括:
确定待检验的流量解析程序在指定周期的执行过程,所述指定周期的执行过程至少包括:所述流量解析程序读取网卡的接收环、所述流量解析程序访问流量报文的协议数据地址;
根据预设的检验逻辑判断所述指定周期的执行过程,以确定所述流量解析程序是否稳定。
优选地,所述确定待检验的流量解析程序在指定周期的执行过程,包括:
响应于检测到所述流量解析程序访问内存地址触发的页缺失错误,且响应于检测到所述网卡的接收环包括所述内存地址,确定所述流量解析程序读取所述网卡的接收环。
优选地,在所述确定所述流量解析程序读取所述网卡的接收环之前,还包括:
确定所述网卡的接收环所对应的内存页;所述内存页中包括若干个内存地址;
将所述内存页所对应访问属性的P flag参数值修改为第一设定值,基于该第一设定值控制所述流量解析程序在访问所述内存页中的任意一个内存地址时则触发页缺失错误。
优选地,在所述检测到所述流量解析程序访问内存地址触发的页缺失错误之前,还包括:确定触发页缺失错误的程序是否为所述流量解析程序,若是,则确定所述流量解析程序访问内存地址触发页缺失错误;
和/或,
在所述确定所述流量解析程序读取所述网卡的接收环之后,还包括:将所述内存页所对应访问属性的P flag参数值修改为第二设定值,以触发所述流量解析程序执行所述读取所述网卡的接收环。
优选地,所述确定待检验的流量解析程序在指定周期的执行过程,包括:
在所述流量解析程序读取网卡的接收环之后,在所述流量解析程序访问所述流量报文的协议数据地址之前,响应于检测到所述流量解析程序触发的调试异常事件,确定所述调试异常事件对应的执行过程。
优选地,在检测到所述流量解析程序触发的调试异常事件之前,还包括:
确定所述流量解析程序在所述指定周期的每个执行过程分别对应的陷阱标志位,将每个陷阱标志位的参数值均修改为第三设定值,以使所述流量解析程序能够触发调试异常事件。
优选地,所述根据预设的检验逻辑判断所述指定周期的执行过程,以确定所述流量解析程序是否稳定,包括:
检验所述流量解析程序从读取网卡的接收环至访问所述流量报文的协议数据地址之间是否执行与流量报文相关的比较操作,若是,则确定所述流量解析程序稳定。
第二方面,本发明实施例还提供了一种检验程序稳定性的装置,包括:
执行过程确定单元,用于确定待检验的流量解析程序在指定周期的执行过程,所述指定周期的执行过程至少包括:所述流量解析程序读取网卡的接收环、所述流量解析程序访问流量报文的协议数据地址;
稳定性判断单元,用于根据预设的检验逻辑判断所述指定周期的执行过程,以确定所述流量解析程序是否稳定。
第三方面,本发明实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现本说明书任一实施例所述的方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行本说明书任一实施例所述的方法。
本发明实施例提供了一种检验程序稳定性的方法、装置、计算设备及存储介质,流量解析程序是否稳定,需要判断流量解析程序在访问流量报文的协议数据地址之前是否对流量报文进行越界判断,因此本实施例中通过预设的检验逻辑对流量解析程序在指定周期的执行过程进行判断,以确定流量解析程序是否稳定,可见本方案能够实现对流量解析程序是否稳定的检验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种检验程序稳定性的方法流程图;
图2是本发明一实施例提供的一种计算设备的硬件架构图;
图3是本发明一实施例提供的一种检验程序稳定性的装置结构图;
图4是本发明一实施例提供的另一种检验程序稳定性的装置结构图;
图5是本发明一实施例提供的又一种检验程序稳定性的装置结构图;
图6是本发明一实施例提供的再一种检验程序稳定性的装置结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如前所述,流量解析程序可以从流量报文的协议头中解析得到协议头长度。但是,从该协议头中解析得到的协议头长度可能是错误的,若利用解析得到的该协议头长度计算协议数据地址时,计算得到的该协议数据地址可能超出了该流量报文的总长度。当该协议数据地址超出该流量报文的总长度,且指向非法地址时,直接访问该协议数据地址,可能会造成流量解析程序的崩溃。
若流量解析程序访问该协议数据地址之前,对该流量报文执行越界判断,即判断该协议头长度是否不大于该流量报文的总长度,只有当该协议头长度不大于该流量报文的总长度时才访问该协议数据地址,那么可以大大提高流量解析程序的稳定性。因此,流量解析程序中是否对流量报文执行越界判断,对流量解析程序的稳定性至关重要。
在相关技术中,流量解析程序中是否对流量报文执行越界判断,并没有提前进行过检验,而是在流量解析程序实际执行过程中发生了程序崩溃,才能够得知该流量解析程序中并没有对流量报文执行越界判断。因此,需要提前对流量解析程序的稳定性进行检验。而越界判断的本质是执行与流量报文相关的比较操作,因此可以通过预设的检验逻辑来判断流量解析程序在指定周期的执行过程,来确定该流量解析程序是否稳定。
下面描述以上构思的具体实现方式。
请参考图1,本发明实施例提供了一种检验程序稳定性的方法,该方法包括:
步骤100,确定待检验的流量解析程序在指定周期的执行过程,该指定周期的执行过程至少包括:该流量解析程序读取网卡的接收环、该流量解析程序访问该流量报文的协议数据地址。
步骤102,根据预设的检验逻辑判断该指定周期的执行过程,以确定该流量解析程序是否稳定。
本发明实施例中,流量解析程序是否稳定,需要判断流量解析程序在访问流量报文的协议数据地址之前是否对流量报文进行越界判断,因此本实施例中通过预设的检验逻辑对流量解析程序在指定周期的执行过程进行判断,以确定流量解析程序是否稳定,可见本方案能够实现对流量解析程序是否稳定的检验。
下面描述图1所示的各个步骤的执行方式。
首先,针对步骤100,确定待检验的流量解析程序在指定周期的执行过程,该指定周期的执行过程至少包括:流量解析程序读取网卡的接收环、流量解析程序访问该流量报文的协议数据地址。
流量解析程序是由程序代码组成的,用于对读取的流量报文进行解析,以得到该流量报文的协议数据地址,进而访问该协议数据地址以读取该流量报文的协议数据。
为判断流量解析程序的稳定性,需要确定流量解析程序的执行过程。由于流量解析程序的稳定性在于在访问协议数据地址之前对流量报文进行越界判断,因此可以仅确定流量解析程序在指定周期的执行过程,且该指定周期的执行过程至少包括:流量解析程序访问该流量报文的协议数据地址。
进一步地,考虑到对流量报文进行越界判断需要发生在获取流量报文之后,因此,该指定周期的执行过程至少还需要包括流量解析程序获取流量报文。
在本发明一个实施例中,流量解析程序运行在Linux操作系统的不同体系架构时,获取流量报文对应的执行过程不同。若流量解析程序运行在Linux内核态,网卡通过DMA(Direct memory access,直接内存访问)机制将流量报文写入RX ring(Receive ring,接收环)所指向的缓存区域,那么流量解析程序获取流量报文的执行过程为读取网卡的接收环。相应地,该指定周期的执行过程在包括流量解析程序获取流量报文时,该流量解析程序获取流量报文为流量解析程序读取网卡的接收环。
在本发明一个实施例中,为了实现本步骤100中确定该流量解析程序在指定周期的执行过程,可以通过如下两个阶段进行确定:
阶段一:确定流量解析程序读取网卡的接收环的执行过程。
阶段二:确定流量解析程序读取网卡的接收环之后的执行过程。
下面分别对上述两个阶段进行说明。
针对阶段一,为了确定流量解析程序读取网卡的接收环这一执行过程,先进行如下分析:若流量解析程序运行在内核态,那么Linux内核的虚拟内存管理器(virtualmemory manager)是使用页表(page table)记录系统中所有虚拟内存的访问属性。在这些访问属性中,有一个P flag参数,该P flag参数值不同时,表示的含义不同。比如,当该Pflag参数值为1时,表示内存页在物理内存中,程序可以直接访问;当该P flag参数值为0时,表示内存页不在物理内存中,程序不可以直接访问。若程序访问的内存地址所对应的内存页不在物理内存中,则会触发页缺失错误,需要调用页缺失处理器(page faulthandler)来处理。
基于此,在本发明一个实施例中,本步骤100中确定该流量解析程序在指定周期的执行过程,具体包括:响应于检测到该流量解析程序访问内存地址触发的页缺失错误,且响应于检测到该网卡的接收环包括该内存地址,确定该流量解析程序读取该网卡的接收环。
由于流量解析程序读取网卡的接收环的目的是访问接收环所对应内存页中的内存地址,以获取流量报文。因此,为了能够确定流量解析程序读取网卡的接收环这一执行过程,在本发明一个实施例中,在该确定该流量解析程序读取该网卡的接收环之前,还包括:确定该网卡的接收环所对应的内存页;该内存页中包括若干个内存地址;将该内存页所对应访问属性的P flag参数值修改为第一设定值,基于该第一设定值控制该流量解析程序在访问该内存页中的任意一个内存地址时则触发页缺失错误。比如,该第一设定值为0。
流量解析程序在读取网卡的接收环时,需要访问该接收环对应内存页中的内存地址,当确定该内存页的访问属性的P flag参数值为第一设定值时,确定该内存页未在物理内存中,此时触发页缺失错误。
在本发明一个实施例中,在将内存页访问属性的P flag参数值修改为第一设定值之后,还需要将TLB(Translation Lookaside Buffer,页表缓存)清空,防止TLB中缓存的修改前的P flag参数值对页缺失错误触发的影响,使得流量解析程序在读取网卡的接收环时能够触发页缺失错误。
其中,修改P flag参数值可以使用set_pte()等内核函数,清空TLB可以使用flush_tlb_all()等内核函数。
当检测到页缺失错误被触发时,该页缺失错误也可能是由其它程序访问内存地址时触发的,因此,在本发明一个实施例中,在检测到流量解析程序访问内存地址触发的页缺失错误之前,还包括:确定触发页缺失错误的程序是否为流量解析程序,若是,则确定流量解析程序访问内存地址触发页缺失错误。
检测触发页缺失错误的程序是否为流量解析程序的方法可以使用进程号来确定。比如,使用内核变量current->pid(process id)来确定。可以理解,每一个程序都需要由一个进程实现程序的运行,每一个进程均对应一个进程号,因此,可以判定触发页缺失错误的程序对应的进程号是否为流量解析程序的进程,来确定触发页缺失错误的程序是否为流量解析程序。
若触发页缺失错误的程序不是流量解析程序,则执行标准的页缺失处理流程,无需特殊处理。若触发页缺失错误的程序为流量解析程序,考虑到页缺失错误可能是由流量解析程序在访问其它内存地址时触发的情况,在本发明一个实施例中,还需要进一步确定该页缺失错误的内存地址是否网卡的接收环,若该内存地址不属于网卡的接收环,则执行标准的页缺失处理流程,无需特殊处理;若该内存地址属于网卡的接收环,则可以确定流量解析程序在读取网卡的接收环。
其中,在确定内存地址是否属于网卡的接收环时,可以直接使用该内存地址与网卡的接收环所对应内存页上的内存地址进行比较,以确定内存页上是否包括该触发页缺失错误的内存地址。
在本发明一个实施例中,当页缺失错误被触发后,需要调用页缺失处理器来处理该页缺失错误,因此,需要预先在系统的中断描述表(Interrupt Description Table,IDT)中注册自定义的页缺失处理器。其中注册页缺失处理器可以使用write_idt_entry()等内核函数。
其中,注册的页缺失处理器至少可以包括两个,一个用于执行标准的页缺失处理流程,另一个用于对流量解析程序读取网卡的接收环时触发的页缺失错误进行处理。
在本发明一个实施例中,当确定流量解析程序读取网卡的接收环之后,调用对应的页缺失处理器,该页缺失处理器具体用于执行如下处理过程:将内存页所对应访问属性的P flag参数值修改为第二设定值,以触发流量解析程序执行该读取该网卡的接收环。比如该第二设定值为1。在将P flag参数值修改为第二设定值之后,流量解析程序可以正常读取网卡的接收环,以获取流量报文;另外,将P flag参数值修改为第二设定值之后,后续在读取网卡的接收环时则不会触发页缺失错误,保证程序正常运行。
当流量解析程序正常读取网卡的接收环之后,页缺失处理器可以获取到该流量报文的总长度,记为len_msg,以及获取到流量解析程序该流量报文的内存地址,记为p_src。
以上对阶段一中流量解析程序的执行过程进行了确定,接下来对阶段二中流量解析程序的执行过程进行确定。
针对阶段二,由于对流量报文的越界判断发生在读取网卡的接收环之后,为了避免漏掉越界判断的执行过程,可以控制流量解析程序单步执行,在单步执行之后,流量解析程序会触发调试异常事件,利用调试异常事件确定该流量解析程序的执行过程。
在本发明一个实施例中,本步骤100中确定该流量解析程序在指定周期的执行过程,具体包括:在该流量解析程序读取网卡的接收环之后,在该流量解析程序访问该流量报文的协议数据地址之前,响应于检测到该流量解析程序触发的调试异常事件,确定该调试异常事件对应的执行过程。
为了能够使得流量解析程序单步执行,以及执行单步后触发调试异常事件,可以通过设置流量解析程序对应的陷阱标志位(Trap flag bit)来实现。具体地,在本发明一个实施例中,在检测到流量解析程序触发的调试异常事件之前,确定该流量解析程序在该指定周期的每个执行过程分别对应的陷阱标志位,将每个陷阱标志位的参数值均修改为第三设定值,以使流量解析程序能够触发调试异常事件。
陷阱标志位存储在标志寄存器(Flags Register,FR)中,由CPU对标志寄存器中的各参数进行维护。通过将陷阱标志位的参数值修改为第三设定值,在内核线程执行流量解析程序时,根据该第三设定值在当前步骤执行完成后则暂停执行,并触发调试异常事件。举例来说,将陷阱标志位的参数值修改为第三设定值,流量解析程序执行第一个步骤,第一个步骤执行结束后暂停并触发调试异常事件,调试异常事件的处理器对该第一个步骤的内容进行检测,检测完成后继续将陷阱标志位的参数值修改为第三设定值,并触发流量解析程序执行第二个步骤,第二个步骤执行结束后暂停并触发调试异常事件……,如此实现控制流量解析程序的单步执行。
如上,还需要预先在内核的通知链(notification chain)中注册调试异常事件的处理器,用于检测该流量解析程序当前的执行过程。其中,注册调试异常事件的处理器可以使用register_die_notifier()等内核函数。
利用调试异常事件的处理器可以确定流量解析程序在读取网卡的接收环之后,流量解析程序访问流量报文的协议数据地址之前,每一个执行过程的内容。
在上述两个阶段完成后,可以确定该流量解析程序在指定周期的执行过程。
然后,针对步骤102,根据预设的检验逻辑判断该指定周期的执行过程,以确定该流量解析程序是否稳定。
在本发明一个实施例中,本步骤102具体可以包括:检验流量解析程序从读取网卡的接收环至访问该流量报文的协议数据地址之间是否执行与流量报文相关的比较操作,若是,则确定该流量解析程序稳定。
由于越界判断的本质是进行流量报文相关的比较操作,因此,可以通过判断是否执行与流量报文相关的比较操作,来确定流量解析程序是否稳定。
为了提高流量解析程序执行越界判断的确定准确性,若本步骤102中执行与流量报文相关的比较操作,在本发明一个实施例中,该检验逻辑可以进一步包括:确定该比较操作是否为对该流量报文的总长度与该流量报文的协议头长度进行比较,若是,则确定流量解析程序对流量报文执行越界判断。
在确定该比较操作是否为对该流量报文的总长度与该流量报文的协议头长度进行比较时,可以先将流量报文的总长度、流量报文的协议头长度均获取到,然后对该比较操作进行判定,也可以只获取流量报文的总长度,利用该流量报文的总长度对该比较操作进行判定。
其中,流量报文的总长度(len_msg)在步骤100已由页缺失处理器获取到。若需要同时获取流量报文的协议头长度,可以利用异常调试事件的处理器获取。若不需要获取流量报文的协议头长度,那么可以判定该比较操作是否为将流量报文的总长度与另一个值进行的比较,若是,则确定该比较操作是对该流量报文的总长度与该流量报文的协议头长度进行比较,并将该另一个值记录为协议头长度,记为len_hdr。
在本发明一个实施例中,为了进一步提高流量解析程序执行越界判断的确定准确性,在本发明一个实施例中,该检验逻辑可以包括:检验该指定周期的执行过程中是否包括如下三个步骤:
S1:流量解析程序将流量报文的总长度与协议头长度进行比较;
S2:将流量报文的起始地址与协议头长度进行相加操作,计算得到流量报文的协议数据地址;
S3:访问S2中得到的流量报文的协议数据地址,以读取流量报文的协议数据。
若存在上述三个步骤,则确定流量解析程序执行越界判断,确定该流量解析程序稳定,否则,确定该流量解析程序不稳定。
在本发明一个实施例中,步骤S2中流量报文的起始地址通过如下方式确定:在S1之前,流量解析程序的一个执行过程为:将流量报文由内存地址(p_src)复制到另一个内存地址。其中,该另一个内存地址即为流量报文的起始地址,记为p_msg。
以上实施例实现了程序稳定性的检验。
下面以流量解析程序运行在内核态为例,对对本发明实施例的检验流程进行说明。
步骤a、启动检验程序线程。
该检验程序线程控制整个检验流程,主要用于配置检测环境、控制流量解析程序线程的暂停和执行。
其中,在Linux内核中启动线程可以使用kthread_run(),kthread_create(),wake_up_process()等函数。
步骤b、配置检验环境。
在检验程序线程启动后,需要对检验环境进行配置,以能够定位到流量解析程序的一些关键执行过程,从而检验流量解析程序是否进行预期操作。比如,注册页缺失处理、异常处理事件的处理器,修改P flag值等。
步骤c、启动流量解析程序线程。
步骤d、检验流量解析程序读取网卡的接收环。
在流量解析程序线程启动后,流量解析程序会执行任意代码逻辑,比如进行初始化,直到访问网卡的接收环之前,这些任意的代码逻辑都是检验程序关心的。当流量解析程序读取网卡的接收环时,由于步骤b中的设置,会触发页缺失错误,则调用页缺失处理器,当确定该页缺失错误是由流量解析程序触发的,且流量解析程序访问的内存地址属于网卡的接收环时,将P flag值由第一设定值修改为第二设定值以触发流量解析程序进行正常的读取网卡的接收环,并获取返回的描述符对应的内存地址,该内存地址为流量报文的内存地址(p_src),以及获取流量报文的总长度(len_msg)。
接下来修改流量解析程序的陷阱标志位,以控制流量解析程序单步执行,流量解析程序每执行一步则暂停,由检验程序检测流量解析程序在这一执行过程对应的内容。
步骤e、检验流量解析程序将从网卡的接收环读取到的流量报文复制到某个内存地址处。
在该步骤中,由于单步执行的配置,流量解析程序触发调试异常事件。
调试异常事件的处理器判断该流量解析程序是否在复制流量报文至某一个内存地址处。其中,复制流量报文的标志为:将内存地址为p_src的数据复制到另一个内存地址处。因此,需要检验该执行过程是否满足如下条件:1、当前指令为复制操作,比如x86中的mov指令;2、一个参数为p_src;3、另一个参数为某个内存地址。若满足上述条件,则将该另一个参数对应的内存地址确定为流量报文的起始地址,记为p_msg。
步骤f、检验流量解析程序对流量报文进行越界判断。
在确定了流量报文的起始地址之后,继续控制流量解析程序单步执行。
调试异常事件的处理器判断该流量解析程序是否在对流量报文进行越界判断。对流量报文进行越界判断的本质是将流量报文的总长度与协议头长度进行比较。因此,需要检验该执行过程是否满足如下条件:1、当前指令为比较操作,比如x86中的cmp指令;2、一个参数值为步骤d中记录的len_msg;3、另一个参数值为一个整数。若满足上述条件,则将该另一个参数值确定为协议头长度,记为len_hdr。
步骤g、检验流量解析程序计算流量报文的协议数据地址。
在确定协议头长度之后,继续控制流量解析程序单步执行。
调试异常事件的处理器判断该流量解析程序是否在计算流量报文的协议数据地址。协议数据地址是对流量报文的起始地址与协议头长度进行相加操作得到。因此,需要检验该执行过程是否满足如下条件:1、当前指令为地址相加操作,比如x86中的add或leaq指令;2、一个参数值为步骤e中记录的流量报文的起始地址p_msg;3、另一个参数值为步骤f中记录的协议头长度len_hdr。若满足上述条件,则将计算结果确定为协议数据地址,记为p_data。
步骤h、检验流量解析程序访问流量报文的协议数据地址。
在确定协议数据地址之后,继续控制流量解析程序单步执行。
调试异常事件的处理器判断该流量解析程序是否在访问流量报文的协议数据地址,即检验该执行过程是否为访问步骤g中记录的p_data地址。若是,则确定流量解析程序访问流量报文的协议数据地址。
若上述步骤f、g、h均检验到,则确定该流量解析程序对流量报文执行越界判断,确定该流量解析程序稳定。否则,执行步骤i。
步骤i、继续控制流量解析程序单步执行,调试异常事件的处理器判断该流量解析程序再次读取网卡的接收环,则表明该流量解析程序已完成一条流量报文的解析过程,但未对流量报文执行越界判断,因此,该流量解析程序不稳定。
步骤j、检验程序线程通知流量解析程序线程停止执行。其中可以使用kthread_stop()等内核函数来实现。流量解析程序线程接收到通知后停止执行,可以通过检查kthread_should_stop()的返回值来实现。
步骤k、检验程序线程确定流量解析程序线程停止执行后,检验程序线程停止。
需要说明的是,在步骤d中,当将P flag值由第一设定值修改为第二设定值以触发流量解析程序进行正常的读取网卡的接收环之后,可以将P flag值由第二设定值修改回第一设定值,以使循环执行步骤d-h,当步骤d-h执行次数达到设定次数后,执行步骤i。然后根据设定次数中检测到步骤f、g、h的次数确定该流量解析程序是否稳定。
本实施例在指令集层上进行校验,对待校验的流量解析程序的具体实现方式的依赖较少,因此可以检测多种类型的流量解析程序。
如图2、图3所示,本发明实施例提供了一种检验程序稳定性的装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图2所示,为本发明实施例提供的一种检验程序稳定性的装置所在计算设备的一种硬件架构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的计算设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图3所示,作为一个逻辑意义上的装置,是通过其所在计算设备的CPU将非易失性存储器中对应的计算机程序读取到内存中运行形成的。本实施例提供的一种检验程序稳定性的装置,包括:
执行过程确定单元301,用于确定待检验的流量解析程序在指定周期的执行过程,所述指定周期的执行过程至少包括:所述流量解析程序读取网卡的接收环、所述流量解析程序访问流量报文的协议数据地址;
稳定性判断单元302,用于根据预设的检验逻辑判断所述指定周期的执行过程,以确定所述流量解析程序是否稳定。
在本发明一个实施例中,所述执行过程确定单元301,具体用于响应于检测到所述流量解析程序访问内存地址触发的页缺失错误,且响应于检测到所述网卡的接收环包括所述内存地址,确定所述流量解析程序读取所述网卡的接收环。
在本发明一个实施例中,请参考图4,该检验程序稳定性的装置还可以包括:第一处理单元303,用于确定所述网卡的接收环所对应的内存页;所述内存页中包括若干个内存地址;将所述内存页所对应访问属性的P flag参数值修改为第一设定值,基于该第一设定值控制所述流量解析程序在访问所述内存页中的任意一个内存地址时则触发页缺失错误。
在本发明一个实施例中,请参考图5,该检验程序稳定性的装置还可以包括:程序判断单元304,用于确定触发页缺失错误的程序是否为所述流量解析程序,若是,则确定所述流量解析程序访问内存地址触发页缺失错误;
和/或,
第二处理单元305,用于将所述内存页所对应访问属性的P flag参数值修改为第二设定值,以触发所述流量解析程序执行所述读取所述网卡的接收环。
在本发明一个实施例中,所述执行过程确定单元301,具体用于在所述流量解析程序读取网卡的接收环之后,在所述流量解析程序访问所述流量报文的协议数据地址之前,响应于检测到所述流量解析程序触发的调试异常事件,确定所述调试异常事件对应的执行过程。
在本发明一个实施例中,请参考图6,该检验程序稳定性的装置还可以包括:第三处理单元306,用于确定所述流量解析程序在所述指定周期的每个执行过程分别对应的陷阱标志位,将每个陷阱标志位的参数值均修改为第三设定值,以使所述流量解析程序能够触发调试异常事件。
在本发明一个实施例中,所述稳定性判断单元302,具体用于检验所述流量解析程序从读取网卡的接收环至访问所述流量报文的协议数据地址之间是否执行与流量报文相关的比较操作,若是,则确定所述流量解析程序稳定。
可以理解的是,本发明实施例示意的结构并不构成对一种检验程序稳定性的装置的具体限定。在本发明的另一些实施例中,一种检验程序稳定性的装置可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
上述装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现本发明任一实施例中的一种检验程序稳定性的方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序在被处理器执行时,使所述处理器执行本发明任一实施例中的一种检验程序稳定性的方法。
具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展模块中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展模块上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
本发明各实施例至少具有如下有益效果:
1、在本发明一个实施例中,流量解析程序是否稳定,需要判断流量解析程序在访问流量报文的协议数据地址之前是否对流量报文进行越界判断,因此本实施例中通过预设的检验逻辑对流量解析程序在指定周期的执行过程进行判断,以确定流量解析程序是否稳定,可见本方案能够实现对流量解析程序是否稳定的检验。
2、在本发明一个实施例中,通过修改内存页访问属性的P flag参数,以及注册页缺失处理器,使得流量解析程序在读取网卡的接收环时触发页缺失错误,利用页缺失处理器对该页缺失错误进行处理,从而可以准确定位到流量解析程序读取网卡的接收环这一执行过程。
3、在本发明一个实施例中,在确定流量解析程序读取网卡的接收环之后,控制流量解析程序单步执行,并利用注册的调试异常事件的处理器检验流量解析程序在每一个执行过程的内容,从而避免漏掉越界判断的执行过程。
4、在本发明一个实施例中,在利用预设的检验逻辑判断指定周期的执行过程时,可以判断该执行过程中是否执行与流量报文相关的比较操作,以确定流量解析程序是否稳定。进一步地,还可以确定该比较操作是否为对该流量报文的总长度与该流量报文的协议头长度进行比较,以提高流量解析程序执行越界判断的确定准确性。
5、在本发明一个实施例中,在利用预设的检验逻辑判断指定周期的执行过程时,还可以判断该执行过程中是否包括指定的三个步骤,来确定流量解析程序是否稳定,从而可以提高流量解析程序执行越界判断的确定准确性。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种检验程序稳定性的方法,其特征在于,包括:
确定待检验的流量解析程序在指定周期的执行过程,所述指定周期的执行过程至少包括:所述流量解析程序读取网卡的接收环、所述流量解析程序访问流量报文的协议数据地址;
根据预设的检验逻辑判断所述指定周期的执行过程,以确定所述流量解析程序是否稳定;
所述检验逻辑包括:检验所述指定周期的执行过程中是否包括如下三个步骤:
S1:流量解析程序将流量报文的总长度与协议头长度进行比较;
S2:将流量报文的起始地址与协议头长度进行相加操作,计算得到流量报文的协议数据地址;
S3:访问S2中得到的流量报文的协议数据地址,以读取流量报文的协议数据;
若存在上述三个步骤,则确定所述流量解析程序稳定,否则,确定所述流量解析程序不稳定。
2.根据权利要求1所述的方法,其特征在于,所述确定待检验的流量解析程序在指定周期的执行过程,包括:
响应于检测到所述流量解析程序访问内存地址触发的页缺失错误,且响应于检测到所述网卡的接收环包括所述内存地址,确定所述流量解析程序读取所述网卡的接收环。
3.根据权利要求2所述的方法,其特征在于,在所述确定所述流量解析程序读取所述网卡的接收环之前,还包括:
确定所述网卡的接收环所对应的内存页;所述内存页中包括若干个内存地址;
将所述内存页所对应访问属性的P flag参数值修改为第一设定值,基于该第一设定值控制所述流量解析程序在访问所述内存页中的任意一个内存地址时则触发页缺失错误。
4.根据权利要求3所述的方法,其特征在于,
在所述检测到所述流量解析程序访问内存地址触发的页缺失错误之前,还包括:确定触发页缺失错误的程序是否为所述流量解析程序,若是,则确定所述流量解析程序访问内存地址触发页缺失错误;
和/或,
在所述确定所述流量解析程序读取所述网卡的接收环之后,还包括:将所述内存页所对应访问属性的P flag参数值修改为第二设定值,以触发所述流量解析程序执行所述读取所述网卡的接收环。
5.根据权利要求1所述的方法,其特征在于,所述确定待检验的流量解析程序在指定周期的执行过程,包括:
在所述流量解析程序读取网卡的接收环之后,在所述流量解析程序访问所述流量报文的协议数据地址之前,响应于检测到所述流量解析程序触发的调试异常事件,确定所述调试异常事件对应的执行过程。
6.根据权利要求5所述的方法,其特征在于,在检测到所述流量解析程序触发的调试异常事件之前,还包括:
确定所述流量解析程序在所述指定周期的每个执行过程分别对应的陷阱标志位,将每个陷阱标志位的参数值均修改为第三设定值,以使所述流量解析程序能够触发调试异常事件。
7.根据权利要求1-6中任一所述的方法,其特征在于,所述根据预设的检验逻辑判断所述指定周期的执行过程,以确定所述流量解析程序是否稳定,包括:
检验所述流量解析程序从读取网卡的接收环至访问所述流量报文的协议数据地址之间是否执行与流量报文相关的比较操作,若是,则确定所述流量解析程序稳定。
8.一种检验程序稳定性的装置,其特征在于,包括:
执行过程确定单元,用于确定待检验的流量解析程序在指定周期的执行过程,所述指定周期的执行过程至少包括:所述流量解析程序读取网卡的接收环、所述流量解析程序访问流量报文的协议数据地址;
稳定性判断单元,用于根据预设的检验逻辑判断所述指定周期的执行过程,以确定所述流量解析程序是否稳定;
所述检验逻辑包括:检验所述指定周期的执行过程中是否包括如下三个步骤:
S1:流量解析程序将流量报文的总长度与协议头长度进行比较;
S2:将流量报文的起始地址与协议头长度进行相加操作,计算得到流量报文的协议数据地址;
S3:访问S2中得到的流量报文的协议数据地址,以读取流量报文的协议数据;
若存在上述三个步骤,则确定所述流量解析程序稳定,否则,确定所述流量解析程序不稳定。
9.一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110885593.4A CN113612661B (zh) | 2021-08-03 | 2021-08-03 | 检验程序稳定性的方法、装置、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110885593.4A CN113612661B (zh) | 2021-08-03 | 2021-08-03 | 检验程序稳定性的方法、装置、计算设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113612661A CN113612661A (zh) | 2021-11-05 |
CN113612661B true CN113612661B (zh) | 2022-10-28 |
Family
ID=78339211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110885593.4A Active CN113612661B (zh) | 2021-08-03 | 2021-08-03 | 检验程序稳定性的方法、装置、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113612661B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113886774B (zh) * | 2021-12-07 | 2022-02-11 | 北京微步在线科技有限公司 | 一种反调试方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799451B2 (en) * | 2009-01-28 | 2014-08-05 | Headwater Partners I Llc | Verifiable service policy implementation for intermediate networking devices |
CN103067192B (zh) * | 2011-10-20 | 2016-03-16 | 北京天行网安信息技术有限责任公司 | 一种网络流量的分析系统及方法 |
CN107483386A (zh) * | 2016-06-08 | 2017-12-15 | 阿里巴巴集团控股有限公司 | 分析网络数据的方法及装置 |
CN108259263A (zh) * | 2017-12-01 | 2018-07-06 | 国家电网公司 | 数据分析方法、装置及系统 |
CN110958129A (zh) * | 2018-09-26 | 2020-04-03 | 北京国双科技有限公司 | 流量分析的方法、系统和装置 |
-
2021
- 2021-08-03 CN CN202110885593.4A patent/CN113612661B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113612661A (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107357666B (zh) | 一种基于硬件保护的多核并行系统处理方法 | |
US8001432B2 (en) | Uninitialized memory detection using error correction codes and built-in self test | |
EP2686772B1 (en) | Diagnosing code using single step execution | |
US20060242517A1 (en) | Monitoring a data processor to detect abnormal operation | |
US7765526B2 (en) | Management of watchpoints in debuggers | |
WO2008017796A1 (en) | Apparatus and method for performing integrity checks on software | |
US20070226545A1 (en) | Methods and systems for generating and storing computer program execution trace data | |
JP2010257150A (ja) | 不正処理検知装置、不正処理検知方法及びプログラム | |
CN112925524A (zh) | 一种检测驱动程序中不安全直接存储器访问的方法及装置 | |
TWI515597B (zh) | 安全保護方法和處理器 | |
CN113612661B (zh) | 检验程序稳定性的方法、装置、计算设备及存储介质 | |
US20080010536A1 (en) | Breakpoints with Separate Conditions | |
JP2007257441A (ja) | プロセッサおよびプロセッサ制御方法 | |
WO2007086150A1 (ja) | メモリ破壊検出方法および装置 | |
KR101658641B1 (ko) | 하드웨어 기반의 커널 코드 삽입 공격 탐지 장치 및 그 방법 | |
US20070226471A1 (en) | Data processing apparatus | |
US20070150866A1 (en) | Displaying parameters associated with call statements | |
CN113590487B (zh) | 流量解析程序的校验方法、装置、计算设备及存储介质 | |
JP7049275B2 (ja) | 診断データキャプチャ | |
JPH1165898A (ja) | 電子計算機の保守方式 | |
JP3068578B2 (ja) | インサーキットエミュレータおよび飽和演算処理方法 | |
CN112860224B (zh) | 一种函数执行环境构建方法、装置、电子设备及存储介质 | |
CN108415788B (zh) | 用于对无响应处理电路作出响应的数据处理设备和方法 | |
JP2017167615A (ja) | ログ取得装置、演算装置、プロセッサ、処理方法、プログラム | |
CN118093235A (zh) | 一种芯片cpu异常诊断方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |