金鼎工业资源网
您现在的位置:金鼎工业资源网>> 数据中心 H类电学电器>>正文内容

CN201410856633.2 一种链路状态检测方法、装置和系统

技术领域

本发明实施例涉及通信技术,特别是一种链路状态检测方法、装置和系统。

背景技术

在软件定义网络(SoftwareDefinedNetworking,SDN)的体系架构包括控制器和交换机,控制器是SDN网络的核心。应用通过控制器来配置和操作交换机的各种设置和行为,从而达到控制交换机实现各种应用逻辑的目的;同样,交换机也通过控制器将数据平面的各种信息反馈到应用中,以便应用做出相应的控制逻辑。OpenFlow协议用来描述控制器和交换机之间交互所用信息的标准,以及控制器和交换机的接口标准。协议的核心部分是用于OpenFlow协议信息结构的集合。流表(FlowTable)是OpenFLow交换机本地维护的用于控制数据包具体处理操作的表项。

当OpenFlow交换机上线后,它会通过一系列消息与控制器建立连接并交互必要的信息。建立连接成功后,控制器可以向OpenFlow交换机下发一条LLDP(LinkLayerDiscoveryProtocol,链路层发现协议)报文的通用流表,该通用流表用于指示OpenFlow交换机将收到的所有LLDP报文都通过OpenFlow协议中的Packet-In消息上报给控制器。

由于网络的控制都集中在控制器,所以链路状态的(例如链路发现或链路故障)检测都需要控制器来完成。为了使控制器快速发现链路或发现链路故障,需要控制器以一定周期T发起链路的状态的探测,控制器首先会根据SDN网络中的任意一个交换机1的信息构造一个模拟交换机1发出的LLDP报文,封装到OpenFlow协议中Packet-Out消息中发送给交换机1,该报文对应的actions是从交换机1的某个开启的端口发出。交换机1收到LLDP的Packet-Out报文后,按照actions从某个开启的端口发出,例如通过端口1发出。以交换机2为例,它收到O交换机1发来的LLDP报文后,首先在本地通用流表里匹配,找到了控制器之前下发的LLDP报文的通用匹配流表,按照流表actions将该LLDP报文通过Packet-In消息发送给控制器。

由于SDN网络中存在大量的交换机,如果在链路发现阶段,每个交换机都发送Packet-In消息给控制器,将使得控制器收到大量的Packet-In消息。当网络规模增大时,这个消息量还是相当大,会占用控制器和交换机之间安全通道的大量网络资源,影响控制消息的及时准确传输,也浪费了控制器的处理和存储资源的。

综上所述,现有技术方案中存在大量的Packet-In消息,降低了控制器网络和计算资源的利用率,影响整个网络的使用效率。

发明内容

本发明实施例提出了一种链路状态检测方法、装置和系统,以解决现有技术链路状态检测方法浪费网络资源的问题。

第一方面,本发明实施例一种链路状态检测方法,应用于软件定义网络SDN,包括:

控制器向第一交换机下发基于链路层发现协议LLDP构造的第一LLDP报文,所述第一LLDP报文指示所述第一交换机向第二交换机转发所述第一LLDP报文以发现所述第一交换机到所述第二交换机的可用链路;

所述控制器接收所述第二交换机上报的所述第一LLDP报文,根据所述第一LLDP报文的传输路径确定所述第一交换机到第二交换机的可用链路,并记录所述可用链路的信息;

所述控制器向所述第二交换机发送链路流表,所述链路流表用于指示所述第二交换机将所述第一交换机通过所述可用链路转发的第二LLDP报文进行丢弃,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态。

根据第一方面,第一种可行的实现方式中,所述链路流表包括:所述链路的标识信息和丢弃指示,所述链路标识信息包括所述第一交换机的信息和所述第二交换机的信息,所述第一交换机的信息包括所述第一交换机的媒体接入控制MAC地址和端口地址,所述第二交换机的信息包括所述第二交换机的媒体接入控制MAC地址和端口地址。

根据第一方面的上述可行的实现方式,第二种可行的实现方式中,在所述控制器向第一交换机下发所述第一LLDP报文之前,还包括:

所述控制器在确定与所述第二交换机建立连接后,向所述第二交换机发送通用流表,所述通用流表用于指示所述第二交换机将接收到的所有LLDP报文上报给所述控制器;

则所述链路流表中还包括优先级信息,所述优先级信息用于指示所述链路流表的优先级高于所述通用流表。

根据第一方面的上述可行的实现方式,第三种可行的实现方式中,所述控制器每间隔第一时间周期触发所述第二LLDP报文;

则所述链路流表中还包括流表老化时间和流表老化行为,所述流表老化时间大于所述第一时间周期,所述流表老化行为用于指示所述第二交换机在所述链路流表老化时删除所述链路流表且向所述控制器上报所述链路流表已删除的通知。

根据第一方面的上述可行的实现方式,第四种可行的实现方式中,,还包括:

所述控制器接收所述第二交换机发送的所述链路流表已删除的通知,并根据所述通知确定所述可用链路的状态出现异常。

第二方面,提供一种链路状态检测方法,应用于软件定义网络SDN,包括:

第二交换机接收第一交换机转发的基于链路层发现协议LLDP协议的第一LLDP报文,所述第一LLDP报文由控制器构造并下发给所述第一交换机,所述第一LLDP报文用于发现所述第一交换机到所述第二交换机的可用链路;

所述第二交换机向所述控制器上报所述第一LLDP报文,以使得所述控制器根据所述第一LLDP报文的传输路径确定所述第一交换机到第二交换机的可用链路;

所述第二交换机接收并保存所述控制器发送的链路流表,所述链路流表用于指示所述第二交换机将所述第一交换机通过所述可用链路转发的第二LLDP报文进行丢弃,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态。

根据第二方面,第一种可行的实现方式中,所述链路流表包括:所述链路的标识信息和丢弃指示,所述链路标识信息包括所述第一交换机的信息和所述第二交换机的信息,所述第一交换机的信息包括所述第一交换机的媒体接入控制MAC地址和端口地址,所述第二交换机的信息包括所述第二交换机的媒体接入控制MAC地址和端口地址。

根据第二方面的上述可行的实现方式,第二种可行的实现方式中,在所述第二交换机接收第一交换机转发的所述第一LLDP报文之前,还包括:

所述第二交换机接收所述控制器发送的通用流表,所述通用流表用于指示所述第二交换机将接收到的所有LLDP报文上报给所述控制器;

相应地,

所述第二交换机在接收到所述第一LLDP报文后,根据所述通用流表向所述控制器上报所述第一LLDP报文;

所述链路流表中还包括优先级信息,所述优先级信息用于指示所述链路流表的优先级高于所述通用流表;

所述第二交换机在接收到所述第二LLDP报文后,根据所述优先级信息匹配所述链路流表,根据匹配结果将所述第二LLDP报文丢弃。

根据第二方面的上述可行的实现方式,第三种可行的实现方式中,所述第二LLDP报文由所述控制器每间隔第一时间周期触发;

则所述链路流表中还包括流表老化时间和流表老化行为,所述流表老化时间大于所述第一时间周期,所述流表老化行为用于指示所述第二交换机在所述链路流表老化时删除所述链路流表且向所述控制器上报所述链路流表已删除的通知。

根据第二方面的上述可行的实现方式,第四种可行的实现方式中,还包括:

所述第二交换机在保存所述链路流表之后,启动计时器;

若在所述计时器的计时时间超出所述流表老化时间之前接收到所述第二LLDP报文,所述所述第二交换机根据所述链路流表将所述第二LLDP报文丢弃,并重置所述计时器。

根据第二方面的上述可行的实现方式,第五种可行的实现方式中,还包括:

所述第二交换机确定在所述计时器的计时时间超出所述流表老化时间之后,仍未接收到所述第二LLDP报文,则确定所述链路流表老化;

所述第二交换机根据所述流表老化行为删除所述链路流表,并向所述控制器上报所述链路流表已删除的通知,以通知所述控制器所述可用链路的状态出现异常。

第三方面,提供一种软件定义网络SDN,包括控制器、第一交换机和第二交换机;

所述控制器,用于向所述第一交换机下发基于链路层发现协议LLDP协议构造的第一LLDP报文,所述第一LLDP报文指示所述第一交换机向第二交换机转发所述第一LLDP报文以发现所述第一交换机到所述第二交换机的可用链路;

所述第一交换机,用于向所述第二交换机转发所述第一LLDP报文;

所述第二交换机,用于接收所述第一交换机转发的所述第一LLDP报文,以及向所述控制器上报所述第一LLDP报文;

所述控制器,还用于接收所述第二交换机上报的所述第一LLDP报文,根据所述第一LLDP报文的传输路径确定所述第一交换机到第二交换机的可用链路,记录所述可用链路的信息,以及向所述第二交换机发送链路流表,所述链路流表用于指示所述第二交换机将所述第一交换机通过所述可用链路转发的第二LLDP报文进行丢弃,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态;

所述第二交换机,还用于接收并保存所述控制器发送的链路流表。

第四方面,提供一种控制器,应用于软件定义网络SDN,包括:

链路检测模块,用于向第一交换机下发基于LLDP协议构造的第一LLDP报文,所述第一LLDP报文指示所述第一交换机向第二交换机转发所述第一LLDP报文以发现所述第一交换机到所述第二交换机的可用链路;

链路信息管理模块,用于接收所述第二交换机上报的所述第一LLDP报文,根据所述第一LLDP报文的传输路径确定所述第一交换机到第二交换机的可用链路,并记录所述可用链路的信息;

流表分发模块,用于在所述链路信息管理模块记录所述可用链路的信息之后,向所述第二交换机发送链路流表,所述链路流表用于指示所述第二交换机将所述第一交换机通过所述可用链路转发的第二LLDP报文进行丢弃,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态。

根据第四方面,第一种可行的实现方式中,所述链路流表包括:所述链路的标识信息和丢弃指示,所述链路标识信息包括所述第一交换机的信息和所述第二交换机的信息,所述第一交换机的信息包括所述第一交换机的媒体接入控制MAC地址和端口地址,所述第二交换机的信息包括所述第二交换机的媒体接入控制MAC地址和端口地址。

根据第四方面的上述可行的实现方式,第二种可行的实现方式中,所述流表分发模块,还用于在确定与所述第二交换机建立连接后,向所述第二交换机发送通用流表,所述通用流表用于指示所述第二交换机将接收到的所有LLDP报文上报给所述控制器,以及还用于在所述所述链路流表中携带优先级信息,所述优先级信息用于指示所述链路流表的优先级高于所述通用流表。

根据第四方面的上述可行的实现方式,第三种可行的实现方式中,所述链路检测模块具体用于每间隔第一时间周期触发所述第二LLDP报文;

则所述流表分发模块还用于在所述链路流表中携带流表老化时间和流表老化行为,所述流表老化时间大于所述第一时间周期,所述流表老化行为用于指示所述第二交换机在所述链路流表老化时删除所述链路流表且向所述控制器上报所述链路流表已删除的通知。

根据第四方面的上述可行的实现方式,第四种可行的实现方式中,所述链路信息管理模块还用于接收所述第二交换机发送的所述链路流表已删除的通知,并根据所述通知确定所述可用链路的状态出现异常。

第五方面,提供一种交换机,应用于软件定义网络SDN,包括:

链路检测模块,用于接收第一交换机转发的基于LLDP协议构造的第一LLDP报文,所述第一LLDP报文由控制器下发给所述第一交换机并用于发现所述第一交换机到所述第二交换机的可用链路,所述第一LLDP报文中携带所述第一交换机的信息;

链路信息上报模块,用于向所述控制器上报所述第一LLDP报文,以使得所述控制器根据所述第一LLDP报文的传输路径确定所述第一交换机到第二交换机的可用链路;

流表处置模块,用于接收并保存所述控制器发送的链路流表,所述链路流表用于指示所述第二交换机将所述第一交换机通过所述可用链路转发的第二LLDP报文进行丢弃,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态。

根据第五方面,第一种可行的实现方式中,所述链路流表包括:所述链路的标识信息和丢弃指示,所述链路标识信息包括所述第一交换机的信息和所述第二交换机的信息,所述第一交换机的信息包括所述第一交换机的媒体接入控制MAC地址和端口地址,所述第二交换机的信息包括所述第二交换机的媒体接入控制MAC地址和端口地址。

根据第五方面的上述可行的实现方式,第二种可行的实现方式中,在所述第二交换机接收第一交换机转发的所述第一LLDP报文之前,所述流表处置模块还用于接收所述控制器发送的通用流表,所述通用流表用于指示所述第二交换机将接收到的所有LLDP报文上报给所述控制器;所述流表处置模块具体接收到的所述链路流表中还包括优先级信息,所述优先级信息用于指示所述链路流表的优先级高于所述通用流表;所述流表处置模块还用于在接收到所述第一LLDP报文后,根据所述通用流表向所述控制器上报所述第一LLDP报文,以及在接收到所述第二LLDP报文后,根据所述优先级信息匹配所述链路流表,根据匹配结果将所述第二LLDP报文丢弃。

根据第五方面的上述可行的实现方式,第三种可行的实现方式中,所述第二LLDP报文由所述控制器每间隔第一时间周期触发;

则所述链路流表中还包括流表老化时间和流表老化行为,所述流表老化时间大于所述第一时间周期,所述流表老化行为用于指示所述第二交换机在所述链路流表老化时删除所述链路流表且向所述控制器上报所述链路流表已删除的通知。

根据第五方面的上述可行的实现方式,第四种可行的实现方式中,所述流表处置模块还用于在保存所述链路流表之后,启动计时器,若在所述第二交换机确定在所述计时器的计时时间超出所述流表老化时间之前接收到所述第二LLDP报文,根据所述链路流表将所述第二LLDP报文丢弃,并重置所述计时器。

根据第五方面的上述可行的实现方式,第五种可行的实现方式中,所述流表处置模块还用于在确定所述计时器的计时时间超出所述流表老化时间之后且仍未接收到所述第二LLDP报文时,确定所述链路流表老化,以及根据所述流表老化行为删除所述链路流表,通知所述链路信息上报模块向所述控制器上报所述链路流表已删除的通知,以通知所述控制器所述可用链路的状态出现异常。

第六方面,本发明实施例提供一种计算机,包括:处理器、存储器、总线和通信接口;

所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算机运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述计算机执行以上第一方面、第一方面任一可能、第二方面或第二方面的任意可能的实现方式所提供的链路状态探测方法。

第七方面,本发明实施例提供一种计算机可读介质,包括计算机执行指令,以供计算机的处理器执行所述计算机执行指令时,以使所述计算机执行以上第一方面、第一方面任一可能、第二方面或第二方面的任意可能的实现方式所提供的链路状态探测方法。

本发明实施例,不同于现有技术,控制器在发现链路或检测链路激活后,主动下发该链路对应的链路流表到交换机,使得交换机后续接收到LLDP报文之后,不再匹配通用流表而是匹配链路流表,而是根据链路流表的指示丢弃后续LLDP报文,而不是不断向控制器上报报文,从而,解决了现有技术中大量的Packet-In消息占用控制器和OF交换机之间安全通道的大量网络资源的问题,降低了交换机上报给控制器的无用的Packet-In消息的数量,节约了控制器和交换机之间的网络资源,也避免了控制器上的一些不必要的处理和存储资源的浪费,提高了整个网络的使用效率。

附图说明

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

图1是本发明实施例的链路发现的流程示意图;

图2是本发明实施例的链路发现的又一流程示意图;

图3是本发明实施例的链路保活的流程示意图;

图4是本发明实施例的链路故障处理的流程示意图;

图5是本发明实施例的控制器的组成图;

图6是本发明实施例的交换机的组成图;

图7是本发明实施例的链路状态探测的又一流程示意图;

图8是根据本发明实施例提供的一种计算机的组成图。

具体实施方式

本发明实施例提出了一种链路状态检测方法、装置和系统,以提供一种不占用太多系统资源即可实现的链路发现或者链路故障探测机制。

如图1所示,为本发明实施例提供的结合系统架构的链路发现的方法流程示意图。本发明实施例中将OpenFlow交换机简称为OF交换机。本实施例中,以SDN网络中包含3个OF交换机为例,在实际的应用场景中,还可能包含更多的OF交换机。如图2所示,为链路发现的另一流程示意图。

首先,在链路发现流程之前,需要执行控制器与交换机之间的LLDP报文的通用处理机制。

S10:当OF交换机2上线后,它会通过一系列消息与控制器建立连接并交互必要的信息。建立连接成功后,控制器可以向OF交换机2下发一条LLDP(LinkLayerDiscoveryProtocol,链路层发现协议)报文的通用流表,该通用流表用于指示OF交换机2将收到的所有LLDP报文都通过OpenFlow协议中的Packet-In消息上报给控制器。该通用的流表例如:

表1:OpenFlow交换机与控制器建立连接后,控制器下发的LLDP通用流表

 

上述步骤S10的方法只是一种可实现的例子,还可以有其他的实现方式,例如:另一种可行的方法是下发一个优先级最低的all_match的流表,使所有没有匹配流表的报文上报控制器(通常OF交换机会有一条这样的流表,不单是为LLDP准备)。如:priority=i,actions=controller。这里i的值小于或等于其他任意流表的priority值。

再结合图1和图2所示的流程,本发明实施例中链路发现的过程包括:

S11:控制器向第一交换机下发基于链路层发现协议LLDP构造的第一LLDP报文,所述第一LLDP报文指示所述第一交换机向第二交换机转发所述第一LLDP报文以发现所述第一交换机到所述第二交换机的可用链路。

具体地,如图1中步骤①或图2中步骤a,链路发现流程由控制器来触发,控制器会根据OF交换机1的信息构造一个模拟OF交换机1发出的第一LLDP报文(第一LLDP报文中携带OF交换机1的信息,例如MAC和端口信息),封装到OpenFlow协议的Packet-Out消息中发送给OF交换机1,该第一LLDP报文对应的行为指示(actions)表示该第一LLDP报文需要从OF交换机1的所有开启的端口发出。

S12:第一交换机根据该第一LLDP报文对应的行为指示,将该第一LLDP报文转发给第二交换机。

具体地,OF交换机1收到第一LLDP的Packet-Out报文后,按照actions从所有开启的端口发出,图1中就是步骤②发给OF交换机2和3,图2中就是步骤b。

S13:控制器接收所述第二交换机上报的所述第一LLDP报文,根据所述第一LLDP报文的传输路径确定所述第一交换机到第二交换机的可用链路。

具体地,以OF交换机2为例,如图1中步骤③或图2中步骤c所示,它收到OF交换机1发来的第一LLDP报文后,首先在本地保存的LLDP通用流表里匹配,按照LLDP通用流表中指示的actions将该第一LLDP报文通过Packet-In消息上报给控制器。OF交换机3同理(本实施例中图示中描述了OF交换机3的实现方法,因OF交换机的原理与OF交换机2一致,因此文字部分不再赘述)。控制器收到上报的Packet-In消息(包含第一LLDP报文),首先可以得到上报该Packet-In消息的OF交换机2的数据路径datapath和入端口in_port,即获得了上报该Packet-In消息的交换机的信息(MAC地址和端口信息)。然后分析该第一LLDP报文内容,可以得知发出此第一LLDP报文的源OF交换机1的MAC地址和封装在LLDP数据单元中的端口信息port_id。这样,控制器就通过该第一LLDP报文的传输路径发现了从OF交换机1的端口1到OF交换机2的端口1的一条可用链路。

S14:控制器记录所述可用链路的信息。

具体地,如图2中步骤d所示,控制器可以在本地记录发现的从OF交换机1的端口1到OF交换机2的端口1的这条可用链路的相关信息。

S15:控制器向所述第二交换机发送链路流表,所述链路流表用于指示所述第二交换机将所述第一交换机通过所述可用链路转发的第二LLDP报文进行丢弃,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态。

第二交换机接收到该链路流表之后,可以保存该链路流表。

具体地,如图1中步骤④或图2中步骤e所示,控制器记录了OF交换机端口1到OF交换机端口2的链路后,可以构造一条与该链路对应的流表,例如命名为链路流表,如下:

表2:控制器为OF交换机2下发的链路流表

 

构造的这条链路流表包含链路的标识,使得链路流表的匹配项只要能唯一确定这条链路即可,例如,链路标识信息可以包括所述第一交换机的信息和所述第二交换机的信息,所述第一交换机的信息包括所述第一交换机的媒体接入控制MAC地址和端口地址,所述第二交换机的信息包括所述第二交换机的媒体接入控制MAC地址和端口地址。当然,本发明实施例不限于上述例子中的形式。

链路流表还可以包括丢弃指示,例如链路流表中的actions配置为drop,表示第二交换机将所述第一交换机通过所述可用链路转发的第二LLDP报文进行丢弃。

链路流表还可以包括老化时间idle_timeout,老化时间是OpenFlow协议中为该链路流表设置的空闲等待时间,也就是说当该链路流表在空闲等待时间内没有被任何包命中过,则删除该链路流表(即链路流表老化)。这个老化时间在本发明实施例中可以大于LLDP报文的发送周期T(控制器每间隔时间周期T会发起用于链路状态探测的第二LLDP报文)。在老化时间内没有收到该链路发来的第二LLDP包,则认为该链路断开或故障。在老化时间内收到该链路发来的第二LLDP包,则根据丢弃指示丢弃该第二LLDP报文。具体地,链路流表还可以包括流表老化行为,所述流表老化行为用于指示所述第二交换机在所述链路流表老化时删除所述链路流表且向所述控制器上报所述链路流表已删除的通知。

链路流表还可以包括优先级信息priority,用于设定了链路流表的优先级,该链路流表的优先级应该不低于控制器统一下发的LLDP通用流表的优先级。其目的就是让已经建立链路的交换机在执行流表操作时,匹配链路流表而不要匹配通用LLDP流表。

本发明实施例,不同于现有技术,控制器在发现链路或检测链路激活后,主动下发该链路对应的链路流表到交换机,使得交换机后续接收到LLDP报文之后,不再匹配通用流表而是匹配链路流表,从而根据链路流表的指示丢弃后续LLDP报文,而不是不断向控制器上报报文,从而,解决了现有技术中大量的Packet-In消息占用控制器和OF交换机之间安全通道的大量网络资源的问题,降低了交换机上报给控制器的无用的Packet-In消息的数量,节约了控制器和交换机之间的网络资源,也避免了控制器上的一些不必要的处理和存储资源的浪费,提高了整个网络的使用效率。

如图3所示,为本发明实施例提供的链路保活的方法流程示意图。

S31:控制器每间隔时间周期T触发第二LLDP报文,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态。

具体地,如图3中的步骤a,链路探测流程由控制器周期性触发,控制器会根据OF交换机1的信息构造一个模拟OF交换机1发出的第二LLDP报文(第二LLDP报文中携带OF交换机1的信息,例如MAC和端口信息),封装到OpenFlow协议的Packet-Out消息中发送给OF交换机1,该第二LLDP报文对应的行为指示(actions)表示该第二LLDP报文需要指定的链路发出(本实施例中以上述链路发现流程中发现的从OF交换机1的端口1到OF交换机2的端口1的可用链路为例)。

S32:第一交换机根据该第二LLDP报文对应的行为指示,将该第二LLDP报文转发给第二交换机。

具体地,如图3中的步骤b所示。

S33:第二交换机在接收到所述第二LLDP报文后,根据所述优先级信息匹配所述链路流表,根据匹配结果将所述第二LLDP报文丢弃。

具体地,如图3中的步骤c所示,当控制器处理完LLDP首包(链路发现过程中的第一LLDP报文)后,每个OF交换机上就多了若干条链路流表。间隔LLDP报文的发送周期T后,控制器再次触发用于探测链路状态的第二LLDP报文。但是,当OF交换机2的端口1收到从OF交换机1的端口1发来的第二LLDP报文时,由于OF交换机2上配置了链路流表,因此OF交换机2将匹配首包处理流程中下发的表2所示的链路流表。按照链路流表的丢弃指示(actions为drop),OF交换机2丢弃该第二LLDP报文,这样就不会有冗余的第二LLDP报文的Packet-In消息上报给控制器了。

另外,由于表2的链路流表中携带流表老化时间,在OF交换机2接收到该链路流表后,还可以启动计时器来对链路流表是否老化进行监控,计时器的超时时间可以设置为流表老化的时间,若在计时器未超时之前,OF交换机2能够接收到第二LLDP报文,则丢弃第二LLDP报文且重置计时器。确定本轮监控中,链路状态未出现异常,需要对链路流表的老化进行下一轮监控。因此,若在所述计时器的计时时间超出所述流表老化时间之前接收到所述第二LLDP报文,所述OF交换机2根据所述链路流表将所述第二LLDP报文丢弃,并重置计时器。如果OF交换机1的端口1到OF交换机2的端口1的链路一直通畅,则OF交换机2一直会收到该链路来的第二LLDP报文,OF交换机2上表2的链路流表将一直被激活不会老化。OF交换机2也会一直将第二LLDP报文进行丢弃,不会将该第二LLDP报文上报到控制器。从而减低消息交互的次数,提高系统的资源利用率。

如图4所示,为本发明实施例提供的链路故障处理的方法流程示意图。

S40:第二交换机接收到链路流表后,启动计时器;或者,第二交换机接收到第二LLDP报文后,丢弃第二LLDP报文并重置计时器。

在链路出现故障或者异常之前,按照前述链路发现流程或者链路保活流程,第二交换机上的计时器启动对链路流表是否老化进行监控。

S41:控制器每间隔时间周期T触发第二LLDP报文,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态。

具体地,如图4中的步骤a所示。

S42:第一交换机根据该第二LLDP报文对应的行为指示,将该第二LLDP报文转发给第二交换机,但是发送失败。

具体地,如图4中的步骤b所示。此步骤中,由于从OF交换机1的端口1到OF交换机2的端口1的链路出现故障或者异常,导致该链路不可用,因此第二交换机将接收不到该第二LLDP报文。如此循环若干次,直到达到链路老化时间,故障或者异常仍未解除。链路老化时间与链路流表老化时间可以一致。

S43:第二交换机确定计时器超时仍未接收到第二LLDP报文,则确定所述链路流表老化,所述第二交换机根据所述流表老化行为删除所述链路流表,并向所述控制器上报所述链路流表已删除的通知。

具体地,具体地,如图4中的步骤c和d所示。当该链路断开或故障时,OF交换机2将收不到该链路来的第二LLDP报文,OF交换机2上表2的链路流表将不会被命中。当该链路流表超过老化时间没有被命中,则该链路流表被删除。OpenFlow协议规定,通过链路流表中配置的流表老化行为,当链路流表老化时,OF交换机2会上报Flow-Removed消息给控制器通知控制器某条链路流表被删除。

S44:控制器接收到链路流表已删除的通知后,根据所述链路流表所对应的链路标识,可以确定之前记录的所述可用链路的状态出现异常。

具体地,如图4中的步骤e所示。控制器收到Flow-Removed消息,可以根据老化的链路流表的匹配项信息,得到对应的链路。此时,控制器就能得知该链路断开或故障。

本发明实施例,不同于现有技术,控制器在发现链路或检测链路激活后,主动下发该链路对应的链路流表到交换机,使得交换机后续接收到LLDP报文之后,不再匹配通用流表而是匹配链路流表,从而根据链路流表的指示丢弃后续LLDP报文,而不是不断向控制器上报报文,从而,解决了现有技术中大量的Packet-In消息占用控制器和OF交换机之间安全通道的大量网络资源的问题,降低了交换机上报给控制器的无用的Packet-In消息的数量,节约了控制器和交换机之间的网络资源,也避免了控制器上的一些不必要的处理和存储资源的浪费,提高了整个网络的使用效率。

进一步,由于链路流表中设置了流表老化时间,流表老化时间大于控制器触发LLDP报文的周期,每个链路流表设置的老化时间有利于对链路状态进行持续监控,若链路一直保持通畅,链路流表不会出现老化,交换机受到第二LLDP报文将按照链路流表的指示丢弃第二LLDP报文,从而避免克控制器和交换机之间的网络资源的浪费,以及控制器不必要的处理资源的浪费,若链路出现故障或者异常,链路流表会出现老化,交换机在链路流表老化后,会上报链路流表已经删除的通知给控制器,从而使得控制器也能够掌握链路的故障或者异常状态。

上述链路发现流程、链路保活流程和链路处理流程各为本发明实施例提供的链路状态监测方法中的一部分。下面从SDN网络的角度来描述本发明实施例。

本发明实施例提供的软件定义网络SDN,包括控制器、第一交换机和第二交换机;

所述控制器,用于向所述第一交换机下发基于链路层发现协议LLDP协议构造的第一LLDP报文,所述第一LLDP报文指示所述第一交换机向第二交换机转发所述第一LLDP报文以发现所述第一交换机到所述第二交换机的可用链路;

所述第一交换机,用于向所述第二交换机转发所述第一LLDP报文;

所述第二交换机,用于接收所述第一交换机转发的所述第一LLDP报文,以及向所述控制器上报所述第一LLDP报文;

所述控制器,还用于接收所述第二交换机上报的所述第一LLDP报文,根据所述第一LLDP报文的传输路径确定所述第一交换机到第二交换机的可用链路,记录所述可用链路的信息,以及向所述第二交换机发送链路流表,所述链路流表用于指示所述第二交换机将所述第一交换机通过所述可用链路转发的第二LLDP报文进行丢弃,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态;

所述第二交换机,还用于接收并保存所述控制器发送的链路流表。

一种具体实现的方式中,所述控制器还用于在确定与所述第二交换机建立连接后,向所述第二交换机发送通用流表,所述通用流表用于指示所述第二交换机将接收到的所有LLDP报文上报给所述控制器,以及所述控制器还用于在所述链路流表中携带优先级信息,所述优先级信息用于指示所述链路流表的优先级高于所述通用流表;所述第二交换机还用于在接收到所述第一LLDP报文后,根据所述通用流表向所述控制器上报所述第一LLDP报文,以及在接收到所述第二LLDP报文后,根据所述优先级信息匹配所述链路流表,根据匹配结果将所述第二LLDP报文丢弃。

又一种具体实现的方式中,所述控制器还用于每间隔第一时间周期向所述第一交换机下发所述第二LLDP报文,以及在所述链路流表中携带流表老化时间和流表老化行为,所述流表老化时间大于所述第一时间周期,所述流表老化行为用于指示所述第二交换机在所述链路流表老化时删除所述链路流表且向所述控制器上报所述链路流表已删除的通知。

又一种具体实现的方式中,所述第二交换机,还用于在保存所述链路流表之后,启动计时器,若在在所述计时器的计时时间超出所述流表老化时间之前接收到所述第二LLDP报文,则根据所述链路流表将所述第二LLDP报文丢弃,并重置所述计时器。

所述第二交换机,还用于在所述计时器的计时时间超出所述流表老化时间之后且仍未接收到所述第二LLDP报文时,确定所述链路流表老化,根据所述流表老化行为删除所述链路流表,并向所述控制器上报所述链路流表已删除的通知;所述控制器还用于接收所述第二交换机发送的所述链路流表已删除的通知,并根据所述通知确定所述可用链路的状态出现异常。

本发明实施例需要通过修改SDN网络中的控制器对链路发现和链路故障检测等类似功能的处理逻辑。如图5所示,为本发明实施例提供的控制器500的组成图,这里仅列出本发明实施例涉及的模块组件,并未列出控制器的全部组件,控制器实现链路检测仍以采用LLDP协议实现为例。

链路检测模块51,用于向第一交换机下发基于LLDP协议构造的第一LLDP报文,所述第一LLDP报文指示所述第一交换机向第二交换机转发所述第一LLDP报文以发现所述第一交换机到所述第二交换机的可用链路;

链路信息管理模块52,用于接收所述第二交换机上报的所述第一LLDP报文,根据所述第一LLDP报文的传输路径确定所述第一交换机到第二交换机的可用链路,并记录所述可用链路的信息;

流表分发模块53,用于在所述链路信息管理模块记录所述可用链路的信息之后,向所述第二交换机发送链路流表,所述链路流表用于指示所述第二交换机将所述第一交换机通过所述可用链路转发的第二LLDP报文进行丢弃,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态。

所述流表分发模块53,在一种扩展的实施例中,还用于在确定与所述第二交换机建立连接后,向所述第二交换机发送通用流表,所述通用流表用于指示所述第二交换机将接收到的所有LLDP报文上报给所述控制器,以及还用于在所述所述链路流表中携带优先级信息,所述优先级信息用于指示所述链路流表的优先级高于所述通用流表。

所述链路检测模块51具体用于每间隔第一时间周期触发所述第二LLDP报文;则所述流表分发模块53还用于在所述链路流表中携带流表老化时间和流表老化行为,所述流表老化时间大于所述第一时间周期,所述流表老化行为用于指示所述第二交换机在所述链路流表老化时删除所述链路流表且向所述控制器上报所述链路流表已删除的通知。

所述链路信息管理模块52还用于接收所述第二交换机发送的所述链路流表已删除的通知,并根据所述通知确定所述可用链路的状态出现异常。

如图6所示,为本发明实施例提供的交换机600的组成图,包括:

链路检测模块61,用于接收第一交换机转发的基于LLDP协议构造的第一LLDP报文,所述第一LLDP报文由控制器下发给所述第一交换机并用于发现所述第一交换机到所述第二交换机的可用链路,所述第一LLDP报文中携带所述第一交换机的信息;

链路信息上报模块62,用于向所述控制器上报所述第一LLDP报文,以使得所述控制器根据所述第一LLDP报文的传输路径确定所述第一交换机到第二交换机的可用链路;

流表处置模块63,用于接收并保存所述控制器发送的链路流表,所述链路流表用于指示所述第二交换机将所述第一交换机通过所述可用链路转发的第二LLDP报文进行丢弃,所述第二LLDP报文由所述控制器触发并用于探测所述可用链路的状态。

在一种扩展的实施例中,在所述第二交换机接收第一交换机转发的所述第一LLDP报文之前,所述流表处置模块63还用于接收所述控制器发送的通用流表,所述通用流表用于指示所述第二交换机将接收到的所有LLDP报文上报给所述控制器;所述流表处置模块63具体接收到的所述链路流表中还包括优先级信息,所述优先级信息用于指示所述链路流表的优先级高于所述通用流表;所述流表处置模块63还用于在接收到所述第一LLDP报文后,根据所述通用流表向所述控制器上报所述第一LLDP报文,以及在接收到所述第二LLDP报文后,根据所述优先级信息匹配所述链路流表,根据匹配结果将所述第二LLDP报文丢弃。

在一种优选的实施例中,所述第二LLDP报文由所述控制器每间隔第一时间周期触发;则所述链路流表中还包括流表老化时间和流表老化行为,所述流表老化时间大于所述第一时间周期,所述流表老化行为用于指示所述第二交换机在所述链路流表老化时删除所述链路流表且向所述控制器上报所述链路流表已删除的通知。

进一步,所述流表处置模块63还用于在保存所述链路流表之后,启动计时器,若在所述第二交换机确定在所述计时器的计时时间超出所述流表老化时间之前接收到所述第二LLDP报文,根据所述链路流表将所述第二LLDP报文丢弃,并重置所述计时器。

进一步,所述流表处置模块63还用于在确定所述计时器的计时时间超出所述流表老化时间之后且仍未接收到所述第二LLDP报文时,确定所述链路流表老化,以及根据所述流表老化行为删除所述链路流表,通知所述链路信息上报模块62向所述控制器上报所述链路流表已删除的通知,以通知所述控制器所述可用链路的状态出现异常。

除了上述本发明实施例提供的链路状态检测方法之外,本发明实施例还提供另外一种链路状态检测方法,其实现与上述实施例的方式存在一些区别,如下详述。

上述本发明实施例的方法是通过扩展控制器的功能以使得控制器能够下发链路流表来免除OF交换机上报第二LLDP的Packet-In消息到控制器。此方式是考虑SDN网络中所有控制逻辑和智能都放在控制器端,OF交换机仅仅支持OpenFlow协议,上述实现方法不需要修改OpenFlow协议的交换机即可实现。

然而,上述方法在每个LLDP周期里控制器还是需要触发LLDP的Packet-Out消息到各个OF交换机。因此,进一步考虑如果将有限的一些基本协议和控制逻辑放在OF交换机上(对OF交换机进行功能扩展),这样就能彻底避免控制器和OF交换机之间交互这种周期性心跳报文消息。依然以LLDP协议实现为例,如图7所示,相应的方法包括:

S71:OF交换机1自己构造LLDP报文并向其相邻交换机发送。

具体地,本发明实施例中,控制器将不再触发链路发现或者链路状态探测报文,而由交换机自己触发。

S72:OF交换机2发现OF交换机1到自身的可用链路,并记录所述可用链路的信息。

例如OF交换机2收到了OF交换机1从端口1发来的LLDP报文,通过OF交换机2上的LLDP协议栈解析后,可以得知OF交换机1的端口1和OF交换机2的端口1之间存在一条链路。OF交换机2将该链路信息以标准MIB(ManagementInformationBase,管理信息库)或者其他的存储形式保存起来,以供控制器查询及判断链路的通信状况。

S73:OF交换机2向控制器上报链路的状态报告,以使得控制器在本地的链路信息管理库中保存链路的信息。

所述的链路状态报告可以是链路建立报告,也可以是链路删除报告。具体实现可以修改OpenFlow现有消息的内容含义,也可以重新定义一个OpenFlow没有的新消息。例如修改Flow-Removed消息中的reason来指定是链路建立或者链路删除,并且在match中携带链路的信息,如源/目的交换机MAC、端口等。

例如,OF交换机2上新发现了一条可用链路,则会用自定义的OpenFlow消息将该链路的信息上报给控制器。控制器在本地的链路信息管理库中添加该链路。该自定义OpenFlow消息是链路建立或删除消息。总之,该自定义消息携带的信息包括:链路建立或者链路删除;链路的基本信息等。

OF交换机需要周期性重复步骤S71,但当链路状态无变化时,步骤S73则不需要再重复。当OF交换机2在链路老化时间内没有收到OF交换机1从端口1发来的LLDP报文时,则认为该链路断开或故障,在MIB中将链路状态改变或删除,同时上报链路删除的自定义的OpenFlow消息给控制器,控制器在本地链路信息管理库中删除该链路。

上述实施例能够占用更少的控制器和交换机之间的安全通道,更彻底的减少控制器与交换机之间的链路状态探测消息。然而,本实施例需要修改OpenFlow协议或者重新解释OpenFlow协议框架下某些消息,需要修改控制器和OF交换机的OpenFlow协议栈,并且需要特定的支持加载特定协议和控制逻辑的OF交换机。

如图8,为本发明实施例的计算机的结构组成示意图。本发明实施例的计算机可包括:

处理器801、存储器802、系统总线804和通信接口805。CPU801、存储器802和通信接口805之间通过系统总线804连接并完成相互间的通信。

处理器801可能为单核或多核中央处理单元,或者为特定集合成电路,或者为被配置成实施本发明实施例的一个或多个集合成电路。

存储器802可以为高速RAM存储器,也可以为非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

存储器802用于计算机执行指令803。具体的,计算机执行指令803中可以包括程序代码。

当计算机运行时,处理器801运行计算机执行指令803,可以执行本发明实施例中任意一个实施例所提供的链路状态检测的方法。

本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。

计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。

计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。

计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

金鼎工业资源网-版权所有
成都运营中心
Tel:028-87023516   Mob(+86) 18980857561 /18190762281
中国 成都 高新区创业路18号
电邮:853136199@qq.com