一种基于ICMP报文的快速故障检测方法与流程

文档序号:19105021发布日期:2019-11-12 22:34阅读:802来源:国知局
一种基于ICMP报文的快速故障检测方法与流程

本发明涉及一种基于ICMP报文的快速故障检测方法,属于测控技术领域。



背景技术:

在航天测控领域中,存在着一种外部设备,该外部设备使用封装的驱动进行通信,仅需要驱动接口对外部设备操作。以VXI设备为例,此类设备在应用层使用VISA通用接口,而在底层实际使用TCP/IP协议进行通信。由于外部驱动的不完善,在调用此类设备的驱动时,无法及时识别链路故障,导致即使有冗余设备存在,由于故障无法及时发现,冗余设备无法起到实际作用。

在使用测控设备提供的驱动函数对设备进行操作时,由于驱动的不完善,无法及时识别通信链路故障;当通信链路出现故障时,继续使用驱动提供方法其结果将是不可预测的,极端情况下可能导致应用程序无响应,甚至异常退出。因此,如何在及时诊断此类设备的链路故障,并进行冗余设备的切换对于提高测控的可靠性具有深远的意义。

现阶段,在使用此类设备的测控系统中,尚无技术手段检测此类外部设备的链路故障,需要在准备阶段靠人工检查来保证通信链路的正常,不仅需要耗费大量的人力物力,而且仅能保证在设备连接前链路的正确性,无法检测在测试过程中发生的链路故障。

如何自动识别链路故障是本领域亟待解决的技术问题。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种基于ICMP报文的快速故障检测技术,通过发送ICMP报文并等待ICMP回复报文的方式来判断链路是否正常,可以及时发现故障,并切换至冗余设备。

本发明目的通过如下技术方案予以实现:

提供一种基于ICMP报文的快速故障检测方法,包括如下步骤:

(1)确定试验所需要连接的测试设备,选出底层使用TCP/IP协议进行通信的测试设备,并建立测试设备连接列表;

(2)在设备初始化前,上位机向连接列表中的测试设备周期性发送ICMP报文,直到接收到正常的ICMP报文回令,如果在超时时间内没有收到ICMP报文回令,则认为网络或测试设备存在故障,输出故障提示信息;

(3)在测试过程中,由上位机向连接列表中的测试设备周期性发送ICMP报文,如果在超时时间内没有收到ICMP报文回令,则认为网络或测试设备存在故障,输出故障提示信息,并停止使用该测试设备继续测试,若存在冗余设备,则切换到冗余设备继续进行测试;如果在超时时间内收到ICMP报文回令,则表明该测试设备连接正常,能够使用该测试设备继续测试;

(4)在测试结束后,上位机向连接列表中的测试设备周期性发送ICMP报文,如果在超时时间内没有收到ICMP报文回令,则认为网络或测试设备存在故障,输出故障提示信息;如果在超时时间内收到ICMP报文回令,则表明该测试设备连接正常,能够正常关闭该测试设备。

优选的,步骤(2)具体操作方法为:

a.读取步骤(1)中所建立的设备连接列表,并获取设备连接列表中每个测试设备的IP地址;

b.通过以太网向每个IP地址发送ICMP请求报文,并等待每个测试设备的ICMP回复报文,其中ICMP回复报文的超时时间根据以下原则动态调整:

b1.超时时间初始值设为Ttimeout,默认状态下采用100ms;

b2.若测试设备为嵌入式设备或者处理器主频低于1Ghz,则Ttimeout值增加50ms;

b3.若待连接设备与上位机不处于同一网段,则每跨越一层交换机Ttimeout值增加50ms;

b4.若在指定超时时间内未收到回复报文,则允许自动重试,最多重试2次,每次重试Ttimeout值增加100ms;

c.若在超时时间内接收到回复报文,则认为该设备网络连接已建立并可以进行初始化,如果在超时时间内没有收到ICMP报文回令,则认为网络或测试设备存在故障,输出故障提示信息。

优选的,步骤(3)在测试过程中,由上位机向连接列表中的测试设备周期性发送ICMP报文的具体方法为:

a.对步骤(2)中已建立连接并初始化好的设备建立保活机制,每当间隔Tspan时间未与某测试设备进行数据传输时,则由上位机向该测试设备发送ICMP请求报文,以检测该测试设备运行状态;ICMP回复报文的超时时间根据以下原则动态调整:

a1.超时时间初始值设为Ttimeout,默认状态下采用100ms;

a2.若测试设备为嵌入式设备或者处理器主频低于1Ghz,则Ttimeout值增加50ms;

a3.若待连接设备与上位机不处于同一网段,则每跨越一层交换机Ttimeout值增加50ms;

c.若在超时时间内未接收到回复报文,则认为网络或者该测试设备存在故障,此时若存在冗余备份设备,则自动切换到备份设备并给出故障提示,若不存在冗余备份设备,则给出错误提示信息并停止使用该设备继续测试;若在超时时间内接收到回复报文,则认为该测试设备正常,能够继续用于测试。

优选的,步骤(4)中描述的测试结束后设备关闭的具体方法为:

向步骤(3)中所有状态正常的测试设备发送请求报文,并等待应答如果在超时时间内没有收到ICMP报文回令,则认为网络或测试设备存在故障,输出故障提示信息,并持续检测测试设备状态,直至设备状态恢复好或者用户取消;如果在超时时间内收到ICMP报文回令,则表明该测试设备连接正常,对于检测正常的设备调用驱动函数进行反初始化并关闭设备。

本发明与现有技术相比具有如下优点:

(1)本发明的故障检测方法在初始化前、测试过程中以及测试结束后均对测试设备进行故障检测,在确保测试设备状态准备好时才调用驱动函数对设备进行操作,避免了由于驱动不完善给上位机带来的风险,使得整个系统的可靠性进一步提高;

(2)提供了运行中的故障检测机制,可以保证在链路或设备发生故障时及时切换到冗余备份设备,使热备份设备真正发挥作用。

附图说明

图1为本发明设备初始化阶段故障检测流程图;

图2为本发明测试阶段故障检测流程图;

图3为本发明关闭设备阶段故障检测流程图。

具体实施方式

本发明提出的方法使用TCP/IP协议族中的ICMP协议进行故障检测,所有使用TCP/IP协议进行网络通信的设备均支持ICMP协议,当网络上的设备接收到ICMP请求报文后,需要在指定超时时间内向对方回送ICMP回复报文,通过这种机制可以对通信链路进行有效的检查,并能及时发现可能存在的故障,以进行相应处理。

本发明提出的基于ICMP报文的快速故障检测方法主要分为以下四个阶段:

(1)状态准备阶段,确定本次试验所需要连接的测试设备,选出底层使用TCP/IP协议进行通信的测试设备,并建立设备连接列表。

步骤(1)根据将进行的测试项目需求选择待使用的设备,并根据每种设备的特征进行分类,对采用以太网进行连接并需要进行故障检测的设备在软件中建立列表,以备后续检测使用。

(2)在设备初始化前,测控系统中的上位机(通常为测发控软件)需要调用设备驱动对列表中的测试设备进行初始化,为确保此时设备已上电完成并且网络已连接好,上位机向待连接的设备周期性发送ICMP报文,直到接收到正常的ICMP报文回令,此时表明设备已连接好,可正常调用驱动函数对设备进行初始化,设备初始化流程如图1所示。如果在约定时间内没有收到ICMP报文回令,则认为网络或测试设备存在故障,输出故障提示信息。

在初始化或复位设备之前采用发送ICMP报文并接手ICMP报文回复的方式进行状态检测,以判断设备是否已连接完成并可以进行初始化。此步骤具体操作方法为:

a.读取步骤(1)中所建立的列表,并获取列表中每个设备的IP地址;

b.通过以太网向每个IP地址发送ICMP请求报文,在Windows平台上可以使用IcmpCreateFile和IcmpSendEcho系列API完成该操作,并等待ICMP回复报文,其中ICMP回复报文的超时时间根据以下原则动态调整:

b1.超时时间初始值设为Ttimeout,默认状态下采用经验值100ms;

b2.若待连接设备处理器性能较弱(如嵌入式设备或者处理器主频低于1Ghz),则Ttimeout值增加50ms;

b3.若待连接设备与上位机不处于同一网段,则每跨越一层交换机Ttimeout值增加50ms;

b4.若在指定超时时间内未收到回复报文,则允许自动重试,最多重试2次,每次重试Ttimeout值增加100ms。

c.若在指定超时时间内接收到回复报文,则认为该设备网络连接已建立并可以进行初始化,否则给出提示信息以提醒用户。

(3)在测试过程中,为及时发现测试设备故障,由上位机周期性发送ICMP报文对设备在位情况进行检测。在检测到错误时,及时给出错误提示,并停止使用该设备继续测试;若存在冗余设备,则切换到冗余设备继续进行测试,测试阶段故障检测机制如图2所示。

a.对步骤(2)中已完成连接并初始化好的设备建立Keep-Alive机制,每当间隔Tspan时间未与某设备进行数据传输时,需要发送ICMP请求报文,以检测设备运行状态,其中Tspan使用经验值2S,该值可根据系统可靠性要求动态调整,Tspan值越小,则可以越快检测出问题,但系统和网络开销也相应增大,反之亦然。ICMP回复报文的超时时间计算方法步骤(2)中一致,但不允许自动重试。

b.对于ICMP检测未通过的设备,若存在冗余备份设备,则自动切换到备份设备并给出提示,否则给出错误提示信息并停止使用该设备继续测试。为避免偶然网络拥堵导致的网络异常,上述切换允许反复。

(4)在测试结束后,需要调用驱动程序接口关闭所有已初始化的设备,为保证关闭操作顺利完成,在调用驱动程序时,首先通过ICMP报文对设备连接情况进行检测,只有当设备连接正常时才进行后续操作,否则提示错误,测试结束时故障检测机制如图3所示。

a.向步骤(2)中所有已完成连接并初始化好的设备发送请求报文,并等待应答,方法与步骤(2)中描述的方法一致;

b.对于检测正常的设备调用驱动函数进行反初始化并关闭设备,对于检测不正常的设备给出提示信息以提醒用户,并持续检测对端情况,直至设备状态恢复好或者用户取消;

c.对于步骤b中状态恢复好的设备调用驱动函数进行反初始化并关闭设备。

以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。

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