一种隧道探测方法及装置、设备、存储介质与流程

文档序号:22141113发布日期:2020-09-08 13:41阅读:138来源:国知局
一种隧道探测方法及装置、设备、存储介质与流程

本申请实施例涉及但不限于网络技术,尤其涉及一种隧道探测方法及装置、设备、存储介质。



背景技术:

随着互联网的普及,大多数人的生活和工作离不开网络,从而对网络的安全和质量要求逐步提高,提供安全和稳定的网络已经成为高质量生活的基本要求。基于互联网安全协议(internetprotocolsecurity,ipsec)的虚拟专用网络(virtualprivatenetwork,vpn)作为网际互连协议(internetprotocol,ip)层的安全协议,承担着网络安全的责任,但在网络适应方面有所欠缺。因此,如何快速探测和感知基于ipsec协议的vpn隧道的质量已成为亟待本领域技术人员解决的问题。



技术实现要素:

有鉴于此,本申请实施例提供一种隧道探测方法及装置、设备、存储介质。

本申请实施例的技术方案是这样实现的:

一方面,本申请实施例提供一种隧道探测方法,所述方法包括:

获得目标探测机制,所述目标探测机制为:根据对端支持的隧道探测机制对待探测隧道进行探测的探测结果,从所述对端支持的隧道探测机制中确定的;其中,所述待探测隧道为本端与所述对端之间建立的隧道;

利用所述目标探测机制,对所述待探测隧道进行探测,得到所述待探测隧道的质量。

另一方面,本申请实施例提供一种隧道探测装置,所述装置包括:

获得模块,用于获得目标探测机制,所述目标探测机制为:根据对端支持的隧道探测机制对待探测隧道进行探测的探测结果,从所述对端支持的隧道探测机制中确定的;其中,所述待探测隧道为本端与所述对端之间建立的隧道;

探测模块,用于利用所述目标探测机制,对所述待探测隧道进行探测,得到所述待探测隧道的质量。

再一方面,本申请实施例提供一种网络设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。

又一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。

本申请实施例中,利用从对端支持的隧道探测机制中确定的目标探测机制对待探测隧道进行探测,确定待探测隧道的质量。首先,由于采用对端已经支持的隧道探测机制进行隧道质量探测时,对端可以自动回包,无需额外定义通信协议进行支持,这样,根据对端发送的回包,可以快速识别隧道质量。再次,目标探测机制为根据对端支持的隧道探测机制对待探测隧道进行探测的探测结果而确定,这样可以根据探测结果选择最合适的方式进行隧道质量探测,从而有效提高隧道质量探测的可靠性和准确性。再次,利用目标探测机制对待探测隧道进行质量探测时,是通过待探测隧道向对端发送探测包,因此,当两个对等端之间建立了多个不同的隧道时,可以通过该方式探测到每条隧道的质量,从而满足高可用场景下的隧道探测需求。最后,还可以预先或者通过特定的定时任务定时从对端支持的隧道探测机制中确定目标探测机制,并将确定好的目标探测机制存储至本地存储器或远端,当需要对待探测隧道进行探测时,再从本地存储器或远端获得目标探测机制,从而进一步减少进行隧道质量探测时的耗时以及计算资源和网络资源的消耗。

附图说明

图1为本申请实施例提供的一种隧道探测方法的实现流程示意图;

图2为本申请实施例提供的一种隧道探测方法的实现流程示意图;

图3a为本申请实施例提供的一种隧道探测方法的实现流程示意图;

图3b为本申请实施例提供的一种隧道探测方法的实现流程示意图;

图4为本申请实施例隧道探测装置的组成结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

为了更好地理解本申请实施例提供的隧道探测机制,首先对相关技术中采用的隧道探测机制进行说明。

在相关技术中,采用对端存活检测(deadpeerdetection,dpd)协议来探测ipsecvpn隧道中对端的存活状态。dpd协议是用来检测对端的对等端是否存活的机制,类似相关协议中的hello或keep-alive机制。但是,使用dpd协议来探测基于ipsec协议的vpn隧道中对端的存活状态的方式,存在如下缺陷:

1)dpd协议探测的是对端是否存活,而不是探测实际ipsec隧道是否正常。由于dpd使用的是用户数据报协议(userdatagramprotocol,udp),而ipsec隧道使用的是封装安全载荷(encapsulatesecuritypayload,esp)协议,所以采用dpd协议进行探测时,实际探测结果并不代表隧道的情况。

2)dpd属于控制流量,探测不能太频繁,因此,依赖dpd探测机制进行ipsec隧道探测时,对于网络异常的感知速度很慢。

3)dpd只能探测对端是否存活,而当两个对等端之间建立了多个不同的ipsec隧道时,无法探测不同隧道的质量,因而该方式无法满足高可用场景的要求。

4)dpd属于因特网密钥交换(internetkeyexchange,ike)协议,由于部分厂家对ike的安全联盟(securityassociation,sa)和ipsecsa的关联不一样,如果ike的sa不存在,也就发送不了dpd包,因此会产生兼容性问题。

本申请实施例提供一种隧道探测方法,如图1所示,所述方法可以由网络设备的处理器执行,包括:

步骤s101,获得目标探测机制,所述目标探测机制为:根据对端支持的隧道探测机制对待探测隧道进行探测的探测结果,从所述对端支持的隧道探测机制中确定的;其中,所述待探测隧道为本端与所述对端之间建立的隧道;

这里,待探测隧道基于的隧道协议可以包括但不限于ipsec、点对点隧道协议(pointtopointtunnelingprotocol,pptp)、通用路由封装协议(genericroutingencapsulation,gre)等。在实施时,本领域技术人员可以根据实际情况选择任意合适的隧道协议,本申请实施例对此并不限定。在一些实施例中,待探测隧道采用ipsec协议,对端为与本端建立ipsec隧道的对等端。

对端支持的隧道探测机制为对端在与本端进行网络通信的过程中已经支持的通信机制,无需额外定义特定的协议来支持探测。利用对端已经支持的隧道探测机制对所述待探测隧道进行探测时,对端可以基于已经支持的通信机制自动回包,无需进行额外的操作。在实施时,对端支持的隧道探测机制可以包括但不限于ttl探测机制、路由自回包机制、pmtu探测机制、tcp探测机制等。对端支持的隧道探测机制的数量由实际情况而定,可以是一个也可以是多个。在一些实施例中,当对端支持的隧道探测机制的数量较多时,为减少计算资源以及网络资源的占用,可以仅选择特定数量的隧道探测机制进行目标探测机制确定。

目标探测机制为对端支持的隧道探测机制中的一种,由处理器根据对端支持的隧道探测机制对待探测隧道进行探测的探测结果而确定。在一些实施例中,处理器可以在需要对待探测隧道进行探测时,从所述对端支持的隧道探测机制中确定目标探测机制。在另一些实施例中,处理器可以预先或者通过特定的定时任务定时从所述对端支持的隧道探测机制中确定目标探测机制,并将确定好的目标探测机制存储至本地存储器或远端,当需要对待探测隧道进行探测时,再从本地存储器或远端获得目标探测机制。在实施时,本领域技术人员可以根据实际情况选择合适的方式获得目标探测机制,本申请实施例对此并不限定。

步骤s102,利用所述目标探测机制,对所述待探测隧道进行探测,得到所述待探测隧道的质量。

这里,待探测隧道的质量可以包括但不限于隧道的存活状态、通信时延、丢包率等中的一种或多种。

目标探测机制为对端已经支持的隧道探测机制。利用目标探测机制对待探测隧道进行探测时,可以利用该目标探测机制,通过待探测隧道向所述对端发送探测包,对端可以基于已经支持的通信机制自动回包,处理器可以接收对端自动回复的返回包,并根据该返回包确定待探测隧道的质量。这里,对端进行自动回包时,可以通过该待探测隧道,也可以不通过,本领域技术人员在实施时可以根据实际情况选择合适的方式,本申请实施例对此并不限定。

在一些实施例中,所述目标探测机制为生存时间(timetolive,ttl)探测机制;所述待检测隧道的质量包括隧道的存活状态。对应地,上述步骤s102包括:

步骤s111,根据特定的初始校验信息构造互联网控制报文协议(internetcontrolmessageprotocol,icmp)包,其中,所述icmp包中ttl值为特定的字段,所述特定的字段用于表征对端接收到所述icmp包时自动回复特定的返回包;

这里,初始校验信息可以是一个特定的字符串或者数字,构造好的icmp包中携带该字符串或数字,对端自动回包时将该字符串或数字返回,处理器可对返回的字符串或数字进行验证。在实施时,初始校验信息可以是一个随机生成的字符串或者数字,也可以是一个时间戳。本领域技术人员可以根据实际情况选择合适的初始校验信息,本申请实施例对此并不限定。

icmp包的ttl值被设置为特定的字段,对端在接收到该icmp包后,识别到ttl的值为该特定的字段时,会自动回复特定的返回包。在实施时,本领域技术人员可以根据icmp协议将ttl值设置为合适的字段,本申请实施例对此并不限定。例如,基于icmp协议,当ttl值为1时,对端接收到该icmp包后,在转发时会将ttl值减1变为0,此时,对端会将该icmp包丢弃,并向本端返回icmp-ttl-exceeded包,icmp-ttl-exceeded包中包含该icmp包中的全部内容。

步骤s112,通过所述待探测隧道,将所述icmp包发送至所述对端;

这里,处理器根据待探测隧道的隧道协议,对所述icmp包进行封装,并将封装后的icmp包发送至对端。

在实施时,该隧道协议可以包括但不限于ipsec、点对点隧道协议(pointtopointtunnelingprotocol,pptp)、通用路由封装协议(genericroutingencapsulation,gre)等。

步骤s113,接收并解析所述对端自动回复的返回包,得到目标校验信息;

步骤s114,当所述目标校验信息与所述初始校验信息一致时,确定所述待探测隧道存活。

这里,正常情况下,通过所述待探测隧道,将所述icmp包发送至所述对端后,对端会根据待探测隧道的隧道协议,对接收到的封装后的icmp包进行解封装,得到该icmp包,并根据该icmp包自动回复特定的返回包,该返回包中会包含初始校验信息。因此,处理器可以通过解析对端自动回复的返回包得到与该初始校验信息对应的目标校验信息,并可以通过校验该目标校验信息与初始校验信息是否一致,确定所述待探测隧道是否存活。当所述目标校验信息与所述初始校验信息一致时,说明该待探测隧道正常存活,否则,说明该待探测隧道不存活或存在异常。在一些实施例中,若本端未收到对端自动回复的返回包,或者解析对端自动回复的返回包时无法得到目标校验信息,此时也可以确定该待探测隧道不存活。

在一些实施例中,所述目标探测机制为路由自回包机制;所述待检测隧道的质量包括隧道的存活状态。对应地,上述步骤s102包括:

步骤s121,根据特定的初始校验信息构造对端回包;其中,所述对端回包的目的ip地址为本端ip地址,源ip地址为对端的ip地址;

这里,对端回包可以为本端自定义的数据包,包含特定的初始校验信息。该初始校验信息可以是一个特定的字符串或者数字,构造好的对端回包中携带该字符串或数字。在实施时,初始校验信息可以是一个随机生成的字符串或者数字,也可以是一个时间戳。本领域技术人员可以根据实际情况选择合适的初始校验信息,本申请实施例对此并不限定。

步骤s122,将所述对端回包通过所述待探测隧道发送至所述对端;

这里,处理器根据待探测隧道的隧道协议,对所述对端回包进行封装,并将封装后的对端回包发送至对端。

在实施时,该隧道协议可以包括但不限于ipsec、点对点隧道协议(pointtopointtunnelingprotocol,pptp)、通用路由封装协议(genericroutingencapsulation,gre)等。

步骤s123,接收并解析所述对端回复的所述对端回包,得到目标校验信息;

步骤s124,当所述目标校验信息与所述初始校验信息一致时,确定所述待探测隧道存活。

这里,正常情况下,通过待探测隧道,将对端回包发送至对端后,对端会根据待探测隧道的隧道协议,对接收到的封装后的对端回包进行解封装,得到对端回包。由于该对端回包的目的ip地址为本端ip地址,源ip地址为对端的ip地址,对端得到该对端回包后,对该对端回包进行路由,可将该对端回包发送回本端。因此,处理器可以通过接收并解析该对端回包得到与该初始校验信息对应的目标校验信息,并可以通过校验该目标校验信息与初始校验信息是否一致,确定所述待探测隧道是否存活。当所述目标校验信息与所述初始校验信息一致时,说明该待探测隧道正常存活,否则,说明该待探测隧道不存活或存在异常。在一些实施例中,若本端未收到该对端回包,或者解析收到的对端回包时无法得到目标校验信息,此时也可以确定该待探测隧道不存活。在一些实施例中,对端回包可以通过广域网(wideareanetwork,wan)接口直接路由到公网,并通过公网将对端回包发送至本端。考虑到数据包传输的安全性,在另一些实施例中,可以在构造对端回包时,使用待探测隧道的隧道协议对对端回包进行封装,并将封装后的对端回包通过待探测隧道发送至对端,这样,对端解析后可以得到封装后的对端回包,并将对端回包路由回隧道内发送至本端。

在一些实施例中,所述目标探测机制为路径最大传输单元(pathmaximumtransferunit,pmtu)探测机制;所述待检测隧道的质量包括隧道的存活状态。对应地,上述步骤s102包括:

步骤s131,根据所述待探测隧道中的数据流,确定所述对端的内网地址;

步骤s132,对所述内网地址进行pmtu探测,得到所述待探测隧道内的最大传输单元(maximumtransferunit,mtu);

这里,pmtu探测机制通过在ip首部中设置不分片(don'tfragment,df)标志,用于表征当前路径的对端是否需要对正在发送的ip数据包进行分片。当一个待转发的ip数据包被设置为不进行分片,且其长度超过了mtu时,对端接收到该ip数据包后会丢弃该ip数据包,并返回一个icmp不可达的差错报文,该报文中包括对端的正确mtu。在进行pmtu探测时,可以采用任意合适的探测算法进行mtu探测,可以包括但不限于递增法、递减法、分层探测算法等,本领域技术人员在实施时可以选择任意合适的算法,本申请实施例对此并不限定。

步骤s133,根据所述mtu确定所述待探测隧道的存活状态。

这里,当经过上述步骤s132可以获得待探测隧道内的mtu时,可以确定该待探测隧道是正常存活的,否则,可以确定该待探测隧道不存活或存在异常。在一些实施例中,由于在进行pmtu探测的过程中,当用于探测的ip数据包长度大于mtu时,对端会返回icmp不可达的差错报文,因此,当本端未接收到对端返回的该差错报文时,也可以确定该待探测隧道不存活或存在异常。

本申请实施例提供的隧道探测方法,利用从对端支持的隧道探测机制中确定的目标探测机制对待探测隧道进行探测,确定待探测隧道的质量。首先,由于采用对端已经支持的隧道探测机制进行隧道质量探测时,对端可以自动回包,无需额外定义通信协议进行支持,这样,根据对端发送的回包,可以快速识别隧道质量。再次,目标探测机制为根据对端支持的隧道探测机制对待探测隧道进行探测的探测结果而确定,这样可以根据探测结果选择最合适的方式进行隧道质量探测,从而有效提高隧道质量探测的可靠性和准确性。再次,利用目标探测机制对待探测隧道进行质量探测时,是通过待探测隧道向对端发送探测包,因此,当两个对等端之间建立了多个不同的隧道时,可以通过该方式探测到每条隧道的质量,从而满足高可用场景下的隧道探测需求。最后,还可以预先或者通过特定的定时任务定时从对端支持的隧道探测机制中确定目标探测机制,并将确定好的目标探测机制存储至本地存储器或远端,当需要对待探测隧道进行探测时,再从本地存储器或远端获得目标探测机制,从而进一步减少进行隧道质量探测时的耗时以及计算资源和网络资源的消耗。

本申请实施例提供一种隧道探测方法,如图2所示,所述方法可以由网络设备的处理器执行,包括:

步骤s201,确定对端支持的隧道探测机制;

这里,对端支持的隧道探测机制可以由处理器读取相关的配置信息来确定,也可以由对端根据处理器的请求将自身支持的隧道探测机制发送给处理器。其中,相关的配置信息可以由处理器在与对端建立待探测隧道时确定,也可以由网络管理员配置而确定。在实施时,本领域技术人员可以根据实际情况选择合适的方式确定对端支持的隧道探测机制,本申请实施例对此并不限定。

步骤s202,利用每一所述隧道探测机制,分别对待探测隧道进行探测;其中,所述待探测隧道为本端与所述对端之间建立的隧道;

这里,利用每一所述隧道探测机制对待探测隧道进行探测的具体实施方式可以参照前述步骤s102的实施方式,这里不再赘述。

步骤s203,根据每一所述隧道探测机制的探测结果,确定目标探测机制;

这里,每一所述隧道探测机制的探测结果可以包括但不限于相应隧道探测机制是否可用、探测耗时、消耗的网络资源等。确定目标探测机制时,可以选择可用的隧道探测机制,也可以选择探测耗时最少的探测机制,也可以选择消耗网络资源最少的探测机制,或者结合可用性、探测耗时或者消耗的网络资源等中的两种或以上确定目标探测机制。本领域技术人员可以在实施时根据实际情况确定探测结果中包括的内容并选择合适的方式确定目标探测机制,本申请实施例对此并不限定。

在一些实施例中,上述步骤s203包括:根据每一所述隧道探测机制的探测结果,确定可用的隧道探测机制;按照特定的优先级策略,确定每一所述可用的隧道探测机制的优先级;将优先级满足条件的所述可用的隧道探测机制确定为目标探测机制。这里,特定的优先级策略可以包括但不限于探测耗时越少优先级越高、消耗的网络资源越少优先级越高或者历史使用次数越多优先级越高等。优先级满足条件的可用的隧道探测机制可以是优先级最高的可用的隧道探测机制,也可以是优先级高于某一特定的优先级阈值的可用的隧道探测机制,在实施时,本领域技术人员可以根据实际情况确定合适的优先级策略以及优先级满足的条件,本申请实施例对此并不限定。

步骤s204,获得目标探测机制,所述目标探测机制为:根据对端支持的隧道探测机制对待探测隧道进行探测的探测结果,从所述对端支持的隧道探测机制中确定的;

步骤s205,利用所述目标探测机制,对所述待探测隧道进行探测,得到所述待探测隧道的质量。

这里,上述步骤s204和s205对应于前述步骤s101和s102,在实施时可以参照前述步骤s101和s102的具体实施方式。

本申请实施例提供的隧道探测方法,通过在对端支持的隧道探测机制中选择满足特定优先级条件并且可用的隧道探测机制,对待探测隧道进行质量探测,这样,可以得到最合适的用于对待探测隧道进行探测的方式,从而有效提高隧道质量探测的可靠性和准确性。

本申请实施例提供一种隧道探测方法,所述方法可以由网络设备的处理器执行,包括:

步骤s301,获得目标探测机制,所述目标探测机制为:根据对端支持的隧道探测机制对待探测隧道进行探测的探测结果,从所述对端支持的隧道探测机制中确定的;

步骤s302,利用所述目标探测机制,对所述待探测隧道进行探测,得到所述待探测隧道的质量;

这里,上述步骤s301和s302对应于前述步骤s101和s102,在实施时可以参照前述步骤s101和s102的具体实施方式。

步骤s303,根据所述待检测隧道的质量,确定所述待检测隧道是否异常;

这里,待探测隧道的质量可以包括但不限于隧道的存活状态、通信时延、丢包率等中的一种或多种。本领域技术人员可以在实施时根据实际情况选择合适的标准衡量隧道是否异常,本申请实施例对此并不限定。例如,可以在待探测隧道处于不存活状态时,确定待探测隧道异常;或者,可以在通过待探测隧道进行通信时通信延时大于特定的延时阈值时,确定待探测隧道异常;或者,可以在通过待探测隧道进行通信时丢包率高于特定的丢包率阈值时,确定待探测隧道异常。

步骤s304,当确定所述待检测隧道异常时,断开所述待检测隧道;

步骤s305,与所述对端重新建立隧道。

本申请实施例提供的隧道探测方法,可以在待探测隧道建立后,自动对该待探测隧道进行探测,以快速发现待探测隧道是否出现异常,从而在待探测隧道出现异常时,能够迅速断开该异常隧道,并重新建立隧道,进行流量切换。这样,可以有效保证网络的稳定性和适应性。

本申请实施例提供一种隧道探测方法,所述方法可以由网络设备的处理器执行,包括:

步骤s401,与对端建立待探测隧道;

这里,待探测隧道的具体建立方式可以根据要建立的隧道所基于的隧道协议而确定,本申请实施例对此并不限定。在实施时,待探测隧道基于的隧道协议可以包括但不限于ipsec、点对点隧道协议(pointtopointtunnelingprotocol,pptp)、通用路由封装协议(genericroutingencapsulation,gre)等。

在一些实施例中,所述待检测隧道为ipsecvpn隧道。对应地,上述步骤s401包括:根据ipsecvpn配置信息,与对端进行ipsec协商,并建立ipsecvpn隧道。这里,ipsecvpn隧道的建立为本领域技术人员广泛研究的技术,在此不再赘述。

步骤s402,获得目标探测机制,所述目标探测机制为:根据对端支持的隧道探测机制对待探测隧道进行探测的探测结果,从所述对端支持的隧道探测机制中确定的;

步骤s403,利用所述目标探测机制,对所述待探测隧道进行探测,得到所述待探测隧道的质量。

这里,上述步骤s402和s403对应于前述步骤s101和s102,在实施时可以参照前述步骤s101和s102的具体实施方式。

本申请实施例提供一种隧道探测方法,如图3a所示,所述方法包括:

步骤s501,建立vpn隧道;

通过ipsecvpn配置与处于通信对端的对等端进行ipsec协商,并建立ipsecvpn隧道。

步骤s502,学习探测方式;

这里,提供了几种不需要与对端协商额外的通信协议的对端已经支持的探测机制,需要通过学习从中得到最优的探测方式对所述vpn隧道进行探测。提供的几种探测机制如下:

探测机制1:ttl探测机制;该探测机制的具体探测过程如下:

11)本端设备在隧道内构造一个icmp包,该icmp包中包含校验信息seq,本端设备将该icmp包的ttl设为1后传送到对端设备的内网;

12)对端设备接收到该icmp包后,在进行转发时,将ttl减1变为0,并自动回复icmp-ttl-exceeded包;其中,icmp-ttl-exceeded包中包含了接收到的icmp包的全部内容;

13)本端设备收到icmp-ttl-exceeded包后,从icmp-ttl-exceeded包中提取返回的icmp包中的seq,并对该seq进行校验;

14)当该seq与构造icmp包时的seq一致时,校验成功,确定隧道存活。

探测机制2:路由自回包机制;该探测机制的具体探测过程如图3b所示,包括:

21)本端设备a构造对端回包detect_payload;

22)本端设备a将构造的对端回包丢入a和对端设备b之间建立的ipsecvpn隧道;

23)对端设备b通过ipsecvpn隧道接收到所述对端回包,然后将所述对端回包路由回本端;在一些实施例中还可以通过数据包内采用的隧道路由转发至本端;

24)本端接收到对端回包detect_payload后,解析该detect_payload包;

25)对detect_payload包中的校验信息进行校验,当校验成功时,则说明隧道存活,从而探测成功。

图3b中,detect_payload可以是各种数据包,为避免数据包在ipsec隧道中被拦截,可以采用esp协议或者espoverudp协议对数据包进行封装。例如,detect_payload可以是esp[spi=spi_b]enc{seq:number_detected},为使用对端设备的安全参数索引spi_b对应的密钥对校验信息seq:number_detected进行加密后得到的数据包;对应地,可以定义如下两种数据包:

packet_detect_ack:

ip[src_ip=ip_b,dst_ip=ip_a]esp[spi=spi_b]enc{seq:number_detected};

packet_detect_req:

ip[src_ip=ip_a,dst_ip=ip_b]esp[spi=spi_a]enc{packet_detect_ack}。

其中,esp[spi=spi_a]enc{packet_detect_ack}为使用本端设备的安全参数索引spi_a对应的密钥对packet_detect_ack进行加密后得到的数据包;packet_detect_req实质上是packet_detect_ack包的加密数据包,也就是packet_detect_ack包直接通过隧道加密后发送给对端,隧道加密后变成packet_detect_req包;ip_a为本端设备地址,ip_b为对端设备地址。此时,通过路由自回包机制进行隧道探测的过程可以包括以下步骤:

1)本端设备生成校验信息seq,并使用该seq构造隧道内的packet_detect_ack数据包,经过隧道后,packet_detect_ack数据包变成packet_detect_req数据包;

2)对端设备收到packet_detect_req包之后,进行解密得到packet_detect_ack包;

3)对端设备对packet_detect_ack包进行路由后从wan口将packet_detect_ack包发送回本端设备;由于packet_detect_ack包的源ip是对端地址ip_b,目的ip是本端地址ip_a,packet_detect_ack包会从wan口直接发回给本端设备;

4)本端设备收到packet_detect_ack包后,对packet_detect_ack包进行解密,得到seq并进行校验;

5)当seq校验成功时,则认为隧道存活。

在上述路由自回包机制中,对端回包的数据包是直接路由到公网,这个数据包通过公网传输并不安全,在一些实施例中可以将数据包路由回隧道内,例如,通过对原数据包进行esp协议封装,可以将隧道内的ip_b-->ip_a替换成隧道内的数据包,这样就可以实现将数据包路由到隧道内。

探测机制3:pmtu探测;该探测机制的具体探测过程如下:

31)本端设备学习ipsecvpn隧道中的数据流,得到对端设备的内网地址;

32)本端设备对该地址进行pmtu探测;

33)本端设备得到隧道内mtu以及隧道存活情况。

当上述其中一种探测机制得到探测结果之后,将该探测机制变成可用状态。当处于可用状态的探测机制多于一个时,按照特定的优先级策略挑选最优的探测机制用来进行隧道探测。这里,优先级策略可以根据实际情况确定,比如可以将处于可用状态的探测机制中探测耗时最少的探测机制确定为最优探测机制。

步骤s503,探测;

通过学习得到的探测机制进行探测,通过探测的结果来确认隧道的质量。

步骤s504,掐断隧道重新建立隧道。

在实施时,可以使用任何一种对端能够自动回包的机制,在一些实施例中,还可以学习真正的传输控制协议(transmissioncontrolprotocol,tcp)业务数据,用来进行探测,比如本端设备向对端设备发送tcp的syn包,通过学习对端业务是否返回syn+ack包来确认对端业务是否正常,从而确认隧道是否正常。

本申请实施例提供的隧道探测方法,在建立好ipsecvpn隧道之后,会自动进行探测,快速发现隧道是否出现异常,从而在隧道出现异常时重新协商隧道,进行流量切换。这样,可以保证网络的稳定性和适应性。

基于前述的实施例,本申请实施例提供一种隧道探测装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过网络设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)或现场可编程门阵列(fpga)等。

图4为本申请实施例隧道探测装置的组成结构示意图,如图4所示,所述装置400包括:获得模块410和探测模块420,其中:

所述获得模块410,用于获得目标探测机制,所述目标探测机制为:根据对端支持的隧道探测机制对待探测隧道进行探测的探测结果,从所述对端支持的隧道探测机制中确定的;其中,所述待探测隧道为本端与所述对端之间建立的隧道;

所述探测模块420,用于利用所述目标探测机制,对所述待探测隧道进行探测,得到所述待探测隧道的质量。

在一些实施例中,所述装置还包括:第一确定模块和第二确定模块;其中,所述第一确定模块用于确定对端支持的隧道探测机制;所述探测模块还用于利用每一所述隧道探测机制,分别对待探测隧道进行探测;所述第二确定模块用于根据每一所述隧道探测机制的探测结果,确定目标探测机制。

在一些实施例中,所述第二确定模块还用于:根据每一所述隧道探测机制的探测结果,确定可用的隧道探测机制;按照特定的优先级策略,确定每一所述可用的隧道探测机制的优先级;将优先级满足条件的所述可用的隧道探测机制确定为目标探测机制。

在一些实施例中,所述目标探测机制为ttl探测机制;所述待检测隧道的质量包括隧道的存活状态。对应地,所述探测模块还用于:根据特定的初始校验信息构造icmp包,其中,所述icmp包中ttl值为特定的字段,所述特定的字段用于表征对端接收到所述icmp包时自动回复特定的返回包;通过所述待探测隧道,将所述icmp包发送至所述对端;接收并解析所述对端自动回复的返回包,得到目标校验信息;当所述目标校验信息与所述初始校验信息一致时,确定所述待探测隧道存活。

在一些实施例中,所述目标探测机制为路由自回包机制;所述待检测隧道的质量包括隧道的存活状态。对应地,所述探测模块还用于:根据特定的初始校验信息构造对端回包;其中,所述对端回包的目的ip地址为本端ip地址,源ip地址为对端ip地址;将所述对端回包通过所述待探测隧道发送至所述对端;接收并解析所述对端回复的所述对端回包,得到目标校验信息;当所述目标校验信息与所述初始校验信息一致时,确定所述待探测隧道存活。

在一些实施例中,所述目标探测机制为pmtu探测机制;所述待检测隧道的质量包括隧道的存活状态。对应地,所述探测模块还用于:根据所述待探测隧道中的数据流,确定所述对端的内网地址;对所述内网地址进行pmtu探测,得到所述待探测隧道内的mtu;根据所述mtu确定所述待探测隧道的存活状态。

在一些实施例中,所述装置还包括:第三确定模块和建立模块,其中:所述第三确定模块用于根据所述待检测隧道的质量,确定所述待检测隧道是否异常;所述建立模块用于当确定所述待检测隧道异常时,断开所述待检测隧道,并与所述对端重新建立隧道。

在一些实施例中,所述待检测隧道为ipsecvpn隧道;所述建立模块还用于在所述获得目标探测机制之前,根据ipsecvpn配置信息,与对端进行ipsec协商,并建立ipsecvpn隧道。

以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的隧道探测方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台网络设备(可以是个人计算机、交换机或者路由器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

对应地,本申请实施例提供一种网络设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。

对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。

这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台网络设备(可以是个人计算机、交换机或者路由器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

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