一种高可靠性的细粒度SDN流量监控架构的制作方法

文档序号:12865916阅读:1237来源:国知局
一种高可靠性的细粒度SDN流量监控架构的制作方法与工艺

本发明涉及计算机网络监控架构的技术领域,特别涉及一种高可靠性的细粒度sdn流量监控架构,将软件定义网络下的流量监控架构进行了创新和扩展,与如今深度学习技术相结合。



背景技术:

现代的数据中心网络运转在大规模的数据交换计算之上,承载着海量业务如虚拟云计算、大数据应用、数据中心服务以及多媒体传输等,传统网络还依赖于网络管理员来处理网络瞬变问题已经不够及时例如网络拥塞是随着网络负载动态的变化,同时传统网络很难获取全网信息,这就难以为动态的进行网络流量调度提供高效和可靠性保证。

因此针对传统网络的诸多弊端,下一代网络ngn(nextgenerationnetwork)技术应运而生,其中软件定义网络sdn(softwaredefinednetwork)作为一种比较有代表性的技术受到了业界的广泛关注。sdn网络解耦了控制平面和数据平面使其具有高效和灵活的网络管理能力。这种网络架构提供了一种集中化的控制通过下发流表允许路由器和交换机以其线路的速率处理网络流量而不引入比较明显的额外开销(根据实现的具体架构一定程度上也会引入额外开销);同时控制器可以通过控制通道实时的管控网络。sdn技术适用于当下广泛多样的网络类型,因此在众多研究机构和工业公司的推广下发展的越来越快。

sdn网络最突出的特性就是全网控制,要实现高效和准确的网络控制必须以高效和准确获取全网信息为前提,因此sdn的网络监控技术是决定sdn网络架构整体性能的第一步。现如今的snd网络流量监控技术主要有以下几点缺陷:

(1)由于高频率的流统计量队列会在控制器引入监控开销。

(2)流量监控与转发使用相同的流表而产生了非灵活性的问题,同时用于监控目的的包特征与用于转发目的的包特征不总是相同或者是重叠的。

(3)由于目前硬件交换机的有限容量使得流条目数目非常的有限进而引入了可靠性问题,当流表数量过大时容易造成路由器流表拥塞。



技术实现要素:

为了克服上述现有技术的缺陷,本发明的目的在于提供一种高可靠性的细粒度sdn流量监控架构,通过独有的控制与转发相分离的特点,提高了全网的管控能力,在提高了转发效率的同时又提升了故障恢复及预测和负载均衡等能力。

为了达到上述目的,本发明的技术方案为:

一种高可靠性的细粒度sdn流量监控架构,将sdn网络的监控与转发功能相分离,流量监控架构包括三层:控制器侧、流信息处理层和交换机侧;最上层是控制器侧,包含了控制器命令解析器和流特征选择器,负责根据控制器对监控流信息的需求对流特征集合进行学习和挖掘,提取出控制器所需的流统计信息,为其转发决策提供数据来源;流信息处理层负责对流量的初始信息进行过滤,提取出所需的统计量进而生成流特征集合,为上层控制器侧的流特征选择提供数据源;最下层为交换机侧,由本地控制应用和监控数据库组成,负责根据控制器的监控要求过滤和存储监控流的流条目;流量监控架构包含两种开放的应用程序接口:监控处理器的控制器侧和sdn控制器之间的数据交换和指令下发接口以及监控处理器的交换机侧与交换机之间的数据交换和参数设置接口。

所述的控制器侧由控制器命令解析器和流特征选择器组成,实现了对控制器下发命令的解析和流特征的选取,在本架构中控制器对监控处理器下发命令主要有两类:一类是控制器根据其监控需求对交换机侧的某条流进行是否采样的判断命令,经控制器命令解析器解析后会送达交换机侧的本地控制应用,用于控制流过滤和流采样;另一类是控制器根据其监控需求对控制器侧的流选择器进行流特征提取的选择命令,直接控制控制器侧的流特征选择器进行流特征的机器学习和数据挖掘;流特征选择器提取出的选定流特征统计量直接通过监控处理器与控制器的数据交换接口进行传递。

所述的流特征选择器的原理是深度学习,通过训练集和测试集的自学习过程产生流特征当前的统计量和预测量,进而对流进行分类:流特征选择器根据中、下层产生的流通特征集合按照控制器的要求进行流特征的筛选,进而通过深度学习的算法对按照选定的流特征对流进行分类,将分类后的流量信息传递给控制器为其转发提供决策。流特征选择器包括三个模块:(1)流特征格式化器:其作用是将流集合内的统计信息按照特征选择算法形成训练集和测试集;(2)特征选择器:根据控制器要求选择相应的流特征集合,中间的流信息处理层所产生的流特征集合是所有流统计量的集合,特征选择器按照控制器给定的特征在此集合中选择出相应特征的子集;(3)流分类器:分类器通过特征选择器产生的训练集进行分类算法的训练,之后用测试集进行验证对监控的数据流进行分类,最后将分类后的结果传回控制器,使控制器根据分类结果进行下一步的流调度。

所述的流信息处理层由流特征过滤器、统计量生成器以及流特征集合三个模块组成,流特征过滤器的功能主要是将监控数据库的流条目进行过滤,剔除无效监控条目,控制器规定流经某个交换机的某个端口的流都进行监控,由于网络环境的复杂性引起的扰动可能形成无效的数据包被误认为是有效流被监控,因此通过多种的有效性检查使得过滤后的监控数据都是可靠的,之后经由统计量生成器将流统计量提取分类后形成流特征集合,供上层控制器侧进行下一步的流分类。

所述的交换机侧由监控处理器的本地控制应用(localcontrolapplication)和监控数据库两部分组成,本地控制应用的作用主要是根据sdn控制器的监控要求对路由器的流监控进行参数设置和过滤,其中通过布隆过滤器(bloomfilter)过滤掉不需要监控的流数据包(是否进行流监控由控制器的监控需求决定),由此减少监控的流数目并增强了流监控的灵活性和准确性;监控数据库负责存储匹配控制器监控需求的流信息和包统计值,监控数据库数据表由三部分内容组成:监控匹配域、包计数值和哈希值(hashcode),监控数据库的流统计量会周期性的发送至流信息处理层进行流信息的处理。

所述的交换机侧,其监控进程的工作流步骤如下:

当交换机的流到达监控处理器交换机侧的本地控制应用后,首先会检查相应的流条目是否存在于布隆过滤器中,如果存在,证明该流是不需要进行监控的,因此之后到来的数据包都会被本地控制应用跳过;如果不存在于布隆过滤器中,则证明该流是已经受监控的流或者是新达到的流,需要再进行判断;此时会在监控数据库的监控表中再次进行查找,如果查找到了流条目证明该条流正在受监控,此时更新该流计数器的值,如果在监控表中没有查找到相应的流条目,本地控制应用根据控制器的监控规则决定是否对该条流进行采样;如果不进行采样,则在布隆过滤器中添加此流条目,这条流之后的数据直接过滤,如果进行采样则在监控表添加该流。

所述的监控处理器的控制器侧和sdn控制器之间的数据交换和指令下发接口,定义如下:

(1)controllercommondmessage(controllermessage):该接口用于sdn控制器对监控处理器下发命令,该接口封装了多条控制器命令,将会由监控处理器控制器侧的命令解析器对控制器命令进行解析,如权利要求3中所述sdn控制器的命令分为对流选择器的流特征设置和对交换机侧的流监控设置,解析器将控制器命令解析后会分别传送至流特征选择器和交换机侧的本地应用控制。

(2)flowfeaturestatistic(flowid,classification):该接口用于特征选择器按照控制器的流监控指令对受监控的流进行分类将所产生的流分类后信息传送回控制器,包含流的标志和分类结果。

所述的监控处理器的交换机侧与交换机之间的数据交换和参数设置接口,定义如下:

(1)setmonitoringparameter(monitoringmatchfields,counterbuffersize,switchid,entryid):该接口用于设置监控参数,是控制器的命令之一,由控制器层命令解析器解析后传至交换机侧的本地控制应用,该接口用于设置监控匹配域、计数器缓存大小、交换机id、端口id的参数值;

(2)cutmonitoringentry(monitoringmatchfields,switchid,entryid):该接口用于停止对某一端口的某条流进行监控;

(3)setsamplingradio(samplingvalue,switchid,entryid):该接口用于设置端口采样速率。

本发明提出的高可靠性的细粒度sdn流量监控架构主要通过引入监控处理器这一独立于sdn控制器和交换机的机制,实现了sdn控制器监控与转发的相互分离,使控制器只承担转发业务,而监控处理器负责流量的过滤、监控、处理并根据控制器下发的流统计量需求为控制器提供全网信息的反馈。极大的减轻了sdn控制器的处理负荷,监控处理器通过自定义的api(应用程序接口)与sdn控制器和交换机进行通信,使其独立于特定的sdn网络应用,实现了跨平台的特性,这种轻量级的监控机制使得监控数据的存储与处理模块化,同时减轻了sdn交换机的流表存储压力。由于类似于中间件的独立于特定业务和控制平面的监控机制,增加了该架构的可移植性和扩展性,通过用户程序接口的开发还以达到对监控处理器的可编程化。

相比于传统流量监控架构本架构具有如下特点:

(1)高可靠性:采用了第三方形式的监控模块,通过应用程序接口与sdn网络进行通信,独立于特定业务和网络架构。根据实际网络的复杂度可以进行灵活性的扩展,对监控数据的分析计算采用了分布式的方式,极大的减轻了控制器的计算压力。

(2)细粒度:传统的流量监控架构仅仅根据底层协议(如sdn网络下南向接口openflow)自带的监控字段进行监控,sdn网络下一般只监控流端口计数器的值,根据数据包的多少进行简单的流特征判断,本架构的细粒度监控体现在对流特征的挖掘不仅仅只依赖于端口计数器,而是统计多种流特征,根据特定网络的环境、规模、业务特征、性能指标进行不同特征的提取和挖掘,使得监控结果更精确。

(3)可扩展性:这种插件式的架构还可进行功能和规模扩展,监控处理器上可以实现更多的业务需求,只需要开发新的应用程序接口就可以,监控处理器实现的功能对控制器而言是透明的,控制器仅需要下发命令和交换数据。监控处理器可以根据实际网络的复杂度进行数量扩展。

附图说明

图1是高可靠性的细粒度sdn流量监控架构结构示意图。

图2是监控处理器三层结构示意图。

图3是流特征选择器结构示意图。

图4是交换机侧结构示意图。

图5是流监控流程示意图。

具体实施方式

下面结合附图和实例对本发明进行详细的描述。

参照图2,一种高可靠性的细粒度sdn流量监控架构,将sdn网络的监控与转发功能相分离,流量监控架构包括三层:控制器侧、流信息处理层和交换机侧;最上层是控制器侧,包含了控制器命令解析器和流特征选择器,负责根据控制器对监控流信息的需求对流特征集合进行学习和挖掘,提取出控制器所需的流统计信息,为其转发决策提供数据来源;流信息处理层负责对流量的初始信息进行过滤,提取出所需的统计量进而生成流特征集合,为上层控制器侧的流特征选择提供数据源;最下层为交换机侧,由本地控制应用和监控数据库组成,负责根据控制器的监控要求过滤和存储监控流的流条目;流量监控架构包含两种开放的应用程序接口:监控处理器的控制器侧和sdn控制器之间的数据交换和指令下发接口以及监控处理器的交换机侧与交换机之间的数据交换和参数设置接口。

所述的控制器侧由控制器命令解析器和流特征选择器组成,实现了对控制器下发命令的解析和流特征的选取,在本架构中控制器对监控处理器下发命令主要有两类:一类是控制器根据其监控需求对交换机侧的某条流进行是否采样的判断命令,经控制器命令解析器解析后会送达交换机侧的本地控制应用,用于控制流过滤和流采样;另一类是控制器根据其监控需求对控制器侧的流选择器进行流特征提取的选择命令,直接控制控制器侧的流特征选择器进行流特征的机器学习和数据挖掘;流特征选择器提取出的选定流特征统计量直接通过监控处理器与控制器的数据交换接口进行传递。

控制器侧作为监控处理器顶层主要作用是通过分离计算业务减轻控制器与交换机的大量数据交换,通过顶层的流特征选择器最终仅向控制器提供流量监控的统计量和预测量,控制器主要功能只承担控制和转发策略。所有与监控相关的数据全部经由监控处理器进行处理和计算,通过监控与转发数据的分离,极大地提高了网络整体的可靠性。

所述的流特征选择器的原理是深度学习,通过训练集和测试集的自学习过程产生流特征当前的统计量和预测量,进而对流进行分类:流特征选择器根据中、下层产生的流通特征集合按照控制器的要求进行流特征的筛选,进而通过深度学习的算法对按照选定的流特征对流进行分类,将分类后的流量信息传递给控制器为其转发提供决策。流特征选择器包括三个模块,如图3所示,:(1)流特征格式化器:其作用是将流集合内的统计信息按照特征选择算法形成训练集和测试集;(2)特征选择器:根据控制器要求选择相应的流特征集合,中间的流信息处理层所产生的流特征集合是所有流统计量的集合,特征选择器按照控制器给定的特征在此集合中选择出相应特征的子集;(3)流分类器:分类器通过特征选择器产生的训练集进行分类算法的训练,之后用测试集进行验证对监控的数据流进行分类,最后将分类后的结果传回控制器,使控制器根据分类结果进行下一步的流调度。

所述的流信息处理层由流特征过滤器、统计量生成器以及流特征集合三个模块组成,流特征过滤器的功能主要是将监控数据库的流条目进行过滤,剔除无效监控条目,控制器规定流经某个交换机的某个端口的流都进行监控,由于网络环境的复杂性引起的扰动可能形成无效的数据包被误认为是有效流被监控,因此通过多种的有效性检查使得过滤后的监控数据都是可靠的,之后经由统计量生成器将流统计量提取分类后形成流特征集合,供上层控制器侧进行下一步的流分类。

所述的交换机侧由监控处理器的本地控制应用(localcontrolapplication)和监控数据库两部分组成,如图4,本地控制应用的作用主要是根据sdn控制器的监控要求对路由器的流监控进行参数设置和过滤,其中通过布隆过滤器(bloomfilter)过滤掉不需要监控的流数据包(是否进行流监控由控制器的监控需求决定),由此减少监控的流数目并增强了流监控的灵活性和准确性;监控数据库负责存储匹配控制器监控需求的流信息和包统计值,监控数据库数据表由三部分内容组成:监控匹配域、包计数值和哈希值(hashcode),监控数据库的流统计量会周期性的发送至流信息处理层进行流信息的处理。

在交换机侧引入布隆过滤器具有相比于其它的数据结构,其空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数。另外,hash函数相互之间没有关系,方便由硬件并行实现。布隆过滤器不需要存储元素本身;布隆过滤器需要的是一个位数组(这个和位图有点类似)和k个映射函数(和hash表类似),在初始状态时,对于长度为m的位数组array,它的所有位都被置为0。对于有n个元素的集合s={s1,s2......sn},通过k个映射函数{f1,f2,......fk},将集合s中的每个元素sj(1<=j<=n)映射为k个值{g1,g2......gk},然后再将位数组array中相对应的array[g1],array[g2]......array[gk]置为1;如果要查找某个元素item是否在s中,则通过映射函数{f1,f2.....fk}得到k个值{g1,g2.....gk},然后再判断array[g1],array[g2]......array[gk]是否都为1,若全为1,则item在s中,否则item不在s中。因此根据控制器的流监控命令,将不需要监控的流条目映射到布隆过滤器中,这样之后该流的数据包都会被布隆器监测到并过滤掉。降低了监控的数据量和复杂度。

所述的交换机侧,其监控进程的工作流步骤如下,如图5所示:

当交换机的流到达监控处理器交换机侧的本地控制应用后,首先会检查相应的流条目是否存在于布隆过滤器中,如果存在,证明该流是不需要进行监控的,因此之后到来的数据包都会被本地控制应用跳过;如果不存在于布隆过滤器中,则证明该流是已经受监控的流或者是新达到的流,需要再进行判断;此时会在监控数据库的监控表中再次进行查找,如果查找到了流条目证明该条流正在受监控,此时更新该流计数器的值,如果在监控表中没有查找到相应的流条目,本地控制应用根据控制器的监控规则决定是否对该条流进行采样;如果不进行采样,则在布隆过滤器中添加此流条目,这条流之后的数据直接过滤,如果进行采样则在监控表添加该流。

所述的监控处理器的控制器侧和sdn控制器之间的数据交换和指令下发接口,定义如下:

(1)controllercommondmessage(controllermessage):该接口用于sdn控制器对监控处理器下发命令,该接口封装了多条控制器命令,将会由监控处理器控制器侧的命令解析器对控制器命令进行解析,如权利要求3中所述sdn控制器的命令分为对流选择器的流特征设置和对交换机侧的流监控设置,解析器将控制器命令解析后会分别传送至流特征选择器和交换机侧的本地应用控制。

(2)flowfeaturestatistic(flowid,classification):该接口用于特征选择器按照控制器的流监控指令对受监控的流进行分类将所产生的流分类后信息传送回控制器,包含流的标志和分类结果。

所述的监控处理器的交换机侧与交换机之间的数据交换和参数设置接口,定义如下:

(1)setmonitoringparameter(monitoringmatchfields,counterbuffersize,switchid,entryid):该接口用于设置监控参数,是控制器的命令之一,由控制器层命令解析器解析后传至交换机侧的本地控制应用,该接口用于设置监控匹配域、计数器缓存大小、交换机id、端口id的参数值。

(2)cutmonitoringentry(monitoringmatchfields,switchid,entryid):该接口用于停止对某一端口的某条流进行监控。

(3)setsamplingradio(samplingvalue,switchid,entryid):该接口用于设置端口采样速率。

本发明网络实例图如图1所示,sdn网络的可编程性体现在从数据层到控制层再到应用层的各个功能模块,这种可编程能力有效的改善了传统网络灵活性差、面向特定业务的qos(服务质量)保证适应性差等弊端。sdn的全网管控能力必须建立在高效、低耗以及准确的全网流量信息采集和分析架构之上,针对当前sdn流量监控架构中出现的高开销、低可靠性以及粗粒度的监控以及分析模式,本架构通过引入监控处理器这种轻量级的监控模块对sdn网络进行流量监测,监控处理器通过控制器与监控处理器接口api与控制器连接,通过交换机与控制器接口api与交换机组连接,通过这种开放使的接口,控制器可以下发监控命令,监控处理器同时也通过该类接口实现与控制器和交换机的数据交换。

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