当前位置: 首页 > 专利查询>浙江大学专利>正文

基于差分检测的控制平面故障诊断系统及其实现方法技术方案

技术编号:21458093 阅读:59 留言:0更新日期:2019-06-26 06:11
本发明专利技术公开了一种差分检测的控制平面故障诊断系统及其实现方法。本发明专利技术包括数据采集模块、在线监控模块、离线故障诊断模块和网络事件重放引擎。通过在线监控模块和数据采集模块,获取控制器内部的代码调用、状态变化信息,构建上下文感知的系统行为模型;当前系统无异常时,提取系统行为模型存入参考库中,作为参考模型;当系统发现异常时,根据故障的症状找到发生故障的系统行为模型以及对应的参考模型;随后从上向下地对其进行差分比对,找出异常节点;然后在异常节点处进行静态分析,在代码层面找出故障发生的根源,在模拟环境中通过网络事件重放引擎确认之后,作为故障诊断报告,提交给管理员。本发明专利技术能够对故障根源进行定位,且适用性强。

【技术实现步骤摘要】
基于差分检测的控制平面故障诊断系统及其实现方法
本专利技术属于计算机互联网领域,具体内容涉及一种软件定义网络中的基于差分检测的控制平面故障诊断系统及其实现方法。
技术介绍
软件定义网络(SDN)是一种新型的网络架构,相比于传统七层网络架构,SDN核心的设计在于将控制平面与转发平面分离,将网络自上而下分为应用层、控制层及转发层。网络的所有配置及管理均由控制器集中处理,而转发层的设备仅负责高效转发流量。SDN中网络的集中控制极大地简化了网络管理员的工作,灵活可编程性为上层应用开发提供了广阔空间。SDN控制器是复杂的多模块的分布式软件系统,由于SDN通过控制平面和转发平面的分离将网络的复杂性都提取到了控制平面,SDN控制器具有复杂的软件架构和事务处理流程,这使得它非常容易出现软件bug、逻辑错误和各种异常情况。尽管控制器的每个稳定版本发布前都经过了一系列复杂的测试,在实际的生产环境中,软件bug和异常还是不可避免的。SDN网络中,控制器处于极度重要的核心位置,控制平面的软件错误会对整个网络的正常工作造成严重的影响。其中,除了转发层的故障主要来自于交换机中的硬件和位于交换机中的软件agent外,其他故障多来自控制平面。当前的控制平面中不仅存在SDN控制器,也集成了许多SDN应用平面的agent,架构和逻辑更加复杂,容易出现各种软件错误,影响网络的正常功能。目前,SDN的主要应用场景是数据中心,运营商和云服务领域也在努力的研究、利用和融合SDN的优势。数据中心、运营商对网络服务的质量要求非常高,极其重视网络的可靠性。在这种场景下,极小的软件bug也可能会造成非常严重的后果。当控制器软件平台出现问题时,由于目前控制平面的关键数据收集、异常检测、识别和定位机制并不完善,使用目前的技术进行诊断是困难的。当前对SDN控制器等复杂的多模块分布式软件系统的故障识别和诊断大多通过人工分析大量系统日志的方法来发现并定位问题,然而,对系统日志进行诊断存在数据量大,理解和分析困难的问题,甚至有的错误并不能在日志中得到体现。根据一项研究[1],一般来说,软件开发人员大约花费一半的时间(49%)进行故障诊断和调试,诊断难以触发的bug需要更多的时间,而且70%的已报告的并发bug需要数天到数月才能被修复。产业界的实际情况也是如此。对于开源的SDN控制器,目前的故障诊断方式依赖于它们开源社区的贡献者,用户发现和提出故障,开发者需要远程地重现故障,理解并修复故障。这使得故障的生命周期不可控,解决的时间较长。如OpenDaylight中75%的故障需要一个月以上的时间来诊断和修复。学术界对SDN中的故障诊断方面有一定的研究,但都不能很好的解决上述问题。STS[2]使用黑盒测试的方法排查SDN控制器中的故障,并输出一组最小的能够触发故障的外部事件(e.g.,linkfailures)的输入序列(MCS)。它通过利用HSA实现网络常量检测来检测网络中的常量冲突,然后通过重放日志文件中的记录的外部事件还原出该冲突,并利用增量调试删减无关外部事件,生成最小输入序列。STS可以用于排查出控制器中一些已知(e.g.,Floodlightfailover,ONOSMasterElection)和未知(e.g.,POXPrematurePacketIn,ONOSdatabaselocking,NOXdiscoveryloop,POXMigrationBlackhole)的故障。然而,STS诊断效率很低,利用增量调试的方式找出MCS需要几个甚至十几个小时;生成的MCS作为可触发故障的事件序列可以用来描述故障,但是不能够描述出故障的根本原因,仍需要开发者进一步分析;而且,它的使用场景为测试环境,不能及时处理真实生产环境中出现的问题。JURY[3]也是一个使用黑盒测试的诊断工具,主要目标是检测出SDN控制器集群中不同控制器之间的行为差异。它通过输入相同的外部事件,验证各个控制器之间是否具有一致的输出行为,能够发现如ONOSdatabaselocking,masterelection,UndesirableFLOW_MOD等故障。但是JURY针对的目标问题有限,而且也不能指出具体的故障根源。一些研究方案[4-6]使用形式化的方式(如Modelchecking、SATsolver、SymbolicExecution等)来验证网络策略或者抽象的代码模型的正确性。然而他们依赖手动或者静态分析来对网络策略和代码进行建模,这通常需要较高的时间开销,容易出错,并且难以处理网络行为的动态变化和网络软件的频繁更新。综上所述,在SDN中缺少可以在实际生产环境中有效诊断控制平面软件故障和异常的机制。相关的故障诊断技术虽能有效指出部分存在的问题,但是无法进行故障根源的定位,指出故障发生的具体环节,使用的场景和针对的问题也缺少通用性。因此,本专利技术要解决的问题就是设计一个高效的控制平面故障诊断系统,实现对SDN控制平面软件错误导致的实际网络问题的高效的诊断和相应故障根源的精确定位。
技术实现思路
本专利技术的目的是针对现有技术的不足,提供一种差分检测的控制平面故障诊断系统及其实现方法。本专利技术解决其技术问题所采用的技术方案如下:基于差分检测的控制平面故障诊断系统,包括数据采集模块、在线监控模块、离线故障诊断模块和网络事件重放引擎,具体模块描述如下:数据采集模块:负责监测SDN控制平面的行为,记录系统可见的执行信息;能够动态加载到控制器上而不需要对控制器的代码进行修改,进行低开销的高效的动态数据采集;在线监控模块:在生产环境中对系统状态进行动态监测,收集来自数据采集模块的数据,从中构造系统行为模型;并将正常状态下的系统行为模型作为参考模型,用于与对应的异常行为模型进行差分检测,进行故障诊断;离线故障诊断模块:根据故障的症状找到发生故障的系统行为模型以及对应的参考模型,随后进行差分检测和根因分析,生成故障诊断报告;网络事件重放引擎:基于代码的网络事件重放引擎,负责仿真拓扑结构,模拟数据平面的网络设备和应用平面中发送消息的网络应用,根据输入的重放策略生成相应的网络拓扑和产生特定的消息序列;通过调整消息的类型和组成序列,重现出SDN网络异常,辅助异常诊断算法进行异常诊断和定位;首先通过在线监控模块,利用在控制平面中部署的数据采集模块,获取控制器内部的代码调用、状态变化信息,构建上下文感知的系统行为模型;当前系统无异常时,提取系统行为模型存入参考库中,作为参考模型;当系统发现异常时,根据故障的症状找到发生故障的系统行为模型以及对应的参考模型;随后从上向下地对其进行差分比对,找出异常节点;然后在异常节点处进行静态分析,在代码层面找出故障发生的根源,在模拟环境中通过网络事件重放引擎确认之后,作为故障诊断报告,提交给管理员。基于差分检测的控制平面故障诊断系统的实现方法,包括如下步骤:步骤1、基于字节码插桩的数据监测和收集机制;步骤2、上下文感知的系统行为模型构建机制;步骤3、基于差分检测的故障诊断算法。与现有技术相比,本专利技术优点有以下几点显著的优势:1)本专利技术能够实现对生产环境中,由SDN控制平面软件错误导致的实际网络问题的高效诊断和相应故障根源的精确定位。2)本专利技术设计了基于字节码插桩的数据监测和收集机本文档来自技高网
...

【技术保护点】
1.基于差分检测的控制平面故障诊断系统,其特征在于包括数据采集模块、在线监控模块、离线故障诊断模块和网络事件重放引擎,具体模块描述如下:数据采集模块:负责监测SDN控制平面的行为,记录系统可见的执行信息;能够动态加载到控制器上而不需要对控制器的代码进行修改,进行低开销的高效的动态数据采集;在线监控模块:在生产环境中对系统状态进行动态监测,收集来自数据采集模块的数据,从中构造系统行为模型;并将正常状态下的系统行为模型作为参考模型,用于与对应的异常行为模型进行差分检测,进行故障诊断;离线故障诊断模块:根据故障的症状找到发生故障的系统行为模型以及对应的参考模型,随后进行差分检测和根因分析,生成故障诊断报告;网络事件重放引擎:基于代码的网络事件重放引擎,负责仿真拓扑结构,模拟数据平面的网络设备和应用平面中发送消息的网络应用,根据输入的重放策略生成相应的网络拓扑和产生特定的消息序列;通过调整消息的类型和组成序列,重现出SDN网络异常,辅助异常诊断算法进行异常诊断和定位;首先通过在线监控模块,利用在控制平面中部署的数据采集模块,获取控制器内部的代码调用、状态变化信息,构建上下文感知的系统行为模型;当前系统无异常时,提取系统行为模型存入参考库中,作为参考模型;当系统发现异常时,根据故障的症状找到发生故障的系统行为模型以及对应的参考模型;随后从上向下地对其进行差分比对,找出异常节点;然后在异常节点处进行静态分析,在代码层面找出故障发生的根源,在模拟环境中通过网络事件重放引擎确认之后,作为故障诊断报告,提交给管理员。...

【技术特征摘要】
1.基于差分检测的控制平面故障诊断系统,其特征在于包括数据采集模块、在线监控模块、离线故障诊断模块和网络事件重放引擎,具体模块描述如下:数据采集模块:负责监测SDN控制平面的行为,记录系统可见的执行信息;能够动态加载到控制器上而不需要对控制器的代码进行修改,进行低开销的高效的动态数据采集;在线监控模块:在生产环境中对系统状态进行动态监测,收集来自数据采集模块的数据,从中构造系统行为模型;并将正常状态下的系统行为模型作为参考模型,用于与对应的异常行为模型进行差分检测,进行故障诊断;离线故障诊断模块:根据故障的症状找到发生故障的系统行为模型以及对应的参考模型,随后进行差分检测和根因分析,生成故障诊断报告;网络事件重放引擎:基于代码的网络事件重放引擎,负责仿真拓扑结构,模拟数据平面的网络设备和应用平面中发送消息的网络应用,根据输入的重放策略生成相应的网络拓扑和产生特定的消息序列;通过调整消息的类型和组成序列,重现出SDN网络异常,辅助异常诊断算法进行异常诊断和定位;首先通过在线监控模块,利用在控制平面中部署的数据采集模块,获取控制器内部的代码调用、状态变化信息,构建上下文感知的系统行为模型;当前系统无异常时,提取系统行为模型存入参考库中,作为参考模型;当系统发现异常时,根据故障的症状找到发生故障的系统行为模型以及对应的参考模型;随后从上向下地对其进行差分比对,找出异常节点;然后在异常节点处进行静态分析,在代码层面找出故障发生的根源,在模拟环境中通过网络事件重放引擎确认之后,作为故障诊断报告,提交给管理员。2.根据权利要求1所述的基于差分检测的控制平面故障诊断系统的实现方法,其特征在于包括如下步骤:步骤1、基于字节码插桩的数据监测和收集机制;步骤2、上下文感知的系统行为模型构建机制;步骤3、基于差分检测的故障诊断算法;所述的步骤1具体实现如下:利用字节码插桩方式来实现动态系统行为跟踪;并设计有基于规则的代码插桩语言来简化动态跟踪的配置;通过对控制器进行插桩,收集控制层面的各类代码执行的行为信息、资源消耗和调用状态,具体的实现方式和工作流程为:1-1.实现可配置的数据采集模块,并部署在SDN控制器中;1-2.在线监控模块提供插桩规则,数据采集模块根据接收到插桩规则对控制器的字节码相关位置根据插桩规则插入用于记录调用关系的字节码,添加负责运行时数据采集的代码;即记录调用方法、被调用方法、被调用方法的参数以及调用起止时间的数据信息;1-3.在SDN控制器的实际运行中,数据采集模块收集系统的调用信息数据,并发送给外部的在线监控模块,用于构建系统行为模型。3.根据权利要求2所述的基于差分检测的控制平面故障诊断系统的实现方法,其特征在于所述的插桩规则具体如下:插桩规则是一个由match和action组成的二元数组;其中match用于匹配字节码,定位插入代码的具体位置,match字段由三个名称子字段和一个位置子字段组成,三个名称子字段分别为module、class和method,一个位置子字段为callsite;三个名称子字段遵循面向对象编程软件的模块化代码层次结构,用来将插桩规则定位到具体的函数代码段中,定位到具体的函数后,利用位置子字段进一步匹配到该函数具体的代码行;位置子字段由代码行数、指令、以及位置前后信息组成;action用于定义需要记录的代码运行相关的数据,包括线程号、时间戳、调用类型和变量数值;在进行插桩时,TraceAgent会将插桩规则翻译成字节码插桩工具所需要的语言,并利用这些工具进行插桩。4.根据权利要求3所述的基于差分检测的控制平面故障诊断系统的实现方法,其特征在于步骤2具体实现如下:2-1.构建树状跟踪图:图节点:每当从数据采集模块中获得一条跟踪消息,首先将该跟踪消息转换成跟踪图中的节点;每条消息都是由对应的插桩规则产生的,每条插桩规则定义了一类跟踪消息的结构和数据类型,因而每类跟踪消息抽象为一个模板;该模板由一系列不变的关键字和变量名组成;对于同一个类型的消息,它们之间的差别是这些关键字和变量所对应的参数值的不同;从消息中提取这些参数值,并用已有的模板来构建图节点;链状图:由于来自于多个任务不同的操作的节点混杂在一起,首先利用线程ID来区分;利用每个操作都有初始节点和结束节点的特点,将来自于不同的操作的节点区分出来;进而按照节点的时间先后关系构建成调用链,既链状图;树状跟踪图:根据每个操作的链状图,找出它们之间的异步调用关系,将来自同一个任务的链状图关联成该任务的跟踪图,既树状图;通过代码分析找出所有可能的异步调用发起点,当接收到一条异步调用发起点的跟踪消息时,构建一个多维的数组来定义一个异步调用的存在,其中包含了该发起者的时间类型、线程号、链状图的位置、时间戳、参数集合的哈希值以及链状图在上级父图中的位置;同时为新到来的异步接受消息生成同样的数组,并与已有的数据进行多个维度的多模匹配,进而确认两者的异步调用关系,最终将两者连接起来,构建为一个完整的跟踪图;2-2.将每个跟踪图转换为一个有限状态机来表示;有限状...

【专利技术属性】
技术研发人员:陈焰于银菠李星卜凯杨剑锋冷雪
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1