【技术实现步骤摘要】
基于差分检测的控制平面故障诊断系统及其实现方法
本专利技术属于计算机互联网领域,具体内容涉及一种软件定义网络中的基于差分检测的控制平面故障诊断系统及其实现方法。
技术介绍
软件定义网络(SDN)是一种新型的网络架构,相比于传统七层网络架构,SDN核心的设计在于将控制平面与转发平面分离,将网络自上而下分为应用层、控制层及转发层。网络的所有配置及管理均由控制器集中处理,而转发层的设备仅负责高效转发流量。SDN中网络的集中控制极大地简化了网络管理员的工作,灵活可编程性为上层应用开发提供了广阔空间。SDN控制器是复杂的多模块的分布式软件系统,由于SDN通过控制平面和转发平面的分离将网络的复杂性都提取到了控制平面,SDN控制器具有复杂的软件架构和事务处理流程,这使得它非常容易出现软件bug、逻辑错误和各种异常情况。尽管控制器的每个稳定版本发布前都经过了一系列复杂的测试,在实际的生产环境中,软件bug和异常还是不可避免的。SDN网络中,控制器处于极度重要的核心位置,控制平面的软件错误会对整个网络的正常工作造成严重的影响。其中,除了转发层的故障主要来自于交换机中的硬件和位于交换机中的软件agent外,其他故障多来自控制平面。当前的控制平面中不仅存在SDN控制器,也集成了许多SDN应用平面的agent,架构和逻辑更加复杂,容易出现各种软件错误,影响网络的正常功能。目前,SDN的主要应用场景是数据中心,运营商和云服务领域也在努力的研究、利用和融合SDN的优势。数据中心、运营商对网络服务的质量要求非常高,极其重视网络的可靠性。在这种场景下,极小的软件bug也可能会造成非常严重 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。