一种软件定义网络中数据平面异常处理方法与流程

文档序号:11292090阅读:254来源:国知局
本发明涉及软件定义网络中的控制功能研究,特别涉及一种软件定义网络中数据平面异常处理方法;针对sdn(softwaredefinednetwork,软件定义网络)架构中数据平面内的故障和拥塞问题,做出判断和处理,充分利用sdn的可编程性和全局可控性。
背景技术
::随着计算机网络的不断扩大,互联网已经从早期的局部资源共享平台发展到今天覆盖全球的数据通信网络,用户需求也从早期的单纯可达到现在对服务质量、流量工程等多方面的需求,为了解决现有tcp/ip体系结构面临的诸多难题,未来互联网的研究大规模展开,其中包括基于openflow的sdn技术。onf组织(开放网络基金会),它认为sdn的最终目标是为软件应用提供一套完整的编程接口,上层的软件可以通过这套接口控制网络中的资源以及经过这些网络资源的流量,并按照应用需求灵活调度流量。2008年,斯坦福大学的nickmckeown教授提出了openflow技术,经过多年发展,已经成为sdn的主流南向接口协议之一。故障和拥塞问题是sdn流量工程下研究的主要问题之一。故障问题包括控制层故障和数据层故障,数据层故障处理有两种机制,一种是恢复机制,交换机发现链路失效后,将失效信息发送给控制器,控制器为经过失效路径的流重新计算路径,将新的路径添加到交换机上;一种是保护机制,控制器预先计算备份路径,并下发给交换机,节省了交换机和控制器之间的时延。保护机制即主动式故障恢复,包括sdn自带的fastfailover机制;已有研究在备份路径方面做出的改进有:前一跳路由、审议式故障恢复。其中前一跳路由仍无法解决备份路径无效的问题;审议式故障恢复结合了保护机制和恢复机制,避免了两者存在的问题,但增加了网络复杂性。为了更快的发现故障,需要进行故障检测,故障检测是为故障恢复服务的。常见的链路故障检测机制,包括los(lossofsignal),lldp和bfd(bidirectionalforwardingdetection)等其他技术。其中lldp和los应用于链路恢复机制,能够检测到所有的故障,均需要控制器的参与。bfd专注于转发平面的故障检测,使网络能够快速检测故障,主要用于链路保护机制。bfd提升了故障检测时间,但是需要和路由协议、mpls等协议进行交互,开发实现部署需要的接口难度和工作量都很大。sdn网络中的拥塞又分为控制层拥塞、数据链路层拥塞、接口拥塞。对于数据链路层的拥塞,产生原因包括数据在交换机中滞留时间过长、节点缓存空间太小、对整个网络的无序使用、选路算法的不当、大象流的出现以及处理不当等原因,本质来说都是对底层资源的不合理运用引起的。对于接口的拥塞,产生原因为控制器与底层链路的大量通信导致的,本质来说也是由于选路的不合理引起。对于处理拥塞问题,最终都归结为重新选路的问题,现在有的解决方案有以下几种,针对大象流到来而引起的链路拥塞,提出改进的多路径路由算法解决,但都过度强调通过数据流的拆分来进行负载均衡,且没有提出相应有效地子流重组的方法;利用aqm算法,通过sdn提供的全局视图和集中式管控的能力,来解决由于交换机缓存引起的拥塞问题,但不能达到预防拥塞的目的;通过蚁群算法实现负载均衡,达到网络避免拥塞的目的,但仅在流初始到来时进行选路,不考虑过后会产生的链路变化;同时这些方案大多均考虑单种网络状况,但实际上进行拥塞避免后仍可能会发生拥塞,故都应该进行考虑。到目前为止,当前sdn网络异常问题的解决方案,分别是链路恢复策略和链路保护策略。链路恢复策略即资源非预留型,当异常出现之后,需要一个特殊的信号来通知建立恢复路径,需要有控制器的参与。缺点是发生异常后要引入控制器,并且从新下发流表,增加了恢复的延迟。链路保护策略即预留资源方式,发生异常时不需要触发额外的信号,不需要控制器的参与。缺点是牺牲部分存储开销,有点是降低故障恢复延迟和故障恢复过程的通信开销。技术实现要素:为了克服上述现有技术的缺陷,本发明的目的在于提供一种软件定义网络中数据平面异常处理方法,针对sdn网络环境中数据平面内的异常问题,包括故障问题和拥塞问题,针对故障问题,提出了根据周期性底层信息发现故障的模块,设计基于路径保护机制的数据平面故障处理策略;针对拥塞问题,主要通过解决已发生的拥塞和避免拥塞进行,设计一种基于动态阈值的链路拥塞处理策略;本发明利用sdn的特性,通过获得的底层状况,进行自动化处理故障和拥塞的操作。为了达到上述目的,本发明的具体技术方案如下:一种软件定义网络中数据平面异常处理方法,包括以下步骤:(1)、控制器获取底层链路的拓扑信息,应用层各模块进行信息的分析和处理;使用深度优先搜索算法,计算出拓扑中两两节点对的所有可达路径,存储在表spt(switchpathtable)中;将两两节点对之间的最短路径长度存储在表sml(switchminlength)中;将各链路的带宽信息存储在表lct(linkcapacitytable)中;两两节点之间下发的路径存储在表hrt(historyroadtable)中;(2)、控制器周期性地获取底层拓扑信息和交换机上维护的端口信息(port-status),控制器与应用平面之间利用北向接口实现交互,若链路拓扑发生变化,判断并确定故障类型。(3)、对于由于故障受影响的流要进行重新选路,根据数据流的发送速度和新信息出现频率,为流表项设置idle_time的值,在重路由下发路径时,多条可选路径中在保证路径短的同时,下发和删除流表少的路径;设计let选路方法,并在let选路结束后增加了检测内容,避免节点重复;(4)、根据获取的交换机计数器信息,计算出各链路的带宽情况,对比lct判断是否发生拥塞;若未达到拥塞处理阈值,则采用拥塞避免的方式进行选路;若达到拥塞处理阈值,则找到需要重新分配带宽资源的流需求,进行重新选路;除了根据底层信息为旧的流重新选路外,当新的流需求到达时,在交换机中查询流表,若有对应的流表,则直接进行转发;否则通过packet_in消息发送给控制器,控制器重新根据当前状态选路。所述的步骤二具体如下:控制器周期性地获取底层拓扑信息和交换机上维护的端口信息(port-status),根据控制器获取的交换机、端口的信息,与原始信息对比后分析故障的具体类型,将故障分为:交换机故障、端口故障、链路故障,若故障为端口故障或链路故障,则受影响的流为通过该链路的流;若故障为交换机故障,则受影响的流为所有经过该交换机的流,即可能为通过多条链路的流。步骤三所述的对于由于故障受影响的流要进行重新选路,具体步骤如下:(1)结合sml表和spt表,找出某一源节点到某一目的节点路径相对短的路径,通过参考表lct,避免带宽已经不足的路径;通过参考表hrt,找出和原路径重合度较高的新路径,使得下发流表和删除流表的数目减少,从而减少南向接口传输的时延。(2)通过sdn对数据平面集中管理特性,找到下发和删除流表最少的新路径,即设计了let选路方法,利用idle_time以及前几种选路的方式,选取下发流表最少且跳数相对较短的路径。所述的步骤四中拥塞处理阈值的选取方法通过控制器周期性地发送查询请求,进行对底层链路的探知,动态确定阈值,具体为:(1)采用等时间间隔的方式进行获取,设定时间间隔为t,对于每一个交换机,每隔时间t收集一次其上的统计信息;(2)根据得到的rx_bytes(收到的比特数)和tx_bytes(传出的比特数),算出端口的发送流量和接受流量,进而得到两端口间的流量;用端口最大带宽减去当前流量带宽,可得到端口剩余流量;具体的,设链路i在时间t的带宽为ut,获取数据平面链路状态的周期为t,在t+nt时刻阈值设置为公式1所示,其中为之前每隔t带宽减少的平均值,δu为最近一次带宽减少的值,用两者之间较大的值作为判断某条链路拥塞避免的阈值,当在t+nt时刻测量到某链路的带宽值小于其阈值时,暂时将其链路设置为不可用,避免将其继续分配给新到来的流:所述的步骤四中重新选路,具体为:(1)控制器周期性地获取了底层信息,假设已达到拥塞避免阈值,则找出需要控制流量的链路,找出需要控制流量的链路上的交换机,并通过控制器查出这些交换机上的流表,根据流表信息获取流的源节点和目的节点。(2)由选路算法为这些需求进行重新选路,重新下发流表,并将旧流表删除;当下发了流表时,规定其生命时间timeout为t,即流表项的idle_time字段设置为t;当长时间未有流到来,t时间过后,对应的流表被自动删除;若有流到来,则将其存在时间重新归零;由此,已存在的流表即说明近期有该流表对应的流到来,当控制器要重新进行流表下发的时候,通过这些流表项找寻对应的需求。(3)当有流请求到来并查询不到对应流表的时候,通过packet_in消息将流的需求告知算法,算法计算并通过控制器下发流表。所述的步骤四中重新选路时,针对sdn环境做了如下改进:(1)进行选路时,控制所选路径为最短路径的x(可由网络管理人员进行配置)倍范围内,从而防止过多绕路,避免传输时延过高。(2)通过选路时,在满足条件的基础上尽可能多地和旧路径重合,从而防止大量流表下发而引起的南向接口拥塞。(3)通过最短路径进行选路时,同时结合底层链路状态进行判断,选取满足条件的最短路径。本发明实现了对sdn中数据平面的异常处理,从底到上具体涉及数据平面、控制平面和应用平面。根据软件定义网络具体实现架构,本发明提出了在应用层面进行故障和拥塞处理的理念。通过在应用层引入底层数据获取分析和算法,打破了原有的改变控制层和数据链路层的方式,充分利用软件定义网络的可编程性和开放特性,使得该方案能够方便快捷的部署使用,将来可方便地更换其他控制器,简化网络管理人员的工作。本发明具有以下有益效果:本发明提出软件定义网络中数据平面异常处理方法。对于数据平面内故障问题,已存在的策略基本为重新选路,但没有一个细致故障分类算法,并且没有考虑到控制层到数据层流表下发和数据层流表删除的时延,没有考虑新路径的过度绕路;对于数据平面内拥塞问题,基本局限于集中特定情况产生的拥塞,且很多解决局限于算法,却不考虑是否能在sdn架构中实现。而在本发明中,首先根据底层拓扑和交换机端口计数器信息来判断是否发生拥塞或故障,并对故障和拥塞程度进行了分类和分情况,本发明关注了故障选路中新路径生成时延,利用smlt表减少这一时延,并关注了新路径流表下发和删除的时延,在选择路径时避免节点重复;本发明提出的故障处理模块能够及时获取故障信息,并为受影响的流安排新路径,使数据不会因为故障产生更多的丢失,同时减少重新选路的延时;本发明提出的动态阈值设定,根据网络的实时变化设定阈值,具有很高的灵活性、实时性;本发明获取底层信息的方式,通过控制器提供的接口获取并计算,不需借用第三方的应用,减少了安装和使用费用。与已存在的异常处理方案,需要对底层和协议进行改变相比,本发明的执行将更加上层化,更容易进行部署和实施。附图说明:图1为整体框架图;图2为基于可靠性的选路策略框架示意图;图3为基于路径保护机制的故障处理整体流程图图4为故障类型判断流程图;图5为故障处理中寻找新路径的流程图图6为拥塞处理方法流程图图7为openflowv3.0中流表项结构图具体实施方式:下面结合附图对本发明进一步地详细阐述。参考图1中展示了本发明的整体框架,策略的主体部分通过北向接口获得所需的数据,将数据上发到应用层进行处理,充分利用了网络的可编程性,对网络进行的拥塞避免也通过北向接口来进行下发实现,具体地由控制层和数据链路层之间的协议来实现。该发明的优势在于网络管理人员只需进行配置和部署即可方便地实现功能,使得底层的控制器和网络面向管理人员透明。图2是基于可靠性的选路策略的框架示意图。三部分均部署在控制层之上。信息收集部分负责对底层数据进行收集和存储,方便下一步的使用,即为图1当中的数据处理模块和数据库存储模块;触发判断部分则根据信息收集部分的数据进行底层拓扑分析和链路带宽等量的计算,并进行故障和拥塞判断;处理部分为对应的处理,发生故障,则直接进行故障处理;出现拥塞,则根据链路的带宽情况合理的进行拥塞避免或拥塞处理的操作。一种软件定义网络中数据平面异常处理方法,包括以下步骤:(1)、控制器获取底层链路的拓扑信息,应用层各模块进行信息的分析和处理;使用深度优先搜索算法,计算出拓扑中两两节点对的所有可达路径,存储在表spt(switchpathtable)中;将两两节点对之间的最短路径长度存储在表sml(switchminlength)中;将各链路的带宽信息存储在表lct(linkcapacitytable)中;两两节点之间下发的路径存储在表hrt(historyroadtable)中;(2)、以floodlight为例,控制器通过自身floodlightprovider、topologyservice等模块,处理与交换机之间的连接,控制器周期性地获取底层拓扑信息和交换机上维护的端口信息(port-status),控制器与应用平面之间利用北向接口实现交互,若链路拓扑发生变化,判断并确定故障类型。参考图3,本图为故障处理的整体流程图,由图可见,本发明中的故障处理策略是基于底层信息分析、故障类型判断、故障处理于一体的方式,本发明的故障处理方式是根据具体故障,分析受影响的流之后为其重新下发的新路径的过程,本质来说即为在备份路径中查询符合条件的新路径。本发明所提出的基于路径保护机制的故障处理策略,对故障的发现、判断、重新选路的过程进行了详细的设计,在重新选路的过程中,创造性的不仅关注路径的跳数,还关注新下发流表的数目。在进行故障处理时,所述方案首先进行了故障类型判断,图4描述了根据链路信息来判断故障类型的过程。floodlight中可以实现对端口故障的发现,当交换机端口发生故障时,会发送port-status消息给控制器,控制器通过周期性的监听实现对故障的发现。由于floodlight没有将这个功能开放成北向接口,所以通过floodlight开放的接口来设计判断故障及其类型的方案。本文关注数据平面的交换故障、端口故障、链路故障。无论发生哪种故障,最终均会造成链路与初始链路信息发生变化。当发生变化后,再根据获取的交换机信息、端口信息具体分析故障是由哪种类型产生的。(3)、对于由于故障受影响的流要进行重新选路,根据数据流的发送速度和新信息出现频率,为流表项设置idle_time的值,在重路由下发路径时,多条可选路径中在保证路径短的同时,下发和删除流表少的路径;设计let选路方法,并在let选路结束后增加了检测内容,避免节点重复;参考图5,本图描述了在判断出故障类型后为受影响的流进行重新选路的过程。分析了三种不同的选路思想,发生故障重新选路的方式有几种思想,一为从源节点重新进行选路(fnd),但这种方式在路径很长的情况下将造成下发流表过多;二为从故障处进行最短路径选路(lnd);三为绕过故障的选路(pbd)。结合fnd、lnd、pbd三种选路方式,形成优化的选路方式let选路方式,对比选出三种选路方式结果中满足最少更换流表的新路由。同时,为避免前后路段的重复,提出了绕路检测。(4)、根据获取的交换机计数器信息,计算出各链路的带宽情况,对比lct判断是否发生拥塞;若未达到拥塞处理阈值,则采用拥塞避免的方式进行选路;若达到拥塞处理阈值,则找到需要重新分配带宽资源的流需求,进行重新选路;除了根据底层信息为旧的流重新选路外,当新的流需求到达时,在交换机中查询流表,若有对应的流表,则直接进行转发;否则通过packet_in消息发送给控制器,控制器重新根据当前状态选路。参考图6,本图为拥塞处理的整体流程图,当拥塞发生后的处理过程与故障处理类似,同样是为流需求重新选路的过程。但与故障不同的是,拥塞的判断、阈值的计算以及新路径的计算均需要底层带宽的信息。图中未达到拥塞处理阈值时,选择最大带宽利用率最小的路径,通过这样的选路方式方式,为网络维持了一定的负载均衡,是拥塞避免的操作。具体为:初始化后求得的spt(switchpathtable)表以及sml(switchminlength)表。算法初始时,由控制器得到底层的拓扑信息,通过深度优先搜索和最短路径算法可以得到spt表和sml表的内容,由spt表每一行可得从一个源节点到其他所有目的节点的所有可能路径,从某一列可得到从其他节点到某一目的节点的所有路径,由sml表可快速查的某源节点的目的节点的最短路径长度。通过这两个表的内容,结合算法获取的底层链路信息,可以求得符合条件的路径。虽然随着网络的增大,spt表会变得异常庞大,但由于此表只在初始化时经计算获得,后续只作为查询使用,且通过此表能够将选路变得简单快捷,同时充分应用了sdn的特性,所以效益较大。所述的步骤二具体如下:控制器周期性地获取底层拓扑信息和交换机上维护的端口信息(port-status),根据控制器获取的交换机、端口的信息,与原始信息对比后分析故障的具体类型,将故障分为:交换机故障、端口故障、链路故障,若故障为端口故障或链路故障,则受影响的流为通过该链路的流;若故障为交换机故障,则受影响的流为所有经过该交换机的流,即可能为通过多条链路的流。步骤三所述的对于由于故障受影响的流要进行重新选路,具体步骤如下:(1)结合sml表和spt表,找出某一源节点到某一目的节点路径相对短的路径,通过参考表lct,避免带宽已经不足的路径;通过参考表hrt,找出和原路径重合度较高的新路径,使得下发流表和删除流表的数目减少,从而减少南向接口传输的时延。表1即为spt表。表2即为sml表。表1smls1s2s3…s1null34…s2316…s346null………………表2(2)通过sdn对数据平面集中管理特性,找到下发和删除流表最少的新路径,即设计了let选路方法,利用idle_time以及前几种选路的方式,选取下发流表最少且跳数相对较短的路径。所述的步骤四中拥塞处理阈值的选取方法通过控制器周期性地发送查询请求,进行对底层链路的探知,动态确定阈值,具体为:(1)采用等时间间隔的方式进行获取,设定时间间隔为t,对于每一个交换机,每隔时间t收集一次其上的统计信息;(2)根据得到的rx_bytes(收到的比特数)和tx_bytes(传出的比特数),算出端口的发送流量和接受流量,进而得到两端口间的流量;用端口最大带宽减去当前流量带宽,可得到端口剩余流量;具体的,设链路i在时间t的带宽为ut,获取数据平面链路状态的周期为t,在t+nt时刻阈值设置为公式1所示,其中为之前每隔t带宽减少的平均值,δu为最近一次带宽减少的值,用两者之间较大的值作为判断某条链路拥塞避免的阈值,当在t+nt时刻测量到某链路的带宽值小于其阈值时,暂时将其链路设置为不可用,避免将其继续分配给新到来的流:所述的步骤四中重新选路,具体为:(1)控制器周期性地获取了底层信息,假设已达到拥塞避免阈值,则找出需要控制流量的链路,找出需要控制流量的链路上的交换机,并通过控制器查出这些交换机上的流表,根据流表信息获取流的源节点和目的节点。(2)由选路算法为这些需求进行重新选路,重新下发流表,并将旧流表删除;当下发了流表时,规定其生命时间timeout为t,即流表项的idle_time字段设置为t;当长时间未有流到来,t时间过后,对应的流表被自动删除;若有流到来,则将其存在时间重新归零;由此,已存在的流表即说明近期有该流表对应的流到来,当控制器要重新进行流表下发的时候,通过这些流表项找寻对应的需求。(3)当有流请求到来并查询不到对应流表的时候,通过packet_in消息将流的需求告知算法,算法计算并通过控制器下发流表。所述的步骤四中重新选路时,针对sdn环境做了如下改进:(1)进行选路时,控制所选路径为最短路径的x(可由网络管理人员进行配置)倍范围内,从而防止过多绕路,避免传输时延过高。(2)通过选路时,在满足条件的基础上尽可能多地和旧路径重合,从而防止大量流表下发而引起的南向接口拥塞。(3)通过最短路径进行选路时,同时结合底层链路状态进行判断,选取满足条件的最短路径。参考图7,图中为openflowv3.0中流表项结构。通过流表可以将算法计算出的结果下发给底层交换机,通过对流表的查询和修改可以辅助算法的执行。具体如下,设置流表可以通过交换机超时删除,若我们查询到某流表还在交换机中,说明该流表服务的流正在传输或刚结束传输,如此通过查询流表的匹配域字段,可得到源节点和目的节点,通过流表项的查询,算法获取了那些流需求需要重新规划路径。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1