VxLAN中的路径探测方法,控制器和网络设备与流程

文档序号:11064730阅读:712来源:国知局
VxLAN中的路径探测方法,控制器和网络设备与制造工艺

本发明涉及通信技术领域,尤其涉及虚拟可扩展局域网(Virtual Extensible Local Area Network,简称VxLAN)中的路径探测方法,控制器和网络设备。



背景技术:

软件定义网络(Software Defined Network,简称SDN),是网络虚拟化的一种实现方式,可以通过开放流转发协议(OpenFlow)将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。

VxLAN是一种覆盖网络技术或隧道技术。在VxLAN组网架构下,将虚拟机(Virtual Machine,简称VM)发出的数据包封装在用户数据报协议(User Datagram Protocol,简称UDP)中,并使用物理网络的互联网络协议/介质访问控制层(Internet Protocol/Media Access Contol,简称IP/MAC)作为外层头(outer-header)进行封装,然后在IP网络上传输,到达目的地后由虚拟可扩展局域网(VxLAN)隧道端点(VxLAN Tunnel Endpoints,简称VTEP)解封装并将数据发送给目标虚拟机。

探测IP业务流在网络中的真实业务路径是有需求的,目前基于传统网络的路径探测可以探测虚拟局域网(Virtual Local Area Network,简称VLAN)的路径通断,但对于采用VxLAN组网的虚拟化网络,却无法准确探测出准确的网络路径。



技术实现要素:

本发明实施例提供一种VxLAN中的路径探测方法,控制器和网络设备,可以解决现有VxLAN中无法探测实际业务路径的问题。

第一方面,提供了一种VxLAN中的路径探测方法,包括:

控制器根据用户输入的探测请求,构造探测报文,所述探测报文中包括:用于指示路径探测业务的标识,源虚拟可扩展局域网隧道端点VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的第一网络设备的互联网络协议IP地址;

所述控制器将所述探测报文发送至所述第一网络设备,以使所述第一网络设备复制所述探测报文,生成第一上报消息,发送所述第一上报消息给所述控制器,并根据所述源端口值转发所述探测报文直至所述目的VTEP的端点标识对应的第二网络设备;所述第一上报消息中包括所述探测报文,所述第一网络设备的IP地址以及所述第一网络设备的出接口号和入接口号;

所述控制器接收每一级网络设备发送的上报消息,其中包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息;

所述控制器根据每一级网络设备发送的上报消息中的IP地址,出接口号和入接口号,获得所述第一网络设备到所述第二网络设备之间的网络路径。

这样,控制器通过根据探测请求构造探测报文,并通过网络设备逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到真实的业务路径。

结合第一方面,在该第一方面的第一种可能实现方式中,所述探测请求中包括源虚拟机的IP地址,目的虚拟机的IP地址和协议类型标识;

所述控制器根据用户输入的探测请求,构造探测报文,包括:

所述控制器根据所述探测请求中的所述源虚拟机的IP地址,所述目的虚拟机的IP地址和所述协议类型标识,抓取目标报文;

所述控制器获取所述目标报文的源虚拟机的端口号和目的虚拟机的端口号,得到五元组信息,所述五元组信息包括所述源虚拟机的IP地址,所述目的虚拟机的IP地址,所述协议类型标识,所述源虚拟机的端口号和所述目的虚拟机的端口号;

所述控制器根据所述五元组信息,确定所述源端口值;

所述控制器根据所述源虚拟机的IP地址确定所述源VTEP的端点标识,根 据所述目的虚拟机的IP地址,确定所述目的VTEP的端点标识;

所述控制器获取所述源VTEP的端点标识对应的所述第一网络设备的IP地址;

所述控制器根据所述探测请求,确定所述路径探测类型为虚拟机间路径探测。

这样,控制器根据用户输入的探测请求,抓取报文,获得报文的五元组信息,根据五元组信息构造与真实业务一致的探测报文,模拟真实业务逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到源虚拟机和目的虚拟机之间真实的业务路径。

结合第一方面,在该第一方面的第二种可能实现方式中,所述探测请求中包括所述源VTEP的端点标识和所述目的VTEP的端点标识;所述控制器根据用户输入的探测请求,构造探测报文,包括:

所述控制器设置所述源端口值,所述源端口值根据所述源VTEP和所述目的VTEP之间的预期路径个数和设定余量个数之和递增;所述预期路径个数为用户已知的路径个数,所述设定余量个数为进行路径探测时设置的大于所述预期路径个数的个数,所述设定余量个数为正整数;

所述控制器根据所述探测请求,确定所述路径探测类型为VTEP间路径探测。

控制器根据用户输入的源VTEP的端点标识和目的VTEP的端点标识构造探测报文,并通过网络设备逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到该源VTEP和目的VTEP之间多条真实的业务路径。

结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在该第一方面的第三种可能的实现方式中,所述上报消息中还包括跳数,所述控制器根据每一级网络设备发送的上报消息中的IP地址,出接口号和入接口号,获得所述第一网络设备到所述第二网络设备的网络路径,包括:

所述控制器根据每一级网络设备发送的上报消息,从IP地址相同且跳数相同的多个上报消息中筛选出一组出接口号和入接口号;其中,每一级网络设备发送的上报消息中的跳数,按照从所述源VTEP的端点标识对应的所述第一网络设备到所述目的VTEP的端点标识对应的所述第二网络设备的顺序递减;

所述控制器根据每一级网络设备发送的上报消息中的跳数,对筛选后的所有IP地址,出接口号和入接口号组进行排序;

所述控制器根据筛选、排序后的每组IP地址、出接口号和入接口号,获得所述网络路径。

根据网络设备的IP地址对上报的网络设备的出接口号和入接口号进行筛选,可以避免网络路径中存在重复的网络设备的出接口号和入接口号,并根据跳数对每一级网络设备的出接口号和入接口号进行排序,可以准确的得到探测报文经过的每一级网络设备的先后关系,还原真实的网络路径。

结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述探测报文还包括探测实例标识,所述探测实例标识用于标识不同的路径探测;

所述方法还包括:

所述控制器根据所述探测实例标识,分别记录接收到的每一个所述网络路径的IP地址,出接口号和入接口号。

在探测报文中设置探测实例标识,可以同时进行多条或多类型网络路径的探测。

结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在该第一方面的第五种可能的实现方式中,所述方法还包括:

输出探测到的网络路径。

在控制器的用户界面输出探测到的网络路径,可以让用户直观地了解探测报文经过的每一级网络设备。

结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式或第一方面的第四种可能的 实现方式或第一方面的第五种可能的实现方式,在该第一方面的第六种可能的实现方式中,所述方法还包括:

所述控制器根据探测到的网络路径,获得所述网络路径的状态,所述网络路径的状态包括:通路、断路、和环路。

直接得到网络路径的状态,可以给用户一个直接的网络路径状态的结论,而无需用户查看探测报文经过的每一级网络设备之间的通断或环路。

第二方面,提供了一种VxLAN中的路径探测方法,包括:

网络设备接收探测报文,所述探测报文是由控制器根据用户输入的探测请求构造的,所述探测报文中包括:用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的源网络设备的IP地址;

所述网络设备根据所述目的VTEP的端点标识,判断所述网络设备是否为与所述目标VTEP的端点标识对应的目的网络设备;

若所述网络设备是与所述目标VTEP的端点标识对应的目的网络设备,则所述网络设备根据所述探测报文生成上报消息,发送所述上报消息给所述控制器;

若所述网络设备不是与所述目标VTEP的端点标识对应的目的网络设备,则所述网络设备复制所述探测报文生成上报消息,发送所述上报消息给所述控制器,并转发所述探测报文直至所述目的网络设备;

其中,所述上报消息中包括所述探测报文,所述网络设备的IP地址,以及所述探测报文经过所述网络设备的出接口号和入接口号。

网络设备逐级转发控制器通过根据探测请求构造的探测报文,逐级向控制器上报IP地址、经过的出接口号和入接口号,从而控制器可以探测到真实的业务路径。

结合第二方面,在该第二方面的第一种可能的实现方式中,所述网络设备接收探测报文之后,所述方法还包括:

根据所述用于指示路径探测业务的标识,识别接收到的所述探测报文;

根据预置的或所述控制器发送的访问控制列表ACL或流表中存储的所述探测报文与执行动作的对应关系,获取与所述探测报文对应的执行动作;

其中,所述执行动作包括复制和/或转发所述探测报文,向所述控制器发送所述上报消息。

网络设备一旦识别出接收到的是探测报文,根据访问控制列表或流表中存储的探测报文的标识与执行动作的对应关系,可以获知接收到该探测报文之后的执行动作,直接执行该执行动作即可,简化了处理过程。

第三方面,提供了一种控制器,该控制器具有实现上述方法中控制器行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

一种可能的实现方式中,所述控制器包括:处理器,接收器和发送器;其中,

所述处理器,用于根据用户输入的探测请求,构造探测报文,所述探测报文中包括:用于指示路径探测业务的标识,源虚拟可扩展局域网隧道端点VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的第一网络设备的互联网络协议IP地址;

所述发送器,用于将所述探测报文发送至所述第一网络设备,以使所述第一网络设备复制所述探测报文,生成第一上报消息,发送所述第一上报消息给所述控制器,并根据所述源端口值转发所述探测报文直至所述目的VTEP的端点标识对应的第二网络设备;所述第一上报消息中包括所述探测报文,所述第一网络设备的IP地址以及所述第一网络设备的出接口号和入接口号;

所述接收器,用于接收每一级网络设备发送的上报消息,其中包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息;

所述处理器还用于根据每一级网络设备发送的上报消息中的IP地址,出接口号和入接口号,获得所述第一网络设备到所述第二网络设备之间的网络路径。

另一种可能的实现方式中,所述控制器包括:

构造模块,用于根据用户输入的探测请求,构造探测报文,所述探测报文中包括:用于指示路径探测业务的标识,源虚拟可扩展局域网隧道端点VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的第一网络设备的互联网络协议IP地址;

发送模块,用于将所述探测报文发送至所述第一网络设备,以使所述第一网络设备复制所述探测报文,生成第一上报消息,发送所述第一上报消息给所述控制器,并根据所述源端口值转发所述探测报文直至所述目的VTEP的端点标识对应的第二网络设备;所述第一上报消息中包括所述探测报文,所述第一网络设备的IP地址以及所述第一网络设备的出接口号和入接口号;

接收模块,用于接收每一级网络设备发送的上报消息,其中包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息;

获取模块,用于根据每一级网络设备发送的上报消息中的IP地址,出接口号和入接口号,获得所述第一网络设备到所述第二网络设备之间的网络路径。

第四方面,提供了一种网络设备,该网络设备具有实现上述方法中网络设备行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

一种可能的实现方式中,所述网络设备包括:处理器,接收器和发送器;其中,

所述接收器,用于接收探测报文,所述探测报文是由控制器根据用户输入的探测请求构造的,所述探测报文中包括:用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的源网络设备的IP地址;

所述处理器,用于根据所述目的VTEP的端点标识,判断所述网络设备是否为与所述目标VTEP的端点标识对应的目的网络设备;

所述处理器还用于若所述网络设备是与所述目标VTEP的端点标识对应的 目的网络设备,则根据所述探测报文生成上报消息,发送所述上报消息给所述控制器;

所述处理器还用于若所述网络设备不是与所述目标VTEP的端点标识对应的目的网络设备,则复制所述探测报文生成上报消息;

所述发送器,用于发送所述上报消息给所述控制器,并转发所述探测报文直至所述目的网络设备;

其中,所述上报消息中包括所述探测报文,所述网络设备的IP地址,以及所述探测报文经过所述网络设备的出接口号和入接口号。

另一种可能的实现方式中,所述网络设备包括:

接收模块,用于接收探测报文,所述探测报文是由控制器根据用户输入的探测请求构造的,所述探测报文中包括:用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的源网络设备的IP地址;

判断模块,用于根据所述目的VTEP的端点标识,判断所述网络设备是否为与所述目标VTEP的端点标识对应的目的网络设备;

生成模块,用于若所述网络设备是与所述目标VTEP的端点标识对应的目的网络设备,则根据所述探测报文生成上报消息;

发送模块,用于发送所述上报消息给所述控制器;

所述生成模块还用于若所述网络设备不是与所述目标VTEP的端点标识对应的目的网络设备,则所述网络设备复制所述探测报文生成上报消息;

所述发送模块还用于发送所述上报消息给所述控制器,并转发所述探测报文直至所述目的网络设备;

其中,所述上报消息中包括所述探测报文,所述网络设备的IP地址,以及所述探测报文经过所述网络设备的出接口号和入接口号。

根据本发明实施例提供的一种网络路径探测方法,控制器和网络设备,控 制器通过根据探测请求构造探测报文,并通过网络设备逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到真实的业务路径。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种VxLAN中的路径探测方法的流程示意图;

图2本发明实施例提供的路径探测示意图;

图3为本发明实施例提供的一种VM间的路径探测方法的流程示意图;

图4为本发明实施例提供的探测报文的格式示意图;

图5为本发明实施例提供的一种VTEP间的路径探测方法的流程示意图;

图6为本发明实施例提供的另一种VxLAN中的路径探测方法的流程示意图;

图7为本发明实施例提供的一种控制器的结构示意图;

图8为本发明实施例提供的一种网络设备的结构示意图;

图9为本发明实施例提供的另一种控制器的结构示意图;

图10为本发明实施例提供的又一种控制器的结构示意图;

图11为本发明实施例提供的另一种网络设备的结构示意图。

具体实施方式

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

在VxLAN组网架构下,将VM发出的数据包封装在UDP中,并使用物理 网络的IP/MAC作为outer-header进行封装,然后在物理IP网上传输,到达目的地后由VTEP解封装并将数据发送给目标虚拟机。一个VTEP下可挂接多个VMs。本发明实施例中,控制器可对两个VMs之间的单个网络路径进行探测,也可以对两个VTEPs之间的所有网络路径进行探测,即控制器根据探测请求构造探测报文,通过开放的流转发协议下发接口(Packet-Out)将探测报文发送至源VTEP对应的网络设备,网络设备将探测报文进行复制并转发给下一级网络设备,每一级网络设备进行探测报文的复制、转发,并通过开放的流转发协议上送接口发送上报消息至控制器,上报探测报文、网络设备的IP地址、探测报文出、入接口号,控制器根据记录的每一级网络设备的出、入接口号,获得探测到的网络路径,从而可以保证探测的仿真路径和实际业务路径一致。

本发明实施例基于Openflow网络。OpenFlow网络由OpenFlow交换机、网络虚拟化层FlowVisor和控制器Controller三部分组成。OpenFlow交换机是整个OpenFlow网络的核心部件,实现了数据层和控制层的分离,主要管理数据层的转发。OpenFlow交换机接收到数据包后,首先在本地的流表上查找目标转发端口,如果没有匹配,则把数据包转发给Controller,由控制层决定转发端口。类比计算机的虚拟化,FlowVisor就是位于硬件结构元件和软件之间的网络虚拟层;FlowVisor允许多个控制器同时控制一台OpenFlow交换机,但是每个控制器仅仅可以控制经过这个OpenFlow交换机的某一个虚拟网络。Controller实现控制层的功能;通过OpenFlow协议对OpenFlow交换机中的流表进行控制,从而实现对整个网络进行集中控制。

图1为本发明实施例提供的一种VxLAN中的路径探测方法的流程示意图,该方法包括以下步骤:

S101、控制器根据用户输入的探测请求,构造探测报文。

控制器独立于VM、VTEP、网络设备。例如如图2所示的路径探测,该控制器可以为敏捷网络控制器(Agile Controller,简称AC)。控制器可以是一个集群,可以由这个集群里的任意一个控制器处理数据的发送和接收。该控制器具有人 机界面,可以获取用户输入的探测请求,该探测请求可以是通过用户在人机界面上指定抓取需要进行网络路径探测的报文,或者通过输入源VTEP、目的VTEP发起。由于一个VTEP下可以挂载一个或多个VM,因此,本申请中的路径探测可以是两个VM间的探测,即单路径探测;也可以是两个VTEPs间的探测,即多路径雷达探测,即,探测两个VTEPs下所有VMs间的所有可能的路径。

控制器进行网络路径探测时,需要构造探测报文,将探测报文发送到网络设备,以探测该探测报文与实际报文所经过的路径是否一致。该探测报文中包括:用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型、以及与源VTEP对应的第一网络设备的IP地址。这里,路径探测类型即包括:VM间的路径探测和VTEP间的路径探测。

S102、所述控制器将所述探测报文发送至所述第一网络设备,以使所述第一网络设备复制所述探测报文,生成第一上报消息,发送所述第一上报消息给所述控制器,并根据所述源端口值转发所述探测报文直至所述目的VTEP的端点标识对应的第二网络设备。

所述第一上报消息中包括所述探测报文,所述第一网络设备的IP地址以及所述第一网络设备的出接口号和入接口号。

本发明实施例基于Openflow网络下发报文和上送报文,具体地,通过Openflow下发接口Packet-Out和Openflow上送接口Packet-In进行。控制器将构造的探测报文通过Packet-Out接口发给源VTEP对应的第一网络设备,网络设备之间是根据计算出的源端口值自动进行报文的转发。这里的网络设备是指支持VxLAN的二层设备或三层设备,可以是交换机或路由器。

本发明实施例网络设备在进行报文的转发时,还需进行探测报文的复制,这是因为本发明实施例网络设备不仅要进行探测报文的转发,还需将探测报文封装在上报消息中发送给控制器。第一网络设备复制探测报文,生成第一上报消息,发送第一上报消息至控制器,并根据源端口值转发探测报文至所述第一网络设备的下一级网络设备。每一级网络设备重复进行复制探测报文、上报第一上报消息、转发探测报文的步骤,直至目的VTEP的端点标识对应的第二网 络设备接收到所述探测报文,该第二网络设备只发送第二上报消息给控制器,无需再复制、转发探测报文。

需要说明的是,这里“第一上报消息”和“第二上报消息”所包含的消息内容都是:探测报文,发送该上报消息的网络设备的IP地址,以及接收和转发探测报文分别经过的该网络设备的出接口号和入接口号。只是不过为了区分是否由目的VTEP的端点标识对应的网络设备发送该上报消息,而定义“第一上报消息”和“第二上报消息”。

S103、所述控制器接收每一级网络设备发送的上报消息,其中包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息。

网络设备之间是根据计算出的源端口值自动进行报文的转发的,因此,现有技术中是不知道网络设备之间是通过哪条路径进行报文的转发的,本发明实施例则是要解决这个问题,即探测报文经过每一级网络设备,每一级网络设备都通过Packet-In接口发送上报消息给控制器。

控制器可接收到每一级网络设备发送的第一上报消息,以及目的VTEP的端点标识对应的第二网络设备发送的第二上报消息,因此,该上报消息包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息。需要说明的是,一个网络设备具有多个接口号,这里需要明确探测报文是具体从哪个网络设备的哪个接口接入和发出。

S104、所述控制器根据每一级网络设备发送的上报消息中的IP地址,出接口号和入接口号,获得所述第一网络设备到所述第二网络设备之间的网络路径。

控制器接收到每一级网络设备的IP地址,出接口号和入接口号后,可以根据该接口号,获得探测到的网络路径,即构造的探测报文依次经过哪些网络设备。

如图2所示,AC控制器集群通过OpenFlow架构将探测报文发送至源VTEP对应的节点X,节点X将探测报文进行复制,生成上报消息,将探测报文转发至节点A,并向AC控制器集群发送上报消息;然后节点A、C、Y重复执行复制探测报文、转发探测报文和发送上报消息的步骤,这样,当探测报文转发完 毕后,AC控制器集群根据收到的上报消息可以获知探测报文经过的路径,例如X-A-C-Y,这里的节点为网络设备。

根据本发明实施例提供的一种VxLAN中的路径探测方法,控制器通过根据探测请求构造探测报文,并通过网络设备逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到真实的业务路径。

图3为本发明实施例提供的一种VM间的路径探测方法的流程示意图,该方法包括以下步骤:

S201、控制器根据用户输入的探测请求中的源虚拟机的IP地址,目的虚拟机的IP地址和协议类型标识,抓取目标报文。

本实施例涉及VM间的网络路径探测。用户可以通过输入待探测报文的源虚拟机的IP地址,目的虚拟机的IP地址,以及协议类型标识,指示控制器对目标报文进行抓包。报文的源VM和目的VM分别为源VTEP和目的VTEP下挂载的一个VM。

S202、所述控制器获取所述目标报文的源虚拟机的端口号和目的虚拟机的端口号,得到所述目标报文的五元组信息。

控制器抓取了该报文后,可以获得该报文的源虚拟机的端口号和目的虚拟机的端口号,从而获得该目标报文的五元组信息,所述五元组信息包括所述源虚拟机的IP地址,所述目的虚拟机的IP地址,所述协议类型标识,所述源虚拟机的端口号和所述目的虚拟机的端口号。控制器获得该报文的五元组信息,即触发该报文的探测。

S203、所述控制器根据所述五元组信息,确定源端口值。

控制器可以根据五元组数据来哈希计算出一个源端口值,将该值填写到探测报文中,然后再转发,进行路径探测,后续在每一跳抵达的网络设备上,会根据该源端口值来选路,一条网络路径的源端口值只有唯一一个。对于单路径探测来说,则根据一个五元组数据只能计算出一个源端口值。

S204、所述控制器根据所述源虚拟机的IP地址确定源VTEP的端点标识, 根据所述目的虚拟机的IP地址,确定目的VTEP的端点标识。

由于每个VM都是用户通过控制器挂载到某个VTEP下的,因此,控制器存储了VTEP与其挂载的VM之间的对应关系,因此,控制器根据源VM的IP地址和目的VM的IP地址,可以分别确定其对应的源VTEP的端点标识和目的VTEP的端点标识。该源、目的VTEP用于确定探测报文的首、尾网络设备。

S205、所述控制器获取所述源VTEP的端点标识对应的第一网络设备的IP地址。

控制器也预先存储了VTEP与连接的网络设备的对应关系,因此,根据源VTEP的端点标识,也能获取第一网络设备的IP地址。

S206、所述控制器根据所述探测请求,确定所述路径探测类型为虚拟机间路径探测。

该探测请求包括用户抓取的报文的五元组信息,从而可以确定该路径探测是对该报文进行仿真探测,即单个报文或单条路径的探测,也称为虚拟机间路径探测。

S207、所述控制器将用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的第一网络设备的IP地址进行封装,构造探测报文。

控制器获取了以上信息后,可以构造探测报文,即将以上信息进行封装,通过Openflow网络进行传输。VM之间的路经探测是为了诊断指定业务流的路径。

在本实施例中,采用VxLAN格式对探测报文进行封装,其格式如图4所示,包括外层MAC头(Outer MAC Header)、IP头(IP Header)、UDP头(UDP Header)和VxLAN头(VxLAN Header)字段,其余字段为报文内容。其中,用VxLAN头中保留字段中的一位,例如,保留字段的最后一位,作为指示路径探测业务的标识;报文内容(二层帧)中包括伪头(Pseudo-Header)和操作管理运维(Operation Administration and Maintenance,简称OAM)头(OAM PDU)。伪头(Pseudo-Header)用于保证流量走转发管道选路结果,伪头后面便是OAM头,包括标识(OAM FLAG)、OAM类型(OAM TYPE)、预留字段和可扩展类型长度值(Type-length-value,简称TLV)。所述OAM标志(FLAG)用于标识是OAM头,为32比特,取值为0xFFFFFFFF。所述OAM类型(TYPE)用于标识路径探测类型,为1字节,本发明实施例中用0x1表示VTEP间全路径探测,0x2表示VM间单路径探测,其他预留。所述可扩展TLV用于携带第一网络设备的IP地址,入接口号和出接口号等。当然,可扩展TLV中还可以包括其它字段,例如,探测实例标识。所述探测实例标识用于标识不同的网络路径探测。

S208、所述控制器将所述探测报文发送至所述第一网络设备,以使所述第一网络设备复制所述探测报文,生成第一上报消息,发送所述第一上报消息给所述控制器,并根据所述源端口值转发所述探测报文直至所述目的VTEP的端点标识对应的第二网络设备。

网络设备之间是根据计算出的源端口值自动进行报文的转发的,因此,现有技术中是不知道网络设备之间是通过哪条路径进行报文的转发的,本发明实施例则是要解决这个问题,即探测报文经过每一级网络设备,每一级网络设备都通过Packet-In接口发送上报消息给控制器。

第一网络设备复制探测报文,生成第一上报消息,发送第一上报消息至控制器,并根据源端口值转发探测报文至所述第一网络设备的下一级网络设备。每一级网络设备重复进行复制探测报文、上报第一上报消息、转发探测报文的步骤,直至目的VTEP的端点标识对应的第二网络设备接收到所述探测报文,该第二网络设备只发送第二上报消息给控制器,无需再复制、转发探测报文。

S209、所述控制器接收每一级网络设备发送的上报消息,其中包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息。

控制器可接收到每一级网络设备发送的第一上报消息,以及目的VTEP的端点标识对应的第二网络设备发送的第二上报消息,因此,该上报消息包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息。该上报消息包括复制的探测报文,发送该上报消息的网络设备的IP地址,接收探测报文的网络设备的入接口号,以及转发探测报文和/或发送上报消息的网络设备中的出接 口号。需要说明的是,一个网络设备具有多个接口号,这里需要明确探测报文是具体从哪个网络设备的哪个接口接入和发出。

对于本实施例的单路径探测来说,由于仅计算出一个源端口值,因此,当控制器接收到目的VTEP的端点标识对应的第二网络设备发送的上报消息,可以确定该路径已经探测完毕。

对于路径探测是否完毕,还可以通过设定路径探测的时间,如果达到设定时间,则可认为路径探测完毕;还可以根据接收到目的VTEP对应的第二网络设备发送的上报消息以及该路径探测的跳数确定,如果接收到目的VTEP对应的第二网络设备发送的上报消息,且跳数连续,则可认为路径探测完毕,否则,即便接收到目的VTEP对应的网络设备发送的上报消息,但跳数不连续或不完整,则可认为路径探测没有结束或失败。

S210、所述控制器根据探测实例标识,分别记录接收到的每一个所述网络路径的IP地址,出接口号和入接口号。

由于控制器可同时进行多个网络路径的探测,因此具有多个探测实例,对于每个网络路径探测,需要设置一个探测实例标识,该探测实例标识包含在Extendable TLV字段中,所述探测实例标识用于标识不同的报文的网络路径探测。控制器根据接收到的探测报文中包含的探测实例标识,分别记录接收到的每一级网络设备的出接口号和入接口号。

S211、所述控制器针对每一个探测实例标识对应的路径探测,根据每一级网络设备发送的上报消息,从IP地址相同且跳数相同的多个上报消息中筛选出一组出接口号和入接口号。

网络设备在上报消息时,可能会重复上报,因此,需要对接收到相同网络设备且跳数相同的出接口和入接口进行筛选,仅保留一组所述IP地址对应的网络设备的出接口号和入接口号。每一级网络设备发送的上报消息中的跳数,按照从所述源VTEP的端点标识对应的所述第一网络设备到所述目的VTEP的端点标识对应的所述第二网络设备的顺序递减。

S212、所述控制器根据每一级网络设备发送的上报消息中的跳数,对筛选 后的所有IP地址,出接口号和入接口号组进行排序。

上报消息还可包括跳数,例如,存活时间(Time To Live,简称TTL),报文转发时,每经过一个网络设备,跳数就减一。因此,可根据跳数,对接收到的经筛选后的每一级网络设备的出接口号和入接口号进行排序。

S213、所述控制器根据筛选、排序后的每组IP地址、出接口号和入接口号,获得所述网络路径。

进行筛选、排序后,得到的网络路径,是一个具有清晰的、唯一的拓扑关系的网络路径。

根据网络设备的IP地址和跳数对上报的网络设备的出接口号和入接口号进行筛选,可以避免网络路径中存在重复的网络设备的出接口号和入接口号,并根据跳数对每一级网络设备的出接口号和入接口号进行排序,可以准确的得到探测报文经过的每一级网络设备的先后关系,还原真实的网络路径。

S214、所述控制器输出所述网络路径。

由于探测器具有人机界面或用户界面,因此,还可将探测到的网络路径输出至用户界面,可以让用户直观地了解探测报文经过的每一级网络设备。

S215、所述控制器根据所述网络路径,获得所述网络路径的状态。

根据获得的探测到的网络路径,还可获得网络路径的状态。该网络路径的状态包括:通路、断路、和环路。通路是指该网络路径是通畅的,是正常的网络路径,断路是指控制器不能接收到某些跳数的网络设备上报的消息,环路是指处于环路状态的网络路径的跳数比正常网络路径经过的跳数多。了解了网络路径的状态,能够及时发现断路、环路网络故障。直接得到网络路径的状态,可以给用户一个直接的网络路径状态的结论,而无需用户查看探测报文经过的每一级网络设备之间的通断或环路。

根据本发明实施例提供的一种VxLAN中的路径探测方法,控制器根据用户输入的探测请求,抓取报文,获得报文的五元组信息,根据五元组信息构造与真实业务一致的探测报文,模拟真实业务逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到源虚拟机和目的虚拟机之间真实的业 务路径,以便确认网络路径的状态;在控制器的用户界面输出探测到的网络路径,可以让用户直观地了解探测报文经过的每一级网络设备;直接得到网络路径的状态,可以给用户一个直接的网络路径状态的结论,而无需用户查看探测报文经过的每一级网络设备之间的通断或环路。

图5为本发明实施例提供的一种VTEP间的路径探测方法的流程示意图,该方法包括以下步骤:

S301、控制器设置源端口值,所述源端口值根据所述源VTEP和所述目的VTEP之间的预期路径个数和设定余量个数之和递增。

本实施例涉及VTEP间的路径探测,即多路径雷达探测,需要探测两个VTEP间的所有可能存在的路径,多路径是为了检测两个VTEP间的路径个数是否符合预期,是一种尝试性探测。用户可以直接输入需要探测的源VTEP的端点标识和目的VTEP的端点标识。

本实施例与VM间的路径探测不同的是,对于VTEP间的探测,由于用户没有传递五元组数据,所以需要控制器设置一个源端口值,每发出一个探测报文,该源端口值递增,因此,设置的该源端口值也称为源端口初始值,其取值范围为4096~65535,递增后的源端口值作为每一个探测报文的源端口值,直至构造出包含源端口最大值的探测报文。由于多路径探测的时候,是根据用户已知的路径个数来输入的探测报文个数的,个数要大于已知路径个数才能够覆盖探测的,因此源端口值的递增的次数根据所述源VTEP和所述目的VTEP之间的预期的路径个数和设定余量个数确定,例如预期的路径个数为200个,可设置递增次数为220次。由于多路径探测本身是一种尝试性探测,可进行多次探测,例如预期有100个路径,第一次指定110个包探测,第二次指定120个包探测,得到的路径最大值就是存在的最大路径个数。进行路径探测时设置的大于所述预期路径个数的个数,所述设定余量个数为正整数。

S302、所述控制器根据用户输入的源VTEP的端点标识和目的VTEP的端点标识,确定所述探测报文的探测类型为VTEP间路径探测。

控制器根据用户输入的源、目的VTEP,构造探测报文,探测报文的探测类型为VTEP间路径探测,其它内容与VM间的路径探测的探测报文相同,在此不再赘述。

S303、所述控制器将用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的第一网络设备的IP地址进行封装,构造探测报文。

控制器获取了以上信息后,可以构造探测报文,即将以上信息进行封装,通过Openflow网络进行传输。在本实施例中,采用VxLAN格式对探测报文进行封装,其封装格式如图4所示。

S304、所述控制器将所述探测报文发送至所述第一网络设备,以使所述第一网络设备复制所述探测报文,生成第一上报消息,发送所述第一上报消息给所述控制器,并根据所述源端口值转发所述探测报文直至所述目的VTEP的端点标识对应的第二网络设备。

S305、所述控制器接收每一级网络设备发送的上报消息,其中包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息。

对于VTEP间的路径探测,包括多个源端口值,控制器直至探测到目的VTEP的端点标识对应的网络设备上报的上报消息,且上报消息中包含源端口最大值的的网络路径,则探测完毕。

S306、所述控制器根据探测实例标识,分别记录接收到的所述每一级网络设备的出接口号和入接口号。

S307、所述控制器针对每一个探测实例标识对应的路径探测,根据每一级网络设备发送的上报消息,从IP地址相同且跳数相同的多个上报消息中筛选出一组出接口号和入接口号。

每一级网络设备发送的上报消息中的跳数,按照从所述源VTEP的端点标识对应的所述第一网络设备到所述目的VTEP的端点标识对应的所述第二网络设备的顺序递减。

S308、所述控制器根据每一级网络设备发送的上报消息中的跳数,对筛选 后的所有IP地址,出接口号和入接口号组进行排序。

其中,每转发至下一级网络设备,所述跳数递减。

S309、所述控制器根据筛选、排序后的每组IP地址、出接口号和入接口号,获得所述网络路径。

S310、所述控制器输出所述网络路径。

S311、所述控制器根据所述网络路径,获得所述网络路径的状态。

关于网络设备的出接口号和入接口号的记录,网络设备的出接口号和入接口号的筛选、排序,网络路径的获取,输出网络路径,以及获得网络路径的状态,与前述实施例相同,在此不再赘述。

根据本发明实施例提供的一种网络路径探测方法,控制器根据用户输入的源VTEP的端点标识和目的VTEP的端点标识构造探测报文,并通过网络设备逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到该源VTEP和目的VTEP之间多条真实的业务路径;在控制器的用户界面输出探测到的网络路径,可以让用户直观地了解探测报文经过的每一级网络设备;直接得到网络路径的状态,可以给用户一个直接的网络路径状态的结论,而无需用户查看探测报文经过的每一级网络设备之间的通断或环路。

图6为本发明实施例提供的另一种VxLAN中的路径探测方法的流程示意图,该方法包括以下步骤:

S401、网络设备接收探测报文。

对于任一级网络设备,接收探测报文,该任一级网络设备可以是源VTEP的端点标识对应的网络设备,也可以是中间的网络设备,也可以是目的VTEP的端点标识对应的网络设备。如果是源VTEP的端点标识对应的网络设备,则是从控制器接收到探测报文,如果是其它任意一级的网络设备,则是从其上一级网络设备接收到探测报文。这里的网络设备是指支持VxLAN的二层设备或三层设备,可以是交换机或路由器。

该探测报文是由控制器根据探测请求,仿真实际报文构造得到的。该探测 报文中包括:用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及源VTEP的端点标识对应的网络设备的IP地址。路径探测类型包括:VM间的路径探测和VTEP间的路径探测,VM间的路径探测也称单路径探测,VTEP间的路径探测也称多路径雷达探测。

在本实施例中,采用VxLAN格式对探测报文进行封装,其格式如图4所示,具体可参考步骤S206中所述。

基于Openflow网络下发报文和上送报文,具体地,通过Openflow下发接口Packet-Out和Openflow上送接口Packet-In进行。

可选地,该方法还可以包括:

根据用于指示路径探测业务的标识,识别接收到的所述探测报文;

根据预置的或所述控制器发送的访问控制列表ACL或流表中存储的所述探测报文与执行动作的对应关系,获取与所述探测报文对应的执行动作;

其中,所述执行动作包括复制和/或转发所述探测报文,向所述控制器发送所述上报消息。

网络设备一旦识别出接收到的是探测报文,根据访问控制列表或流表中存储的探测报文与执行动作的对应关系,可以获知接收到该探测报文之后的执行动作,直接执行该执行动作即可,简化了处理过程。

S402、所述网络设备根据目的VTEP的端点标识,判断所述网络设备是否为与所述目标VTEP的端点标识对应的目的网络设备,若判断的结果为是,则进行到S403;否则,进行到S404。

S403、若所述网络设备是与所述目标VTEP的端点标识对应的目的网络设备,则所述网络设备根据所述探测报文生成上报消息,发送所述上报消息给所述控制器。

由于本实施例的网络设备可以是任一级网络设备,由于目标VTEP的端点标识对应的网络设备与其它任一级的网络设备的操作步骤不同,目标VTEP的端点标识对应的网络设备只需发送上报消息给控制器,而无需复制和转发探测报文,因此,这里需要判断网络设备是否为与目标VTEP的端点标识对应的网 络设备。

S404、若所述网络设备不是与所述目标VTEP的端点标识对应的目的网络设备,则所述网络设备复制所述探测报文生成上报消息,发送所述上报消息给所述控制器,并转发所述探测报文直至所述目的网络设备。

网络设备之间是根据计算出的源端口值自动进行报文的转发。然而,本发明实施例网络设备在进行报文的转发时,还需进行探测报文的复制,这是因为本发明实施例网络设备不仅要进行探测报文的转发,还需将探测报文封装在上报消息中发送给控制器。

现有技术中是不知道网络设备之间是通过哪条路径进行报文的转发的,本发明实施例则是要解决这个问题,即探测报文经过每一级网络设备,每一级网络设备都通过Packet-In接口发送上报消息给控制器。上报消息中包括复制的探测报文,发送该上报消息的网络设备的IP地址,接收探测报文的网络设备的入接口号,以及转发探测报文和/或发送上报消息的网络设备中的出接口号。

需要说明的是,一个网络设备具有多个接口号,这里需要明确探测报文是具体从哪个网络设备的哪个接口发出和接入。

控制器接收到每一级网络设备的出接口号和入接口号后,可以根据该接口号,获得探测到的网络路径,即仿真的探测报文依次经过哪些网络设备。

根据本发明实施例提供的一种VxLAN中的路径探测方法,网络设备逐级转发控制器通过根据探测请求构造的探测报文,逐级向控制器上报IP地址、经过的出接口号和入接口号,从而控制器可以探测到真实的业务路径。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为根据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

如图7所示,本发明实施例提供一种控制器1000,用于实现上述VxLAN中的路径探测的功能,如图7所示,控制器1000包括处理器11,发送器12和接收器13,其中,所述处理器11,发送器12和接收器13之间通过总线14相互连接。

所述处理器11,用于根据用户输入的探测请求,构造探测报文,所述探测报文中包括:用于指示路径探测业务的标识,源虚拟可扩展局域网隧道端点VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的第一网络设备的互联网络协议IP地址;

所述发送器12,用于将所述探测报文发送至所述第一网络设备,以使所述第一网络设备复制所述探测报文,生成第一上报消息,发送所述第一上报消息给所述控制器,并根据所述源端口值转发所述探测报文直至所述目的VTEP的端点标识对应的第二网络设备;所述第一上报消息中包括所述探测报文,所述第一网络设备的IP地址以及所述第一网络设备的出接口号和入接口号;

所述接收器13,用于接收每一级网络设备发送的上报消息,其中包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息;

所述处理器11还用于根据每一级网络设备发送的上报消息中的IP地址,出接口号和入接口号,获得所述第一网络设备到所述第二网络设备之间的网络路径。

需要说明的是,该发送器12和接收器13可以是单独的器件或元件,也可以是合为一体的收发器。

所述处理器11可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件等。

所述处理器11为CPU时,所述控制器1000还可以包括:存储器,用于存储程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可能包含随机存取存储器(random access memory,RAM),也可能还 包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。所述处理器11执行所述存储器中存储的程序代码,实现上述功能。

可选地,所述探测请求中包括源虚拟机的IP地址,目的虚拟机的IP地址和协议类型标识;

所述处理器11具体用于根据所述探测请求中的所述源虚拟机的IP地址,所述目的虚拟机的IP地址和所述协议类型标识,抓取目标报文;

所述处理器11还具体用于获取所述目标报文的源虚拟机的端口号和目的虚拟机的端口号,得到五元组信息,所述五元组信息包括所述源虚拟机的IP地址,所述目的虚拟机的IP地址,所述协议类型标识,所述源虚拟机的端口号和所述目的虚拟机的端口号;

所述处理器11还具体用于根据所述五元组信息,确定所述源端口值;

所述处理器11还具体用于根据所述源虚拟机的IP地址确定所述源VTEP,根据所述目的虚拟机的IP地址,确定所述目的VTEP;

所述处理器11还具体用于获取所述源VTEP的端点标识对应的所述第一网络设备的IP地址;

所述处理器11还具体用于根据所述探测请求,确定所述路径探测类型为虚拟机间路径探测。

可选地,所述探测请求中包括所述源VTEP的端点标识和所述目的VTEP的端点标识;

所述处理器11具体用于设置所述源端口值,所述源端口值根据所述源VTEP和所述目的VTEP之间的预期路径个数和设定余量个数之和递增;所述预期路径个数为用户已知的路径个数,所述设定余量个数为进行路径探测时设置的大于所述预期路径个数的个数,所述设定余量个数为正整数;

所述处理器11还具体用于根据所述探测请求,确定所述路径探测类型为VTEP间路径探测。

可选地,所述上报消息中还包括跳数;

所述处理器11具体用于根据每一级网络设备发送的上报消息,从IP地址相 同且跳数相同的多个上报消息中筛选出一组出接口号和入接口号;其中,每一级网络设备发送的上报消息中的跳数,按照从所述源VTEP的端点标识对应的所述第一网络设备到所述目的VTEP的端点标识对应的所述第二网络设备的顺序递减;

所述处理器11还具体用于根据每一级网络设备发送的上报消息中的跳数,对筛选后的所有IP地址,出接口号和入接口号组进行排序;

所述处理器11还具体用于根据筛选、排序后的每组IP地址、出接口号和入接口号,获得所述网络路径。

可选地,所述探测报文还包括探测实例标识,所述探测实例标识用于标识不同的路径探测;

所述处理器11具体用于根据根据所述探测实例标识,分别记录接收到的每一个网络路径的IP地址,出接口号和入接口号。

可选地,所述处理器11还具体用于根据探测到的网络路径,获得所述网络路径的状态,所述网络路径的状态包括:通路、断路、和环路。

根据本发明实施例提供的一种控制器,控制器通过根据探测请求构造探测报文,并通过网络设备逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到真实的业务路径。

如图8所示,本发明实施例提供一种网络设备2000,用于实现上述VxLAN中的路径探测的功能,如图8所示,网络设备2000包括接收器21,处理器22和发送器23,其中,所述接收器21,处理器22和发送器23之间通过总线24相互连接。

所述接收器21,用于接收探测报文,所述探测报文是由控制器根据用户输入的探测请求构造的,所述探测报文中包括:用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的源网络设备的IP地址;

所述处理器22,用于根据所述目的VTEP的端点标识,判断所述网络设备 是否为与所述目标VTEP的端点标识对应的目的网络设备;

所述处理器22还用于若所述网络设备是与所述目标VTEP的端点标识对应的目的网络设备,则根据所述探测报文生成上报消息,发送所述上报消息给所述控制器;

所述处理器22还用于若所述网络设备不是与所述目标VTEP的端点标识对应的目的网络设备,则复制所述探测报文生成上报消息;

所述发送器23,用于发送所述上报消息给所述控制器,并转发所述探测报文直至所述目的网络设备;

其中,所述上报消息中包括所述探测报文,所述网络设备的IP地址,以及所述探测报文经过所述网络设备的出接口号和入接口号。

所述处理器22可以是通用处理器,包括CPU、网络处理器(NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件等。

所述处理器22为CPU时,所述网络设备2000还可以包括:存储器,用于存储程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可能包含随机存取存储器,也可能还包括非易失性存储器,例如至少一个磁盘存储器。所述处理器22执行所述存储器中存储的程序代码,实现上述功能。

可选地,所述处理器22还用于根据所述用于指示路径探测业务的标识,识别接收到的所述探测报文

所述处理器22还用于根据预置的或所述控制器发送的访问控制列表ACL或流表中存储的所述探测报文与执行动作的对应关系,获取与所述探测报文对应的执行动作;

其中,所述执行动作包括复制和/或转发所述探测报文,向所述控制器发送所述上报消息。

根据本发明实施例提供的一种网络设备,网络设备逐级转发控制器通过根据探测请求构造的探测报文,逐级向控制器上报IP地址、经过的出接口号和入 接口号,从而控制器可以探测到真实的业务路径。

图9为本发明实施例提供的一种控制器的结构示意图,该控制器3000包括:依次连接的构造模块31,发送模块32,接收模块33和获取模块34;其中,

构造模块31,用于根据用户输入的探测请求,构造探测报文。

控制器独立于VM、VTEP、网络设备。例如如图2所示的路径探测,该控制器可以为敏捷网络控制器(Agile Controller,简称AC)。控制器可以是一个集群,可以由这个集群里的任意一个控制器处理数据的发送和接收。该控制器具有人机界面,可以获取用户输入的探测请求,该探测请求可以是通过用户在人机界面上指定抓取需要进行网络路径探测的报文,或者通过输入源VTEP、目的VTEP发起。由于一个VTEP下可以挂载一个或多个VM,因此,本申请中的路径探测可以是两个VM间的探测,即单路径探测;也可以是两个VTEPs间的探测,即多路径雷达探测,即,探测两个VTEPs下所有VMs间的所有可能的路径。

控制器进行网络路径探测时,需要构造探测报文,将探测报文发送到网络设备,以探测该探测报文与实际报文所经过的路径是否一致。该探测报文中包括:用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型、以及与源VTEP对应的第一网络设备的IP地址。这里,路径探测类型即包括:VM间的路径探测和VTEP间的路径探测。

发送模块32,用于将所述探测报文发送至所述第一网络设备,以使所述第一网络设备复制所述探测报文,生成第一上报消息,发送所述第一上报消息给所述控制器,并根据所述源端口值转发所述探测报文直至所述目的VTEP的端点标识对应的第二网络设备。

所述第一上报消息中包括所述探测报文,所述第一网络设备的IP地址以及所述第一网络设备的出接口号和入接口号。

本发明实施例基于Openflow网络下发报文和上送报文,具体地,通过Openflow下发接口Packet-Out和Openflow上送接口Packet-In进行。控制器将构造的探测报文通过Packet-Out接口发给源VTEP对应的第一网络设备,网络 设备之间是根据计算出的源端口值自动进行报文的转发。这里的网络设备是指支持VxLAN的二层设备或三层设备,可以是交换机或路由器。

本发明实施例网络设备在进行报文的转发时,还需进行探测报文的复制,这是因为本发明实施例网络设备不仅要进行探测报文的转发,还需将探测报文封装在上报消息中发送给控制器。第一网络设备复制探测报文,生成第一上报消息,发送第一上报消息至控制器,并根据源端口值转发探测报文至所述第一网络设备的下一级网络设备。每一级网络设备重复进行复制探测报文、上报第一上报消息、转发探测报文的步骤,直至目的VTEP的端点标识对应的第二网络设备接收到所述探测报文,该第二网络设备只发送第二上报消息给控制器,无需再复制、转发探测报文。

需要说明的是,这里“第一上报消息”和“第二上报消息”所包含的消息内容都是:探测报文,发送该上报消息的网络设备的IP地址,以及接收和转发探测报文分别经过的该网络设备的出接口号和入接口号。只是不过为了区分是否由目的VTEP的端点标识对应的网络设备发送该上报消息,而定义“第一上报消息”和“第二上报消息”。

接收模块33,用于接收每一级网络设备发送的上报消息,其中包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息。

网络设备之间是根据计算出的源端口值自动进行报文的转发的,因此,现有技术中是不知道网络设备之间是通过哪条路径进行报文的转发的,本发明实施例则是要解决这个问题,即探测报文经过每一级网络设备,每一级网络设备都通过Packet-In接口发送上报消息给控制器。

控制器可接收到每一级网络设备发送的第一上报消息,以及目的VTEP的端点标识对应的第二网络设备发送的第二上报消息,因此,该上报消息包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息。需要说明的是,一个网络设备具有多个接口号,这里需要明确探测报文是具体从哪个网络设备的哪个接口接入和发出。

获取模块34,用于根据每一级网络设备发送的上报消息中的IP地址,出接 口号和入接口号,获得所述第一网络设备到所述第二网络设备之间的网络路径。

控制器接收到每一级网络设备的IP地址,出接口号和入接口号后,可以根据该接口号,获得探测到的网络路径,即构造的探测报文依次经过哪些网络设备。

如图2所示,AC控制器集群通过OpenFlow架构将探测报文发送至源VTEP对应的节点X,节点X将探测报文进行复制,生成上报消息,将探测报文转发至节点A,并向AC控制器集群发送上报消息;然后节点A、C、Y重复执行复制探测报文、转发探测报文和发送上报消息的步骤,这样,当探测报文转发完毕后,AC控制器集群根据收到的上报消息可以获知探测报文经过的路径,例如X-A-C-Y,这里的节点为网络设备。

根据本发明实施例提供的一种控制器,控制器通过根据探测请求构造探测报文,并通过网络设备逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到真实的业务路径。

图10为本发明实施例提供的又一种控制器的结构示意图,该控制器4000包括依次连接的构造模块41,发送模块42,接收模块43,获取模块44和输出模块45。

构造模块41,用于根据用户输入的探测请求中的源虚拟机的IP地址,目的虚拟机的IP地址和协议类型标识,抓取目标报文。

本实施例涉及VM间的网络路径探测。用户可以通过输入待探测报文的源虚拟机的IP地址,目的虚拟机的IP地址,以及协议类型标识,指示控制器对目标报文进行抓包。报文的源VM和目的VM分别为源VTEP和目的VTEP下挂载的一个VM。

所述构造模块41还用于获取所述目标报文的源虚拟机的端口号和目的虚拟机的端口号,得到所述目标报文的五元组信息。

控制器抓取了该报文后,可以获得该报文的源虚拟机的端口号和目的虚拟机的端口号,从而获得该目标报文的五元组信息,所述五元组信息包括所述源 虚拟机的IP地址,所述目的虚拟机的IP地址,所述协议类型标识,所述源虚拟机的端口号和所述目的虚拟机的端口号。控制器获得该报文的五元组信息,即触发该报文的探测。

所述构造模块41还用于根据所述五元组信息,确定源端口值。

控制器可以根据五元组数据来哈希计算出一个源端口值,将该值填写到探测报文中,然后再转发,进行路径探测,后续在每一跳抵达的网络设备上,会根据该源端口值来选路,一条网络路径的源端口值只有唯一一个。对于单路径探测来说,则根据一个五元组数据只能计算出一个源端口值。

所述构造模块41还用于根据所述源虚拟机的IP地址确定源VTEP的端点标识,根据所述目的虚拟机的IP地址,确定目的VTEP的端点标识。

由于每个VM都是用户通过控制器挂载到某个VTEP下的,因此,控制器存储了VTEP与其挂载的VM之间的对应关系,因此,控制器根据源VM的IP地址和目的VM的IP地址,可以分别确定其对应的源VTEP的端点标识和目的VTEP的端点标识。该源、目的VTEP用于确定探测报文的首、尾网络设备。

所述构造模块41还用于获取所述源VTEP的端点标识对应的第一网络设备的IP地址。

控制器也预先存储了VTEP与连接的网络设备的对应关系,因此,根据源VTEP的端点标识,也能获取第一网络设备的IP地址。

所述构造模块41还用于根据所述探测请求,确定所述路径探测类型为虚拟机间路径探测。

该探测请求包括用户抓取的报文的五元组信息,从而可以确定该路径探测是对该报文进行仿真探测,即单个报文或单条路径的探测,也称为虚拟机间路径探测。

所述构造模块41还用于将用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及与所述源VTEP的端点标识对应的第一网络设备的IP地址进行封装,构造探测报文。

控制器获取了以上信息后,可以构造探测报文,即将以上信息进行封装, 通过Openflow网络进行传输。VM之间的路经探测是为了诊断指定业务流的路径。

在本实施例中,采用VxLAN格式对探测报文进行封装,其格式如图4所示,包括外层MAC头(Outer MAC Header)、IP头(IP Header)、UDP头(UDP Header)和VxLAN头(VxLAN Header)字段,其余字段为报文内容。其中,用VxLAN头中保留字段中的一位,例如,保留字段的最后一位,作为指示路径探测业务的标识;报文内容(二层帧)中包括伪头(Pseudo-Header)和操作管理运维(Operation Administration and Maintenance,简称OAM)头(OAM PDU)。伪头(Pseudo-Header)用于保证流量走转发管道选路结果,伪头后面便是OAM头,包括标识(OAM FLAG)、OAM类型(OAM TYPE)、预留字段和可扩展类型长度值(Type-length-value,简称TLV)。所述OAM标志(FLAG)用于标识是OAM头,为32比特,取值为0xFFFFFFFF。所述OAM类型(TYPE)用于标识路径探测类型,为1字节,本发明实施例中用0x1表示VTEP间全路径探测,0x2表示VM间单路径探测,其他预留。所述可扩展TLV用于携带第一网络设备的IP地址,入接口号和出接口号等。当然,可扩展TLV中还可以包括其它字段,例如,探测实例标识。所述探测实例标识用于标识不同的网络路径探测。

发送模块42,用于将所述探测报文发送至所述第一网络设备,以使所述第一网络设备复制所述探测报文,生成第一上报消息,发送所述第一上报消息给所述控制器,并根据所述源端口值转发所述探测报文直至所述目的VTEP的端点标识对应的第二网络设备。

网络设备之间是根据计算出的源端口值自动进行报文的转发的,因此,现有技术中是不知道网络设备之间是通过哪条路径进行报文的转发的,本发明实施例则是要解决这个问题,即探测报文经过每一级网络设备,每一级网络设备都通过Packet-In接口发送上报消息给控制器。

控制器根据是否接收到目的VTEP的端点标识对应的第二网络设备发送的上报消息且探测到设定个数的网络路径,判断路径探测是否完毕。其中,该网络路径的设定个数由源端口值确定

接收模块43,用于接收每一级网络设备发送的上报消息,其中包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息。

控制器可接收到每一级网络设备发送的第一上报消息,以及目的VTEP的端点标识对应的第二网络设备发送的第二上报消息,因此,该上报消息包括所述第一上报消息,以及所述第二网络设备发送的第二上报消息。该上报消息包括复制的探测报文,发送该上报消息的网络设备的IP地址,接收探测报文的网络设备的入接口号,以及转发探测报文和/或发送上报消息的网络设备中的出接口号。需要说明的是,一个网络设备具有多个接口号,这里需要明确探测报文是具体从哪个网络设备的哪个接口接入和发出。

对于本实施例的单路径探测来说,由于仅计算出一个源端口值,因此,当控制器接收到目的VTEP的端点标识对应的第二网络设备发送的上报消息,可以确定该路径已经探测完毕。

对于路径探测是否完毕,还可以通过设定路径探测的时间,如果达到设定时间,则可认为路径探测完毕;还可以根据接收到目的VTEP对应的第二网络设备发送的上报消息以及该路径探测的跳数确定,如果接收到目的VTEP对应的第二网络设备发送的上报消息,且跳数连续,则可认为路径探测完毕,否则,即便接收到目的VTEP对应的网络设备发送的上报消息,但跳数不连续或不完整,则可认为路径探测没有结束或失败。

获取模块44,用于根据探测实例标识,分别记录接收到的每一个所述网络路径的IP地址,出接口号和入接口号。

由于控制器可同时进行多个网络路径的探测,因此具有多个探测实例,对于每个网络路径探测,需要设置一个探测实例标识,该探测实例标识包含在Extendable TLV字段中,所述探测实例标识用于标识不同的报文的网络路径探测。控制器根据接收到的探测报文中包含的探测实例标识,分别记录接收到的每一级网络设备的出接口号和入接口号。

所述获取模块44还用于针对每一个探测实例标识对应的路径探测,根据每一级网络设备发送的上报消息,从IP地址相同且跳数相同的多个上报消息中筛 选出一组出接口号和入接口号。

网络设备在上报消息时,可能会重复上报,因此,需要对接收到相同网络设备且跳数相同的出接口和入接口进行筛选,仅保留一组所述IP地址对应的网络设备的出接口号和入接口号。每一级网络设备发送的上报消息中的跳数,按照从所述源VTEP的端点标识对应的所述第一网络设备到所述目的VTEP的端点标识对应的所述第二网络设备的顺序递减。

所述获取模块44还用于根据每一级网络设备发送的上报消息中的跳数,对筛选后的所有IP地址,出接口号和入接口号组进行排序。

上报消息还可包括跳数,例如,存活时间(Time To Live,简称TTL),报文转发时,每经过一个网络设备,跳数就减一。因此,可根据跳数,对接收到的经筛选后的每一级网络设备的出接口号和入接口号进行排序。

所述获取模块44还用于根据筛选、排序后的每组IP地址、出接口号和入接口号,获得所述网络路径。

进行筛选、排序后,得到的网络路径,是一个具有清晰的、唯一的拓扑关系的网络路径。

根据网络设备的IP地址和跳数对上报的网络设备的出接口号和入接口号进行筛选,可以避免网络路径中存在重复的网络设备的出接口号和入接口号,并根据跳数对每一级网络设备的出接口号和入接口号进行排序,可以准确的得到探测报文经过的每一级网络设备的先后关系,还原真实的网络路径。

输出模块45,用于输出所述网络路径。

由于探测器具有人机界面或用户界面,因此,还可将探测到的网络路径输出至用户界面,可以让用户直观地了解探测报文经过的每一级网络设备。

所述获取模块44还用于根据所述网络路径,获得所述网络路径的状态。

根据获得的探测到的网络路径,还可获得网络路径的状态。该网络路径的状态包括:通路、断路、和环路。通路是指该网络路径是通畅的,是正常的网络路径,断路是指控制器不能接收到某些跳数的网络设备上报的消息,环路是指处于环路状态的网络路径的跳数比正常网络路径经过的跳数多。了解了网络 路径的状态,能够及时发现断路、环路网络故障。直接得到网络路径的状态,可以给用户一个直接的网络路径状态的结论,而无需用户查看探测报文经过的每一级网络设备之间的通断或环路。

根据本发明实施例提供的一种控制器,控制器根据用户输入的探测请求,抓取报文,获得报文的五元组信息,根据五元组信息构造与真实业务一致的探测报文,模拟真实业务逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到源虚拟机和目的虚拟机之间真实的业务路径,以便确认网络路径的状态;在控制器的用户界面输出探测到的网络路径,可以让用户直观地了解探测报文经过的每一级网络设备;直接得到网络路径的状态,可以给用户一个直接的网络路径状态的结论,而无需用户查看探测报文经过的每一级网络设备之间的通断或环路。

请继续参阅图10,为图10所示的控制器的另一种实现方式,该控制器用于进行多路径探测。在本实现方式中,与前一个实现方式描述的单路径探测的区别在于:

构造模块41,用于设置源端口值,所述源端口值根据所述源VTEP和所述目的VTEP之间的预期路径个数和设定余量个数之和递增。

本实施例涉及VTEP间的路径探测,即多路径雷达探测,需要探测两个VTEP间的所有可能存在的路径,多路径是为了检测两个VTEP间的路径个数是否符合预期,是一种尝试性探测。用户可以直接输入需要探测的源VTEP的端点标识和目的VTEP的端点标识。

本实施例与VM间的路径探测不同的是,对于VTEP间的探测,由于用户没有传递五元组数据,所以需要控制器设置一个源端口值,每发出一个探测报文,该源端口值递增,因此,设置的该源端口值也称为源端口初始值,其取值范围为4096~65535,递增后的源端口值作为每一个探测报文的源端口值,直至构造出包含源端口最大值的探测报文。由于多路径探测的时候,是根据用户已知的路径个数来输入的探测报文个数的,个数要大于已知路径个数才能够覆盖 探测的,因此源端口值的递增的次数根据所述源VTEP和所述目的VTEP之间的预期的路径个数和设定余量个数确定,例如预期的路径个数为200个,可设置递增次数为220次。由于多路径探测本身是一种尝试性探测,可进行多次探测,例如预期有100个路径,第一次指定110个包探测,第二次指定120个包探测,得到的路径最大值就是存在的最大路径个数。进行路径探测时设置的大于所述预期路径个数的个数,所述设定余量个数为正整数。

构造模块41还用于根据用户输入的源VTEP的端点标识和目的VTEP的端点标识,确定所述探测报文的探测类型为VTEP间路径探测。

控制器根据用户输入的源、目的VTEP,构造探测报文,探测报文的探测类型为VTEP间路径探测,其它内容与VM间的路径探测的探测报文相同,在此不再赘述。

如果控制器接收到目的VTEP对应的网络设备发送的上报消息且探测到设定个数的报文对应的网络路径,则路径探测完毕。其中,该设定个数由源端口值的个数确定。对于VTEP间的路径探测,包括多个源端口值,控制器直至探测到目的VTEP的端点标识对应的网络设备上报的上报消息,且上报消息中包含源端口最大值的的网络路径,则探测完毕。

根据本发明实施例提供的一种控制器,控制器根据用户输入的源VTEP的端点标识和目的VTEP的端点标识构造探测报文,并通过网络设备逐级转发,逐级向控制器上报IP地址、经过的出接口号和入接口号,可以探测到该源VTEP和目的VTEP之间多条真实的业务路径;在控制器的用户界面输出探测到的网络路径,可以让用户直观地了解探测报文经过的每一级网络设备;直接得到网络路径的状态,可以给用户一个直接的网络路径状态的结论,而无需用户查看探测报文经过的每一级网络设备之间的通断或环路。

图11为本发明实施例提供的另一种网络设备的结构示意图,该网络设备5000包括:依次连接的接收模块51、判断模块52、生成模块53和发送模块54。其中:

接收模块51,用于接收探测报文。

对于任一级网络设备,接收探测报文,该任一级网络设备可以是源VTEP的端点标识对应的网络设备,也可以是中间的网络设备,也可以是目的VTEP的端点标识对应的网络设备。如果是源VTEP的端点标识对应的网络设备,则是从控制器接收到探测报文,如果是其它任意一级的网络设备,则是从其上一级网络设备接收到探测报文。这里的网络设备是指支持VxLAN的二层设备或三层设备,可以是交换机或路由器。

该探测报文是由控制器根据探测请求,仿真实际报文构造得到的。该探测报文中包括:用于指示路径探测业务的标识,源VTEP的端点标识,目的VTEP的端点标识,源端口值,路径探测类型,以及源VTEP的端点标识对应的网络设备的IP地址。路径探测类型包括:VM间的路径探测和VTEP间的路径探测,VM间的路径探测也称单路径探测,VTEP间的路径探测也称多路径雷达探测。

在本实施例中,采用VxLAN格式对探测报文进行封装,其格式如图4所示,具体可参考步骤S206中所述。

基于Openflow网络下发报文和上送报文,具体地,通过Openflow下发接口Packet-Out和Openflow上送接口Packet-In进行。

作为一种实现方式,所述接收模块51具体用于:

根据用于指示路径探测业务的标识,识别接收到的所述探测报文;

根据预置的或所述控制器发送的访问控制列表ACL或流表中存储的所述探测报文与执行动作的对应关系,获取与所述探测报文对应的执行动作;

其中,所述执行动作包括复制和/或转发所述探测报文,向所述控制器发送所述上报消息。

网络设备一旦识别出接收到的是探测报文,根据访问控制列表或流表中存储的探测报文与执行动作的对应关系,可以获知接收到该探测报文之后的执行动作,直接执行该执行动作即可,简化了处理过程。

判断模块52,用于根据目的VTEP的端点标识,判断所述网络设备是否为与所述目标VTEP的端点标识对应的目的网络设备。

生成模块53,用于若所述网络设备是与所述目标VTEP的端点标识对应的目的网络设备,则根据所述探测报文生成上报消息。

发送模块54,用于发送所述上报消息给所述控制器。

由于本实施例的网络设备可以是任一级网络设备,由于目标VTEP的端点标识对应的网络设备与其它任一级的网络设备的操作步骤不同,目标VTEP的端点标识对应的网络设备只需发送上报消息给控制器,而无需复制和转发探测报文,因此,这里需要判断网络设备是否为与目标VTEP的端点标识对应的网络设备。

生成模块53还用于若所述网络设备不是与所述目标VTEP的端点标识对应的目的网络设备,则所述网络设备复制所述探测报文生成上报消息。

所述发送模块54还用于发送所述上报消息给所述控制器,并转发所述探测报文直至所述目的网络设备。

网络设备之间是根据计算出的源端口值自动进行报文的转发。然而,本发明实施例网络设备在进行报文的转发时,还需进行探测报文的复制,这是因为本发明实施例网络设备不仅要进行探测报文的转发,还需将探测报文封装在上报消息中发送给控制器。

现有技术中是不知道网络设备之间是通过哪条路径进行报文的转发的,本发明实施例则是要解决这个问题,即探测报文经过每一级网络设备,每一级网络设备都通过Packet-In接口发送上报消息给控制器。上报消息中包括复制的探测报文,发送该上报消息的网络设备的IP地址,接收探测报文的网络设备的入接口号,以及转发探测报文和/或发送上报消息的网络设备中的出接口号。

需要说明的是,一个网络设备具有多个接口号,这里需要明确探测报文是具体从哪个网络设备的哪个接口发出和接入。

控制器接收到每一级网络设备的出接口号和入接口号后,可以根据该接口号,获得探测到的网络路径,即仿真的探测报文依次经过哪些网络设备。

根据本发明实施例提供的一种网络设备,网络设备逐级转发控制器通过根据探测请求构造的探测报文,逐级向控制器上报IP地址、经过的出接口号和入 接口号,从而控制器可以探测到真实的业务路径。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(Digital Subscriber Line,DSL)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。上面的组合也应当包括在计算机可读介质的保护范围之内。

总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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