网络配置NETCONF连接检测方法和装置与流程

文档序号:13969104阅读:503来源:国知局

本申请涉及网络通信技术,特别涉及网络配置(netconf)连接检测方法和装置。



背景技术:

netconf是一种基于可扩展标记语言(xml)的配置协议。在netconf客户端和服务端之间建立netconf连接后,netconf客户端通过netconf连接向服务端下发网络配置,这实现了更为灵活和方便的网络配置。在应用中,netconf客户端可为控制器,服务端为交换设备。

但是,因为链路故障、服务端的网络配置错误等原因,netconf客户端和服务端之间的netconf连接并不总是正常(可用)的,为方便netconf客户端及时感知其与服务端之间的netconf连接异常(不可用),亟待需要一种可靠的检测方式来检测netconf客户端与服务端之间的netconf连接。



技术实现要素:

本申请提供了网络配置netconf连接检测方法和装置,以检测netconf客户端与服务端之间netconf连接。

本申请提供的技术方案包括:

在第一方面,本申请提供了一种netconf连接检测方法,该方法应用于netconf客户端,包括:

在本客户端与服务端协商建立netconf连接后,若检测出本客户端在指定时间内未收到来自所述服务端发送的任何一个消息,则,

通过所述netconf连接向所述服务端发送用于检测所述netconf连接的保活消息;

依据在发出所述保活消息之后的指定时间内是否通过所述netconf连接接收到来自所述服务端发送的消息确定所述netconf连接是否正常。

结合第一方面,在第一种可能的实现方式中,所述依据在发出保活消息之后的指定时间内是否通过所述netconf连接接收到来自所述服务端发送的消息确定所述netconf连接是否正常,包括:

若在发出所述保活消息之后的指定时间内通过所述netconf连接接收到所述服务端发送的消息,则确定所述netconf连接正常;

若在发出所述保活消息之后的指定时间内未通过所述netconf连接接收到所述服务端发送的任何一个消息,则确定所述netconf连接异常。

结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定netconf连接正常之后,进一步包括:检查本地预设的连接检测数是否为零,若否,将本地预设的连接检测数置为零;

所述若在发出所述保活消息之后的指定时间内未通过所述netconf连接接收到所述服务端发送的任何一个消息,且在确定所述netconf连接异常之前,进一步包括:将本地预设的连接检测数增加设定值,检查增加设定值后的所述连接检测数是否不小于预设阈值,如果否,则再次向所述服务端发送用于检测所述netconf连接的保活消息;如果是,则将所述连接检测数清零。

结合第一方面的第一种、第二种可能的实现方式,在第三种可能的实现方式中,所述保活消息为非netconf消息,在所述netconf连接的任一时间发送。

结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述保活消息携带响应回复标识,所述响应回复标识用于指示收到所述保活消息的所述服务端返回所述保活消息的响应消息。

在第二方面,本申请提供了一种netconf连接检测装置,该装置应用于netconf客户端,包括:

检测单元,用于在本客户端与服务端协商建立netconf连接后,检测本客户端在指定时间内是否收到来自所述服务端发送的任何一个消息;

发送单元,用于若所述检测单元检测出本客户端在指定时间内未收到来自所述服务端发送的任何一个消息,则通过所述netconf连接向所述服务端发送用于检测所述netconf连接的保活消息;

确定单元,用于依据在发出所述保活消息之后的指定时间内是否通过所述netconf连接接收到来自所述服务端发送的消息确定所述netconf连接是否正常。

结合第二方面的,在第一种可能的实现方式中,所述确定单元依据在发出保活消息之后的所述指定时间内是否通过所述netconf连接接收到来自所述服务端发送的消息确定所述netconf连接是否正常包括:

若在发出所述保活消息之后的指定时间内通过所述netconf连接接收到所述服务端发送的消息,则确定所述netconf连接正常;

若在发出所述保活消息之后的指定时间内未通过所述netconf连接接收到所述服务端发送的任何一个消息,则确定所述netconf连接异常。

结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述装置进一步包括:第一设置单元,用于检查本地预设的连接检测数是否为零,若否,将本地预设的连接检测数置为零;

所述装置进一步包括:第二设置单元,用于将本地预设的连接检测数增加设定值,检查增加了设定值后的所述连接检测数是否不小于预设阈值,如果否,则再次触发所述发送单元向所述服务端发送用于检测所述netconf连接的保活消息;如果是,则将所述连接检测数清零。

结合第二方面的第一种、第二种可能的实现方式,在第三种可能的实现方式中,所述保活消息为非netconf消息,在所述netconf连接的任一时间发送。

结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述保活消息携带响应回复标识,所述响应回复标识用于指示收到所述保活消息的所述服务端返回所述保活消息的响应消息。

由以上技术方案可以看出,在本申请中,netconf客户端检测出在指定时间内未通过netconf连接收到来自服务端发送的任何一个消息来触发检测本netconf客户端与服务端之间已建立的netconf连接,实现了netconf连接的检测;

进一步地,在本申请中,netconf客户端与服务端之间已建立的netconf连接的检测并非定期触发,而是基于netconf连接上的消息状态(netconf客户端在指定时间内未通过netconf连接收到来自服务端发送的任何一个消息)触发的,是不会对业务有影响的,原因为:在netconf连接上有很多消息比如业务消息时,因为此时netconf客户端会不断地通过netconf连接收到服务端返回的消息,不会出现诸如“netconf客户端在指定时间内没有通过netconf连接收到服务端发送的消息”的情况,因此,netconf客户端是不会通过netconf连接发送保活消息的;而当出现netconf客户端在指定时间内没有通过netconf连接收到服务端发送的消息时,说明此时netconf连接并不繁忙(没有或者有很少的业务消息),这时netconf客户端通过netconf连接发送保活消息是不会对业务有什么影响。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为本申请提供的方法流程图;

图2为本申请实施例提供的步骤102实现流程图;

图3为本申请实施例提供的步骤102另一实现流程图;

图4为本申请提供的globalrequest消息结构示意图;

图5为本申请提供的装置结构图;

图6为本申请提供的装置硬件结构图。

具体实施方式

在应用中,netconf客户端与服务端之间的netconf连接是基于安全外壳(英文:secureshell,简称:ssh)协议的netconf连接,简称netconfoverssh连接。在本申请中,作为一个实施例,netconf客户端可为控制器,服务端为交换设备。

为了方便netconf客户端及时感知其与服务端之间的netconfoverssh连接异常,常用的一种netconf连接检测方案具体为:

netconf客户端定期通过netconfoverssh连接发送任意的一个用于指定作为检测netconfoverssh连接的netconf消息(简称指定netconf消息)来确认是否能和netconfoverssh连接对端的服务端正常连通;

当netconf客户端在发送指定netconf消息之后的设定时长内通过netconfoverssh连接接收到服务端返回的回应时,确定netconfoverssh连接是正常的。此时,netconf客户端可将netconfoverssh连接正常的消息通知给上层业务管理设备,以便上层业务管理设备通过netconf客户端与服务端之间正常的netconfoverssh连接发送netconf配置消息给服务端来对服务端进行业务管理。

当netconf客户端在发送指定netconf消息之后的设定时长内未接收到服务端返回的回应时,则确定netconfoverssh连接是异常的。此时,netconf客户端可将netconfoverssh连接异常的消息通知给上层业务管理设备,并尝试重新与服务端建立netconfoverssh连接。

通过上面描述可以看出,netconf客户端定期通过netconfoverssh连接发送指定netconf消息能够检测出netconfoverssh连接的异常。

但是,在上面描述的netconfoverssh连接检测方案中,netconf客户端是定期通过netconfoverssh连接发送指定netconf消息来检测netconfoverssh连接是否异常,其并不关心netconfoverssh连接当前的消息状态,即使netconfoverssh连接当前有很多业务消息交互,已明确指示netconfoverssh连接正常,但是假若netconf客户端发现检测netconfoverssh连接的时间到达,其也会通过netconfoverssh连接发送指定netconf消息来检测netconfoverssh连接是否异常,这导致一些完全没有必要执行的netconfoverssh连接检测,也会导致同一时间内netconfoverssh连接上有很多消息(包括业务消息、指定netconf消息)发送,有可能延迟业务消息交互。

为了避免上述问题,本申请提供了一种可靠的且依赖于netconfoverssh连接本身的消息状态的检测方法,以实现检测netconf客户端与服务端之间的netconf连接(比如netconfoverssh连接)。

参见图1,图1为本申请提供的方法流程图。该流程应用于netconf客户端。

如图1所示,该流程可包括以下步骤:

步骤101,netconf客户端在与服务端协商建立netconf连接后,若检测出本netconf客户端在指定时间内未收到来自所述服务端发送的任何一个消息,则向所述服务端发送用于检测所述netconf连接的保活消息。

作为一个实施例,在本申请中,netconf客户端与服务端协商建立netconf连接的方法类似现有netconf连接建立方式,这里仅简单做一下描述:netconf客户端向服务器端发起建立netconf连接(比如上述的netconfoverssh连接)的请求,以与服务端协商建立netconf连接(比如上述的netconfoverssh连接),具体建立过程此处省略描述。

当netconf连接建立成功后,则netconf客户端可通知上层业务管理设备,以便上层业务管理设备通过netconf客户端与服务端之间的netconf连接(比如上述的netconfoverssh连接)发送netconf配置消息给服务端来对服务端进行业务管理。当netconf连接建立失败的情况,不属于本申请涉及的范围,此处不再描述。

当netconf客户端与服务端协商建立netconf连接后,为便于netconf客户端及时感知其与服务端之间的netconf连接异常,则本申请中,如步骤101描述的,netconf客户端会在检测出本netconf客户端在指定时间内未收到来自所述服务端发送的任何一个消息,则向所述服务端发送用于检测所述netconf连接的保活消息。以netconf连接为netconfoverssh连接为例,这里所述的来自所述服务端发送的任何一个消息是指来自所述服务端发送的任一ssh消息。这里的任一ssh消息其可为netconf消息,也可为非netconf消息。

步骤102,netconf客户端依据在发出保活消息之后的指定时间内是否通过所述netconf连接收到来自所述服务端发送的消息确定所述netconf连接是否正常。

作为一个实施例,这里的指定时间可根据实际情况设置,比如设置为10秒(s)。

作为一个实施例,本步骤102确定netconf连接是否正常可包括图2或图3所示的流程。这里暂不赘述。

至此,完成图1所示流程。

通过图1所示流程可以看出,在本申请中,netconf客户端检测出在指定时间内未通过netconf连接收到来自服务端发送的任何一个消息来触发检测本netconf客户端与服务端之间已建立的netconf连接,实现了netconf连接的检测;

进一步地,在本申请中,netconf客户端与服务端之间已建立的netconf连接的检测并非定期触发,而是基于netconf连接上的消息状态(netconf客户端在指定时间内未通过netconf连接收到来自服务端发送的任何一个消息)触发的,是不会对业务有影响的,原因为:在netconf连接上有很多消息比如业务消息时,因为此时netconf客户端会不断地通过netconf连接收到服务端返回的消息,不会出现诸如“netconf客户端在指定时间内没有通过netconf连接收到服务端发送的消息”的情况,因此,netconf客户端是不会通过netconf连接发送保活消息的;而当出现netconf客户端在指定时间内没有通过netconf连接收到服务端发送的消息时,说明此时netconf连接并不繁忙(没有或者有很少的业务消息),这时netconf客户端通过netconf连接发送保活消息是不会对业务有什么影响,不会出现上面描述的定期检测netconfoverssh连接所出现的各种问题。

参见图2,图2为本申请提供的步骤102实现流程图。如图2所示,该流程可包括以下步骤:

步骤201,netconf客户端在发出所述保活消息之后的指定时间内若通过netconf连接接收到服务端发送的消息,则执行步骤202,netconf客户端在发出所述保活消息之后的指定时间内若未通过netconf连接接收到服务端发送的任何一个消息,则执行步骤203。

步骤202,确定所述netconf连接正常。

本步骤202是netconf客户端在发出所述保活消息之后的指定时间内通过netconf连接接收到服务端发送的任何一个消息的前提下执行的。当netconf客户端在发出所述保活消息之后的指定时间内通过netconf连接接收到服务端发送的任何一个消息,则意味着此时netconf客户端与服务端之间已建立的netconf连接是正常(可用)的。以netconf连接为netconfoverssh连接为例,这里所述的来自所述服务端发送的任何一个消息是指来自所述服务端发送的保活消息的响应信息(属于ssh消息)或者其他任一ssh消息(比如netconf消息、非netconf消息等)。

步骤203,确定所述netconf连接异常。

本步骤203是netconf客户端在发出所述保活消息之后的指定时间内未通过netconf连接接收到服务端发送的任何一个消息的前提下执行的。当netconf客户端在发出所述保活消息之后的指定时间内未通过netconf连接接收到服务端发送的任何一个消息,则意味着此时netconf客户端与服务端之间已建立的netconf连接也意味着是异常(不可用)的。

至此,完成图2所示流程。

通过图2所示流程最终实现了netconf连接的检测。

参见图3,图3为本申请提供的步骤102另一实现流程图。如图3所示,该流程可包括以下步骤:

步骤301,netconf客户端在发出所述保活消息之后的指定时间内若通过netconf连接接收到服务端发送的消息,则执行步骤302,netconf客户端在发出所述保活消息之后的指定时间内若未通过netconf连接接收到服务端发送的任何一个消息,则执行步骤303。

步骤302,确定netconf连接正常,并检查本地预设的连接检测数是否为零,若否,将本地预设的连接检测数置为零。

在本步骤302中,若检查出本地预设的连接检测数为零,则不针对连接检测数执行任何处理,即,维持本地预设的连接检测数为零。

这里,连接检测数其可预先设置在netconf客户端本地,具体实现时可为计数器,用于记录连续检测netconf连接的次数。在本申请中,之所以在netconf客户端本地设置连接检测数,其目的是实现在连接检测数指示的连续检测netconf连接的次数不小于预设阈值时才确定netconf连接,并非如图2所示流程仅基于一次netconf连接检测就可确定netconf连接异常,提高netconf连接检测的可靠性。

步骤303,将本地预设的连接检测数增加设定值,检查增加了设定值后的所述连接检测数是否大于或等于预设阈值,如果否,则再次向所述服务端发送用于检测所述netconf连接的保活消息;如果是,则将本地预设的连接检测数清零,并确定所述netconf连接异常。

作为一个实施例,这里的设定值可为1。

在一个例子中,步骤303中的预设阈值可根据netconf客户端本身性能和实际需求自定义设置,比如设置为3。

至此,完成图3所示流程的描述。

通过图3所示流程最终实现了netconf连接的检测。

进一步地,相比于图2所示流程,图3所示流程在发出所述保活消息之后的指定时间内检查出未通过netconf连接接收到服务端发送的任何一个消息时,并不立即确定netconf连接异常,而是依赖于本地预设的用于记录连续检测netconf连接次数的连接检测数确定netconf连接异常,在连接检测数指示的连续检测netconf连接的次数不小于预设阈值时确定netconf连接,这相比于图2所示的流程,netconf连接检测的可靠性高,检测出的netconf连接是否正常的结果也更准确。

在本申请中,作为一个实施例,netconf客户端向服务端发送的用于检测netconf连接的保活消息,是要求服务端回复响应消息的。在一个例子中,netconf客户端向服务端发送的用于检测netconf连接的保活消息可携带响应回复标识,所述响应回复标识用于指示收到所述保活消息的服务端返回所述保活消息的响应消息。这里的响应消息不限响应消息的内容是成功响应消息(比如ssh-msg-request-success)还是失败响应消息(比如ssh-msg-request-failure)。

在本申请中,保活消息、保活消息的响应消息为非netconf消息,不要求在所述netconf连接上串行发送,可在任意时间发送。

基于上面对保活消息的描述,则作为一个实施例,本申请中的保活消息可优选为rfc4254定义的全局请求(globalrequest)消息。globalrequest消息不为netconf消息,不要求在netconf连接上串行发送。图4示出了globalrequest消息的格式。

作为一个实施例,在本申请中,当保活消息为rfc4254定义的globalrequest消息时,上述的响应回复标识可为globalrequest消息新增加的一个字段携带的标识。

作为另一个实施例,在本申请中,当保活消息为rfc4254定义的globalrequest消息时,上述的响应回复标识也可为承载于所述globalrequest消息的需要回复(wantreply)字段的一个标识。如图4所示,globalrequest消息中有一个wantreply字段,当wantreply字段为响应回复标识比如true时意味着收到globalrequest消息的设备必须回应成功响应消息(比如ssh-msg-request-success)或者失败响应消息(比如ssh-msg-request-failure)。其中,当收到globalrequest消息的设备不支持globalrequest消息的消息类型时,可直接回应失败响应消息(比如ssh-msg-request-failure)。

下面以保活消息为globalrequest消息、netconf连接为netconfoverssh连接为例对本申请提供的方法进行描述:

当netconf客户端与服务端协商成功建立netconfoverssh连接后,netconf客户端会启动对netconfoverssh连接的如下检测:

netconf客户端在指定时间(比如10s)没有通过netconfoverssh连接接收到服务端发来的任何一个消息,则主动通过本netconf客户端与服务端之间已建立的netconfoverssh连接发送一个globalrequest消息,以试探一下本netconf客户端与服务端之间已建立的netconfoverssh连接是否正常。如上针对globalrequest消息的描述,服务端收到globalrequest消息后会回应响应消息,但是也有可能出现以下情况:服务端当前比较繁忙正处理业务消息,服务端向netconf客户端发送业务消息先于回应响应消息。

但是,不管netconf客户端在发送globalrequest消息之后的指定时间(比如10s)内是通过本netconf客户端与服务端之间已建立的netconfoverssh连接收到globalrequest消息的响应消息,还是其他ssh消息,只要netconf客户端通过本netconf客户端与服务端之间已建立的netconfoverssh连接收到,则意味着本netconf客户端与服务端之间已建立的netconfoverssh连接是正常可用的。

反之,netconf客户端在发送globalrequest消息之后的指定时间(比如10s)内未通过本netconf客户端与服务端之间已建立的netconfoverssh连接收到任何一个消息,则结合图3所示流程,netconf客户端会将本地预设的连接检测数增加1,检查增加了1后的连接检测数是否大于或等于预设阈值,如果否,再次通过本netconf客户端与服务端之间已建立的netconfoverssh连接发送一个globalrequest消息,如果是,则确定netconf连接异常。

需要说明的是,在本申请中,一旦netconf客户端检测出本netconf客户端与服务端之间建立的netconf连接比如netconfoverssh连接异常,则netconf客户端会关闭承载于该异常netconf连接的所有会话比如ssh会话,将关闭会话的消息通知上层业务管理设备,并开始尝试重新与服务端协商建立netconf连接,当重新建立netconf连接后,返回图1所示流程。

以上对本申请提供的实施例进行了描述。

下面对本申请提供的装置进行描述:

参见图5,图5为本申请提供的装置结构图。该装置应用于netconf客户端,如图5所示,该装置包括:

检测单元501,用于在本客户端与服务端协商建立netconf连接后,检测本客户端在指定时间内是否收到来自所述服务端发送的任何一个消息;

发送单元502,用于若检测单元501检测出本客户端在指定时间内未收到来自所述服务端发送的任何一个消息,则通过所述netconf连接向所述服务端发送用于检测所述netconf连接的保活消息;

确定单元503,用于依据在发出所述保活消息之后的指定时间内是否通过所述netconf连接接收到来自所述服务端发送的消息确定所述netconf连接是否正常。

作为一个实施例,所述确定单元503依据在发出保活消息之后的所述指定时间内是否通过所述netconf连接收到来自所述服务端发送的消息确定所述netconf连接是否正常包括:

若在发出所述保活消息之后的指定时间内通过所述netconf连接接收到所述服务端发送的消息,则确定所述netconf连接正常;

若在发出所述保活消息之后的指定时间内未通过所述netconf连接接收到所述服务端发送的任何一个消息,则确定所述netconf连接异常。

作为一个实施例,所述装置进一步包括:

第一设置单元504,用于检查本地预设的连接检测数是否为零,若否,将本地预设的连接检测数置为零;

第二设置单元505,用于将本地预设的连接检测数增加设定值,检查增加了设定值后的所述连接检测数是否不小于预设阈值,如果否,则再次触发发送单元502向所述服务端发送用于检测所述netconf连接的保活消息;如果是,则将所述连接检测数清零。

作为一个实施例,所述保活消息为非netconf消息,在所述netconf连接的任一时间发送。

作为一个实施例,所述保活消息携带响应回复标识,所述响应回复标识用于指示收到所述保活消息的所述服务端返回所述保活消息的响应消息。

至此,完成图5所示装置的描述。

对应地,本申请还提供了图5所示装置的硬件结构图。如图6所示,该硬件结构包括:

可包括处理器601、存储有机器可执行指令的机器可读存储介质602。处理器601与机器可读存储介质602可经由系统总线603通信。并且,通过读取并执行机器可读存储介质602中与netconf会话状态检测逻辑对应的机器可执行指令,处理器601可执行上文描述的netconf连接检测方法。

本文中提到的机器可读存储介质602可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:随机存取存储器(英文:radomaccessmemory,简称:ram)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

至此,完成图6所示的硬件结构描述。

在本申请中,还提供了一种包括机器可执行指令的机器可读存储介质,例如图6中的机器可读存储介质602,所述机器可执行指令可由netconf连接检测装置中的处理器601执行以实现以上描述的netconf连接检测方法。

具体地,通过调用并执行机器可读存储介质中与netconf连接检测逻辑对应的机器可执行指令,处理器601可执行以上netconf连接检测方法中的操作。

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

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