多控制器架构下的SDN数据平面故障监测与恢复方法与流程

文档序号:19729773发布日期:2020-01-18 03:49阅读:385来源:国知局
多控制器架构下的SDN数据平面故障监测与恢复方法与流程

本发明涉及sdn架构下网络可靠性研究领域,特别涉及一种多控制器架构下的sdn数据平面故障监测与恢复方法。



背景技术:

传统网络将控制和转发集成在同一物理设备中,两者之间呈紧耦合关系。sdn(软件定义网络)网络技术将逻辑控制与数据转发解耦,控制平面利用api对数据设备转发远程控制从而实现两个平面相互独立灵活地扩展。同时sdn网络逻辑上的集中控制使得控制器可以获取整个网络的全局视野,提升网络控制和管理的便捷性。sdn体系结构包括数据平面,控制平面和应用平面。数据平面由网络转发设备组成,sdn交换机仅仅负责数据流转发任务。控制平面由逻辑上集中的控制器构成,负责控制和管理数据平面的网络设备,维护网络拓扑和状态信息。应用平面由若干sdn业务构成。

sdn和传统网络一样不可避免会受到各种各样的故障威胁,导致网络性能下降或者网络瘫痪。常见的网络故障监测方式分为主动式网络故障监测和被动式网络故障监测。简单介绍如下:

现有技术一:主动式网络故障监测

原理:通过主动探测向网络中发送探测报文来获取网络中的故障信息

缺点:会对网络中的流量产生影响,增大网络负载。

现有技术二:被动式网络故障监测

原理:通过被动收集网络中的故障信息推理和定位网络中的故障

缺点:网络中存在症状丢失和症状虚假导致此技术的故障监测不准确。在大规模分布式网络中收集和处理网络中的信息会有较大的时延,故障监测机制缺乏实时性。

常见的故障恢复机制也可分为主动式和被动式两类。被动式恢复机制是在网络出现故障后通告控制器,控制器重新获取拓扑,对数据流重路由来恢复故障。主动式恢复机制是提供冗余,由控制器预先提供备份路径,故障发生时通过切换备份路径解决故障。简单介绍如下:

现有技术一:被动式故障恢复机制

原理:在网络出现故障后通告控制器,控制器重新计算路由并下发流表项给受影响的交换机

缺点:花费时间较多,多控制器的负载压力也较大,不能满足运营商要求的50ms故障恢复时间。

现有技术二:主动式故障恢复机制

原理:提供冗余,控制器预先提供备份路径,在出现故障时交换机不需要请求控制器建立新的路径,而是直接切换到备份路径。

缺点:网络中故障的范围具有多样性,备份路径并不可以解决所有的故障问题,因此灵活性和适用性存在欠缺。

综上所述,现有的技术在故障检测时要么增加网络负载达到较高的检测准确率,要么故障检测不准确、延时较大,在故障恢复时不能兼顾灵活性和故障恢复时间要求,并且应用场景受sdn网络架构固有限制,缺乏扩展性。



技术实现要素:

本发明提供的多控制器架构下的sdn数据平面故障监测与恢复方法,用以解决现有技术故障监测时增加网络负载达到较高的检测准确率,要么故障检测不准确、延时较大,在故障恢复时不能兼顾灵活性和故障恢复时间要求,并且应用场景受sdn网络固有扩展性问题的限制,不适用于大型网络的问题。

本发明至少通过如下技术方案之一实现。

多控制器架构下的sdn数据平面故障监测与恢复方法,包括以下步骤:

s1、若干个sdn控制器之间同步全局拓扑,构建和更新域内网络的拓扑结构;

s2、sdn控制器通过监测port-status消息(端口状态消息)和echo消息判断是否出现端口异常引起的sdn网络数据平面链路故障和交换机节点故障;

s3、sdn控制器解决故障,sdn控制器监测到故障时先采用主动式故障恢复,主动式故障恢复失效时,采用被动式故障恢复解决故障;

s4、若干个sdn控制器协作确定到达数据流的路由路径,然后对路径上的交换机下发流表,完成数据流路由。

进一步的,步骤s1具体包括:若干个sdn控制器周期性通过packet_out消息向所有与之相连的交换机发送lldp数据包,从而构建和更新该sdn控制器域内网络的拓扑结构;

sdn控制器之间通过东西向接口通信实现同步全局拓扑,保证底层网络及业务处理逻辑的一致性,同步全局拓扑的过程中只传递更新信息,在达到维护全局拓扑的同时节省网络带宽,减小网络负载。

进一步的,步骤s2所述的sdn控制器通过监测port-status消息(端口状态消息)和echo消息判断是否出现端口异常引起的数据平面链路故障和交换机节点故障,具体包括:

1)数据平面链路故障的判断:sdn控制器捕获数据平面发送的port-status消息进行故障监测;当sdn控制器解析port-status消息获知该交换机出现某个端口删除时,sdn控制器根据本地的网络拓扑判断该交换机的这个端口是否包含在网络中,若网络中包含该交换机的这个端口,则认为出现由交换机端口故障导致的数据平面链路故障,需要解决故障;否则认为该端口的删除属于正常的网络拓扑改变;

2)交换机节点故障的判断:sdn控制器主动监测数据平面的交换机节点,通过echo消息的接收和发送判断交换机节点是否存在故障;当sdn控制器首次无法接收到某个交换机的echo-reply消息时,sdn控制器将立即再次向该交换机发送echo-request消息,若sdn控制器仍然无法收到该交换机的echo-reply消息,则认为该交换机节点出现故障,解决故障;若sdn控制器接收到交换机的echo-reply消息,则数据平面正常运行。

进一步的,步骤s3所述sdn控制器解决故障具体包括以下步骤:

(1)主动式故障恢复:sdn控制器先向sdn交换机下发相应的组表项,组表项包含分组流转发主路径的端口号和一条备份转发路径端口号,当sdn控制器检测到主路径出现故障不可用时,向发生故障路径上的交换机发送ofpgc_modify指令,交换机执行组表项相应的动作指令,根据优先级选择下一优先级的组表项动作指令,同时控制器根据已有的故障消息检测该备份转发路径是否出现故障,若备份转发路径不出现故障,则切换到备份转发路径来进行故障恢复;

(2)被动式故障恢复:当主动式故障恢复中的备份转发路径不能够解决数据平面链路故障时,sdn控制器将重新通过lldp协议获取数据平面的全局拓扑结构,sdn控制器进行重路由,将新的转发路径下发给交换机完成故障恢复,完成故障恢复正常运行;

sdn控制器进行重路由包含重新进行域划分、重新进行预路由过程和重新为数据流确定转发路径。

进一步的,所述的域划分是将sdn网络数据平面根据预先人为指定的网络关键要素分成若干个域;网络关键要素包括ip网络中指定的ip地址前缀;

不同的sdn控制器管理和控制不同域,同时也将交换机分为域与域之间边界处的边缘交换机和域内的核心交换机。

进一步的,所述的预路由在网络数据流到达之前预先进行路由并下发流表的过程;

预路由过程中以路径的跳数作为路由代价,故最优路径即为代价最小路径,预路由是逐域进行的,对每个域,sdn控制器采用路由算法得到该域内所有交换机到边界交换机的最优路径,之后sdn控制器为本域内的每一个交换机添加流表。

进一步的,所述的为数据流确定转发路径,具体包括:

如果两个网络关键要素相同,那么收发端在同一个域内,属于域内路由,按照openflow网络路由方式确定数据转发路径;

如果网络关键要素不同时进行跨域路由,跨域路由分成三步,分别为计算域间最优路由、数据路由到目的域和目的域内的数据路由。

进一步的,所述的计算域间最优路由,具体包括:

sdn控制器根据数据流的源和目的网络关键要素确定数据流的源和目的域,并利用全局拓扑和路由算法得到源域和目的域之间基于边界交换机的最优路由。

进一步的,所述的数据路由到目的域,其过程包括:sdn控制器根据得到的域间最优路由,给源交换机下发一条流表,该流表将该流的目的网络关键要素修改为路径上第一个边界交换机的网络关键要素,然后借助预路由,该流从源交换机路由到源域的边界交换机上,同时控制器给最优域间路由上的每一个边界交换机都下发一条流表,该流表项的动作是将匹配的流的目的网络关键要素修改为最优域间路由上的下一个边界交换机网络关键要素,这样流就能路由到最后一个边界交换机;

在最后一个边界交换机处把数据流的目的网络关键要素改回原来数据流的目的网络关键要素。

所述的目的域内的数据路由过程包括:根据openflow网络中的路由方式计算出域内的最优路径,并将相应的流表项下发给路径上的每一个交换机,至此数据流完成路由。

进一步的,步骤s4具体包括:sdn网络数据平面先对交换机进行域划分,然后对该数据平面的交换机进行预路由,最后确定数据流的转发路径,对数据流进行路由。

与现有的技术相比,本发明的有益效果是:sdn控制器通过解析数据平面发送的port-status消息结合本地网络拓扑信息来监测交换机端口故障,通过立即再次向没有返回echo-reply消息的交换机发送echo-request消息来监测交换机节点故障,故障检测延时小的同时保证了较高的准确率;

本方法中采用主动和被动结合的方法进行故障恢复,吸取了主动式故障恢复直接切换为备份路径延时小的优点,并且用被动式方法作为备用,弥补了主动式方法中依赖备份路径的不灵活的缺点;根据sdn控制器管理将网络分隔成独立域,单个sdn控制器负责本域内的故障问题,可以减少故障恢复的复杂度,其中边界交换机的故障监测和恢复由数据流方向上的上一个sdn控制器完成;

本方法中采用了多控制器协作对数据流进行路由的方法,并且由于预路由,极大减少了控制器处理路由决策所承担的负载,因此具有在大型sdn网络中应用的优点。

附图说明

图1为本实施例中多控制器架构下的sdn数据平面故障监测与恢复方法的总体结构;

图2为本实施例中多控制器架构下的sdn数据平面故障监测与恢复方法的数据流路由流程图;

图3为本实施例中多控制器架构下的sdn数据平面故障监测与恢复方法流程图。

具体实施方式

下面将结合附图对本实施例进行说明。

如图1所示,本实施例的多控制器架构下的sdn数据平面故障监测与恢复方法,包括以下步骤:

s1、若干个sdn控制器之间同步全局拓扑,构建和更新域内网络的拓扑结构,具体如下:

协作路由及信息同步,多个sdn控制器协作确定到达数据流的路由路径,然后对路径上的部分交换机下发流表,完成数据流路由,同时多个sdn控制器之间为平行关系,控制通过周期性发送lldp数据包获取和更新域内拓扑信息,sdn控制器之间通过东西向接口(例如amqp协议)通信同步全局拓扑,保证底层网络及业务处理逻辑的一致性,同步全局拓扑的过程中只传递更新信息。图1中的箭头代表数据流(控制平面的数据流、数据平面的数据流以及控制平面和数据平面的数据流)。

s2、sdn控制器通过监测port-status消息和echo消息判断是否出现端口异常引起的sdn网络数据平面链路故障和交换机节点故障;

port-status消息,用于监测数据平面发生的交换机端口故障引起的链路故障,判断原理是交换机在端口状态发生改变时触发port-status消息并向sdn控制器通知端口状态的变化,sdn控制器收到并解析port-status消息,同时结合本地网络拓扑信息实现监测端口故障引起的链路故障;

具体的,数据平面链路故障的判断为sdn控制器捕获数据平面发送的port-status消息进行故障监测;当sdn控制器解析port-status消息获知该交换机出现某个端口删除时,sdn控制器根据本地的网络拓扑判断该交换机的这个端口是否包含在网络中(网络拓扑是由点和线构成的,其中交换机就是用一个点表示,如果拓扑中不包含这个点,那么这个交换机就不属于这个网络拓扑),若网络中包含该交换机的这个端口,则认为出现由交换机端口故障导致的数据平面链路故障,需要解决故障;否则认为该端口的删除属于正常的网络拓扑改变;

echo消息,用于监测交换机节点是否出现故障,交换机和sdn控制器建立连接之后,双方周期性发送echo-request和echo-reply消息来保持连接,因此通过立即向未返回echo-reply消息的交换机再次发送echo-request消息可以达到较高准确率的交换机节点故障监测;通过两次未接收到echo-reply消息提高了故障监测的准确率。

具体的,交换机节点故障的判断为sdn控制器主动监测数据平面的交换机节点,通过echo消息的接收和发送判断交换机节点是否存在故障;当sdn控制器首次无法接收到某个交换机的echo-reply消息时(当控制器接收到来自网络的某个数据包,控制器会自己检查标志位),sdn控制器将立即再次向该交换机发送echo-request消息,若sdn控制器仍然无法收到该交换机的echo-reply消息,则认为该交换机节点出现故障,解决故障;若sdn控制器接收到交换机的echo-reply消息,则数据平面正常运行。

s3、sdn控制器解决故障,sdn控制器监测到故障时先采用主动式故障恢复,主动式故障恢复失效时,采用被动式故障恢复解决故障;到较高准确率的交换机节点故障监测;

主动式故障恢复,主动式故障恢复依靠提供冗余的备份路径替代出现故障的路径来解决故障;

具体的,主动式故障恢复:sdn控制器先向sdn交换机下发相应的组表项,组表项包含分组流转发主路径的端口号和一条备份转发路径端口号,当sdn控制器检测到主路径出现故障不可用时,向发生故障路径上的交换机发送ofpgc_modify指令,交换机执行组表项相应的动作指令,根据优先级选择下一优先级的组表项动作指令,同时控制器根据已有的故障消息利用步骤s2检测该备份转发路径是否出现故障,若备份转发路径不出现故障,则切换到备份转发路径来进行故障恢复;主动式通过切换可用的备份路径来恢复故障,这样的优点是故障恢复时延小。

被动式故障恢复,被动式故障恢复依靠sdn控制器重新获取拓扑并对数据流重路由解决故障;被动式故障恢复通过重新获取全局拓扑和重路由来恢复故障,这样的优点是故障恢复灵活。

具体的,被动式故障恢复:当主动式故障恢复中的备份转发路径不能够解决数据平面链路故障时,sdn控制器将重新通过lldp协议获取数据平面的全局拓扑结构,sdn控制器进行重路由,将新的转发路径下发给交换机完成故障恢复,完成故障恢复正常运行;

sdn控制器进行重路由包括重新进行域划分、重新进行预路由过程和重新为数据流确定转发路径。

所述的域划分是将sdn网络数据平面根据预先人为指定的网络关键要素分成若干个域;网络关键要素包括ip网络中指定的ip地址前缀;

不同的sdn控制器管理和控制不同域,同时也将交换机分为域与域之间边界处的边缘交换机和域内的核心交换机。

所述的预路由在网络数据流到达之前预先进行路由并下发流表的过程;

预路由过程中以路径的跳数作为路由代价,故最优路径即为代价最小路径,预路由是逐域进行的,对每个域,sdn控制器采用路由算法(例如floyd-warshall算法)得到该域内所有交换机到边界交换机的最优路径,之后sdn控制器为本域内的每一个交换机添加流表。通过预路由可以减小控制器的负载,一定程度上缓解了单控制器的扩展性问题。

所述的为数据流确定转发路径,具体包括:

如果两个网络关键要素相同,那么收发端在同一个域内,属于域内路由,按照openflow网络路由方式确定数据转发路径;

如果网络关键要素不同时进行跨域路由,跨域路由分成三步,分别为计算域间最优路由、数据路由到目的域和目的域内的数据路由。

所述的计算域间最优路由,具体包括:

sdn控制器根据数据流的源和目的网络关键要素确定数据流的源和目的域,并利用全局拓扑和路由算法得到源域和目的域之间基于边界交换机的最优路由。

所述的数据路由到目的域,其过程包括:sdn控制器根据得到的域间最优路由,给源交换机下发一条流表,该流表将该流的目的网络关键要素修改为路径上第一个边界交换机的网络关键要素,然后借助预路由,该流从源交换机路由到源域的边界交换机上,同时sdn控制器给最优域间路由上的每一个边界交换机都下发一条流表,该流表项的动作是将匹配的流的目的网络关键要素修改为最优域间路由上的下一个边界交换机网络关键要素,这样流就能路由到最后一个边界交换机;

在最后一个边界交换机处把数据流的目的网络关键要素改回原来数据流的目的网络关键要素。

所述的目的域内的数据路由过程包括:根据openflow网络中的路由方式计算出域内的最优路径,并将相应的流表项下发给路径上的每一个交换机,至此数据流完成路由。

s4、若干个sdn控制器协作确定到达数据流的路由路径,然后对路径上的交换机下发流表,完成数据流路由,具体的,sdn网络数据平面先对交换机进行域划分,然后对该数据平面的交换机进行预路由,最后确定数据流的转发路径,对数据流进行路由。

如图2所示的多个sdn控制器架构下的协作路由,包括以下步骤:

步骤201、sdn控制器周期性通过packet_out消息向所有与之相连的交换机发送lldp数据包,这些交换机收到该消息后会向自己的所有端口发出lldp数据包,交换机接收到了lldp数据包,就会通过packet_in消息将两台交换机之间的链路信息封装并发送给sdn控制器,sdn控制器在搜集了自己管理域内的链路信息之后,根据这些信息来构建和更新域内网络的拓扑结构,同时多个sdn控制器之间为平行关系,sdn控制器之间通过东西向接口(例如amqp协议)同步全局拓扑,保证底层网络及业务处理逻辑的一致性;

步骤202、数据平面被划分成多个域,不同的sdn控制器管理和控制不同域,是根据指定的网络关键要素(例如ip网络中的ip地址前缀)划分的,同时也将交换机分为域与域之间边界处的边缘交换机和域内的核心交换机;

步骤203、域的预路由是网络数据流到达之前的预先进行路由并下发流表的过程,是逐域进行的,sdn控制器采用路由算法(如floyd-warshall路由算法等)得到域内所有交换机到边界交换机的最优路径并为本域内的每一个交换机添加流表;

步骤204、数据流从源主机到达源交换机;

步骤205、路由情况判断,根据源端和目的段网络关键要素判断数据路由属于域内路由还是域间路由,网络关键要素相同则为域内路由,否则为域间路由;

步骤206、若是域内路由,则按照传统的openflow网络路由方式进行路由;

步骤207、若是域间路由,则计算域间最优路由,sdn控制器根据数据流的源和目的网络关键要素,确定数据流的源和目的域,并利用全局拓扑和路由算法(如floyd-warshall路由算法等)得到源域和目的域之间边界交换机的路由;

步骤208、sdn控制器根据上一步中得到的最优域间路由,给源交换机下发一条流表,该流表将该流的目的网络关键要素修改为路径上第一个边界交换机的网络关键要素,借助之前的预路由,该流从源交换机路由到源域的边界交换机上,同时sdn控制器给最优域间路由上的每一个边界交换机都下发一条流表,该流表项的动作是将匹配的流的目的网络关键要素修改为最优域间路由上的下一个边界交换机网络关键要素,这样流可以路由到最后一个边界交换机,但是最后一个边界交换机会把流的目的网络关键要素改回原来数据流的目的网络关键要素;

步骤209、数据到达目的域内路由和步骤206相同,采用传统openflow网络路由方式进行。

如图3所示的故障监测与故障恢复方法流程图,包括以下步骤:

步骤301、首先进入故障监测阶段,sdn控制器捕获数据平面发送的port-status消息;

步骤302、判断port-status消息是否正常,若是则进行步骤304;若否,则进行步骤303;

步骤303、判断交换机端口是否属于网络,若否则进入步骤304判断echo消息是否正常,否则进行步骤303网络拓扑匹配判断该异常端口是否属于网络;

步骤303、判断该异常端口是否属于本网络;若该异常端口属于本网络,则认为出现端口故障引起的交换机节点故障,进入步骤307;

若该异常端口不属于本网络,则认为该端口的删除属于正常的网络拓扑变化,进入echo消息判断304;

步骤304、判断echo消息是否正常,echo消息正常则认为数据平面正常运行,进入步骤305;echo消息异常,则进入步骤306,sdn控制器立即再次发送echo-request消息进行第二次echo消息是否正常的判断;

步骤305、在正常运行之后,通过步骤315的适当延时,再次进入步骤301,从而进行周期性故障监测;

步骤306、若第二次echo消息判断中,echo消息正常,则认为数据平面正常运行进入步骤305,否则进入步骤307;

步骤307、故障恢复阶段,该阶段包括以下步骤:

步骤308、先采取主动式故障恢复,通过切换到冗余的备份路径解决数据平面的故障;

步骤309、通过主动式故障恢复之后通过port-status消息是否正常判断是否存在交换机端口故障引起的链路故障;

步骤310和步骤311、通过echo消息是否正常判断是否存在交换机节点故障;

若通过步骤309,步骤310和步骤311判断网络不存在上述故障,则网络正常运行,即通过主动式方法完成故障恢复;

若通过步骤309,步骤310和步骤311判断网络存在故障,则进入步骤312被动式故障恢复;

步骤313、sdn控制器将重新获取数据平面的全局拓扑结构,对数据流进行重路由;

步骤314、制定新的转发路径下发给交换机,完成故障恢复正常运行。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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