应用于软件定义网络的控制器负载预测系统及方法与流程

文档序号:12622677阅读:222来源:国知局
应用于软件定义网络的控制器负载预测系统及方法与流程

本发明涉及计算机网络技术领域,尤其涉及一种应用于软件定义网络的控制器负载预测系统及方法。



背景技术:

软件定义网络(Software Defined Network,SDN)将传统网络中的控制平面和数据平面解耦,使得集中化的控制器拥有全局视图,并对整个网络进行管控。然而,这种集中化的管控,对控制平面的可扩展性提出了挑战,特别是在大规模的网络中,单控制器可能无法处理数目巨大的网络流请求,造成处理时延增大,甚至出现控制器的宕机和失效。为了解决该问题,业界提出了多控制器架构,即由多控制器组成逻辑上一致的控制平面,由控制平面提供统一的处理资源。

图1示出了多控制器下的SDN,如图1所示,在多控制器的情形下,控制平面中控制器之间的负载极易出现不均衡现象。对于多控制器的负载均衡问题,目前主要有三种解决方案:一、借鉴传统的服务器集群负载均衡思想,在控制平面和转发平面中间增加一个负载均衡器,由负载均衡器采用某种策略,分发给实际的控制器。二、采用流量重定向的方式,通过在交换机中以主动或被动的方式安装流表项,将流请求重定向给其它控制器,减少过载控制器的负载。三、采用交换机迁移策略,将过载控制器的部分负载分摊给闲置的控制器处理。

然而,在上述负载均衡解决方案中,都是在控制器出现过载后,才进行相应调整。由于控制器已经处于过载,大量请求得不到处理,这使流表的建立时间大幅提升,网络中的流量出现较大的延时和丢包,给终端用户带来较差的用户体验。

因此,需要一种应用于软件定义网络的控制器负载预测系统及方法,对控制器的运行情况进行监控,并预测其负载情况。在控制器出现过载前,即进行控制器间的负载策略调整。



技术实现要素:

本发明提供一种应用于软件定义网络的控制器负载预测系统及方法,能够在控制器出现过载导致整体处理性能下降之前,对控制器的负载情形进行预测,根据预测结果对控制平面进行负载动态调整,从而使控制平面中多控制器间的负载更为均衡,资源利用率大大提高。

本发明一方面提供一种应用于软件定义网络的控制器负载预测系统,包括:数据采集单元、模型建立单元及负载预测单元;其中,数据采集单元用于采集软件定义网络SDN中控制器的运行数据,向模型建立单元与负载预测单元发送;所述运行数据包括历史数据与实时数据;模型建立单元用于从所述历史数据中提取特征数据构建训练集,对所述训练集进行训练建立预测模型,并将预测模型发送到负载预测单元;负载预测单元用于通过所述预测模型对所述实时数据进行计算,预测控制器在预设时间间隔之后的负载值。

优选地,所述SDN基于OpenFlow协议;以及历史数据与实时数据均包括:Packet_In消息数目、Packet_Out消息数目、Port_Status消息数目、Flow_Mod消息数目、Flow_Removed消息数目、Error消息数目及控制器连接的交换机数目。

优选地,所述特征数据包括:Packet_In消息数目变化率、Packet_Out消息数目变化率、Port_Status消息数目变化率、Flow_Mod消息数目变化率、Flow_Removed消息数目变化率、Error消息数目变化率、连接的交换机数目变化率、已处理Packet_In消息数目占比、已处理Packet_Out消息数目占比、已处理Port_Status消息数目占比、已处理Flow_Mod消息数目占比、已处理Flow_Removed消息数目占比、已处理Error消息数目占比。

优选地,所述训练集由多组训练样本组成,每一训练样本均包括输入值与期望值;其中,输入值为特征数据,期望值为预设时间间隔之后的控制器实际负载值。

优选地,模型建立单元利用梯度迭代回归树GBRT算法对训练集进行训练,建立预测模型;其中,所述预测模型用于根据从控制器运行数据中提取的特征数据预测控制器在预设时间间隔之后的负载值。

优选地,所述通过所述预测模型对所述实时数据进行计算,预测控制器在预设时间间隔之后的负载值,具体为:负载预测单元从实时数据中提取特征数据,并将特征数据置入所述预测模型,得到控制器在预设时间间隔之后的预测负载值;以及所述系统还包括负载调整单元,用于判断控制器在预设时间间隔之后的预测负载值是否大于负载阈值;若是,则标记该控制器即将过载;停止或减少向该控制器分发工作任务。

本发明另一方面提供一种应用于软件定义网络的控制器负载预测方法,包括步骤:S1.采集软件定义网络SDN中控制器的历史数据;S2.从所述历史数据中提取特征数据构建训练集,对所述训练集进行训练建立预测模型;S3.采集控制器的实时数据,并通过所述预测模型对所述实时数据进行计算,预测控制器在预设时间间隔之后的负载值。

优选地,在步骤S1之前,所述方法还包括:判断是否存在预测模型;若是,执行步骤S3;否则,执行步骤S1、S2、S3;以及在步骤S3之后,所述方法还包括:判断控制器在预设时间间隔之后的预测负载值是否大于负载阈值;若是,则标记该控制器即将过载;停止或减少向该控制器分发工作任务。

优选地,所述SDN基于OpenFlow协议;以及历史数据与实时数据均包括:Packet_In消息数目、Packet_Out消息数目、Port_Status消息数目、Flow_Mod消息数目、Flow_Removed消息数目、Error消息数目及控制器连接的交换机数目;所述特征数据包括:Packet_In消息数目变化率、Packet_Out消息数目变化率、Port_Status消息数目变化率、Flow_Mod消息数目变化率、Flow_Removed消息数目变化率、Error消息数目变化率、连接的交换机数目变化率、已处理Packet_In消息数目占比、已处理Packet_Out消息数目占比、已处理Port_Status消息数目占比、已处理Flow_Mod消息数目占比、已处理Flow_Removed消息数目占比、已处理Error消息数目占比。

优选地,步骤S2具体为:对所述历史数据进行数据清洗,从清洗后的数据中提取特征数据,并进行归一化处理;以归一化的特征数据为输入值、预设时间间隔之后的控制器实际负载值为期望值构建训练集,利用梯度迭代回归树GBRT算法对所述训练集进行训练建立预测模型;以及步骤S3具体为:采集控制器的实时数据,从实时数据中提取特征数据,并将特征数据置入所述预测模型,得到控制器在预设时间间隔之后的预测负载值。

由以上技术方案可知,本发明从控制器历史数据中提取与控制器未来负载情况相关的特征数据构建训练集,通过GBRT算法训练生成预测模型,对控制器的负载情况进行预测,在控制器出现过载导致系统整体处理性能下降之前进行动态调整,防患于未然,避免了控制器的宕机和失效,大幅提高系统可靠性及资源利用率。

附图说明

图1是本发明实施例的多控制器SDN示意图;

图2是本发明实施例的控制器负载预测系统示意图;

图3是本发明实施例的控制器负载预测方法示意图;

图4是本发明实施例的控制器负载预测方法流程图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。

本发明的发明人考虑到,在多控制器SDN中,随着网络规模的扩大,控制器的性能成为提高网络服务质量的瓶颈。当控制器管理下的交换机流量激增时,该控制器可能过载,而其它控制器的资源却未充分利用,造成了控制器资源的浪费。同时,控制器处于过载时,其响应时间增大,流表的建立时间大幅增加,导致网络中的流量可能出现较大的延时和丢包率,给终端用户带来较差的用户体验。

对于多控制器的负载均衡问题,目前主要有三种解决方案:一、借鉴传统的服务器集群负载均衡思想,在控制平面和转发平面中间增加一个负载均衡器,由负载均衡器采用某种策略,分发给实际的控制器。二、采用流量重定向的方式,通过在交换机中以主动或被动的方式安装流表项,将流请求重定向给其它控制器,减少过载控制器的负载。三、采用交换机迁移策略,将过载控制器的部分负载分摊给闲置的控制器处理。然而,在上述负载均衡解决方案中,都是在控制器出现过载后,才进行相应调整。由于控制器已经处于过载,大量请求得不到处理,这使流表的建立时间大幅提升,网络中的流量出现较大的延时和丢包,给终端用户带来较差的用户体验。

因此,需要一种能够预测控制器的负载情况的系统或方法,在控制器出现过载前即作出预测,并据此提前对该控制器的负载进行调整,避免过载的发生。

基于上述考虑,本发明的发明人从控制器运行数据中选择与控制器未来负载情况相关的数据,并从中提取特征数据构建训练集,采用具有较强泛化能力、预测能力及鲁棒性的梯度迭代回归树GBRT算法生成预测模型对控制器负载进行预测,并根据预测结果动态调整控制器负载,使可能出现的过载消弭于无形,大大提高了系统稳定性及资源利用率。

图2示出了本发明的应用于软件定义网络的控制器负载预测系统,参见图2,控制器负载预测系统包括数据采集单元11、模型建立单元12、负载预测单元13,下面分别予以介绍。

数据采集单元11用于采集软件定义网络SDN中控制器的运行数据。一般来说,上述SDN基于OpenFlow协议。运行数据包括历史数据与实时数据,其中,历史数据是控制器过往的运行数据,作为建立预测模型的样本,其包含控制器在不同时间的实际负载值。实时数据是控制器的当前运行数据,本发明即通过预测模型对其处理,以预测控制器在一段时间之后的负载值。

负载值的定义如下:设控制器在单位时间的最大处理能力为R,单位时间处理的消息响应为S,则控制器的负载值为S/R。

历史数据与实时数据都应与负载值的预测密切相关。在本发明优选实施例中,二者均包括:Packet_In消息数目、Packet_Out消息数目、Port_Status消息数目、Flow_Mod消息数目、Flow_Removed消息数目、Error消息数目及控制器连接的交换机数目。

上述数据的触发场景如下:交换机使用Packet_In消息将相应的数据包发送到OpenFlow控制器,将此消息交由控制器进行处理。当控制器发送包含相关命令的消息,通过Packet_Out消息。在OpenFlow交换机中添加、删除或修改物理端口时,需要发送Port-Status消息来通知OpenFlow控制器。Flow-Mod消息是OpenFlow控制器对OpenFlow交换机设置流表项的消息,通过Flow-Mod消息,可对交换机的流表项进行添加、删除、变更设置等操作。当OpenFlow交换机设置的流表超时时,OpenFlow交换机要向OpenFlow控制器发送Flow-Removed消息。Error消息的作用是控制器或交换机发生错误时,通知对方出现了某种错误的消息。

这七类数据均与一段时间之后的控制器负载情况相关,选择上述数据构建模型能够有效提高预测的准确性。

作为一个优选方案,运行数据还可以包括控制器处理上述消息并做出响应的消息数目,如此设置可以保证采集数据的完整性。

数据采集单元11将历史数据向模型建立单元12发送,模型建立单元12从历史数据中提取特征数据。

实际应用中,特征数据包括:Packet_In消息数目变化率、Packet_Out消息数目变化率、Port_Status消息数目变化率、Flow_Mod消息数目变化率、Flow_Removed消息数目变化率、Error消息数目变化率、连接的交换机数目变化率、已处理Packet_In消息数目占比、已处理Packet_Out消息数目占比、已处理Port_Status消息数目占比、已处理Flow_Mod消息数目占比、已处理Flow_Removed消息数目占比、已处理Error消息数目占比。

上述已处理消息数目占比指的是处理完成的消息数目与消息总数的比值。以上十三类特征数据均为影响控制器负载变化的重要因素:消息数目的变化率反映的是控制器接收或发起的各类消息的数目波动情况,对这些消息的响应构成了控制器运行时的主要负载。各类消息已处理占比,反映当前控制器的运行状态:占比较高,说明控制器能够及时处理各类消息事件,运行状态良好,负载较轻;占比较低,说明有大量的消息没有得到及时处理,消息缓冲区处于阻塞情形,控制器的负载趋向于较高。同时,控制器连接的交换机数目,直接影响控制器接收各类消息的数量规模,一般情况下,控制器连接的交换机越多,负载值将会趋向于较高。上述十三类特征数据是与控制器负载预测最相关的信息,以其为基础建立预测模型能够实现控制器负载的准确预测。

模型建立单元12根据特征数据构建训练集,并对训练集进行训练建立预测模型。具体地,训练集由多组训练样本组成,每一训练样本均包括输入值与期望值。输入值为从历史数据提取的特征数据,期望值为预设时间间隔之后的控制器实际负载值。

较佳地,模型建立单元12利用梯度迭代回归树GBRT算法对训练集进行训练,建立预测模型。预测模型能够根据从实时数据中提取的特征数据预测控制器在预设时间间隔之后的负载值。GBRT算法具有较强的泛化能力、预测能力及鲁棒性,通过此算法建立模型能够提高预测精度,缩短预测时间。

GBRT算法的主要步骤为:

1.设训练集为:Tr=(x1,y1),(x2,y2),...,(xn,yn),其中,x1…xn为特征数据,y1…yn为控制器在预设时间间隔之后的实际负载值。设置损失函数L(y,f(x)),并初始化:估计一个使损失函数极小化的常数值,此时它只有一个节点的树。

2.计算损失函数的负梯度在当前模型的值,并将它作为残差的估计值。

<mrow> <msub> <mi>r</mi> <mrow> <mi>m</mi> <mi>i</mi> </mrow> </msub> <mo>=</mo> <mo>-</mo> <msub> <mrow> <mo>&lsqb;</mo> <mfrac> <mrow> <mo>&part;</mo> <mi>L</mi> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>,</mo> <mi>f</mi> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> <mo>)</mo> </mrow> </mrow> <mrow> <mo>&part;</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>&rsqb;</mo> </mrow> <mrow> <mi>f</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>f</mi> <mrow> <mi>m</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> </mrow> </msub> </mrow>

对rmi拟合一棵回归树,得到第m棵树的叶节点区域Rmj

3.利用线性搜索估计叶节点区域的值,使损失函数极小化。

<mrow> <msub> <mi>c</mi> <mrow> <mi>m</mi> <mi>j</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>argmin</mi> <mi>c</mi> </msub> <munder> <mo>&Sigma;</mo> <mrow> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>&Element;</mo> <msub> <mi>R</mi> <mrow> <mi>m</mi> <mi>j</mi> </mrow> </msub> </mrow> </munder> <mi>L</mi> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>,</mo> <msub> <mi>f</mi> <mrow> <mi>m</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> <mo>+</mo> <mi>c</mi> <mo>)</mo> </mrow> </mrow>

4.更新重复步骤2、3,直到达到设定算法停止阈值。

5.最后得到预测模型

<mrow> <mover> <mi>f</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>f</mi> <mi>M</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>m</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>M</mi> </munderover> <munderover> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>I</mi> </munderover> <msub> <mi>c</mi> <mrow> <mi>m</mi> <mi>j</mi> </mrow> </msub> <mi>I</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>&Element;</mo> <msub> <mi>R</mi> <mrow> <mi>m</mi> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> </mrow>

至此,本发明通过GBRT算法建立了预测模型。

模型建立单元12将预测模型发送到负载预测单元13。负载预测单元13通过预测模型对实时数据进行计算,预测控制器在预设时间间隔之后的负载值。

具体地,负载预测单元13从实时数据中提取特征数据,并将特征数据置入预测模型,得到控制器在预设时间间隔之后的预测负载值。

作为一个优选方案,控制器负载预测系统还包括负载调整单元14,其用于判断控制器在预设时间间隔之后的预测负载值是否大于负载阈值。如果是,则说明该控制器即将过载,即停止或减少向该控制器分发工作任务以缓解其压力。

由此,本发明实现了对控制器的负载情况的预测,在控制器出现过载导致系统整体处理性能下降之前进行动态调整,防患于未然,避免了控制器的宕机和失效,大幅提高系统可靠性及资源利用率。

图3示出了本发明的应用于软件定义网络的控制器负载预测方法,其具体执行步骤如下:

首先,在步骤S0中,判断是否存在预测模型。若是,执行步骤S3;否则,依次执行步骤S1、S2、S3。

在步骤S1中,采集软件定义网络SDN中控制器的历史数据,上述SDN一般基于OpenFlow协议。

在步骤S2中,从历史数据中提取特征数据构建训练集,对训练集进行训练建立预测模型。具体应用中,上述步骤按照如下过程执行:对历史数据进行数据清洗,从清洗后的数据中提取特征数据,并进行归一化处理。以归一化的特征数据为输入值、预设时间间隔之后的控制器实际负载值为期望值构建训练集,利用梯度迭代回归树GBRT算法对所述训练集进行训练建立预测模型。

接着,在步骤S3中,采集控制器的实时数据,并通过预测模型对实时数据进行计算,预测控制器在预设时间间隔之后的负载值。具体地,上述步骤具体如下执行:采集控制器的实时数据,从实时数据中提取特征数据,并将特征数据置入所述预测模型,得到控制器在预设时间间隔之后的预测负载值。

接下来,在步骤S4中,判断控制器在预设时间间隔之后的预测负载值是否大于负载阈值。若是,则标记该控制器即将过载,停止或减少向该控制器分发工作任务。

实际应用中,历史数据与实时数据均包括:Packet_In消息数目、Packet_Out消息数目、Port_Status消息数目、Flow_Mod消息数目、Flow_Removed消息数目、Error消息数目及控制器连接的交换机数目。

特征数据包括:Packet_In消息数目变化率、Packet_Out消息数目变化率、Port_Status消息数目变化率、Flow_Mod消息数目变化率、Flow_Removed消息数目变化率、Error消息数目变化率、连接的交换机数目变化率、已处理Packet_In消息数目占比、已处理Packet_Out消息数目占比、已处理Port_Status消息数目占比、已处理Flow_Mod消息数目占比、已处理Flow_Removed消息数目占比、已处理Error消息数目占比。

图4示出了本发明实施例的控制器负载预测方法流程,SDN环境中采用Openflow1.3协议,控制器为基于Ryu开发的控制器,最大处理能力R为5000/s。参见图4,首先,设定时间间隔△T=2s,采集频率F=1Hz,以上述频率采集控制器运行数据。接着,判断是否存在预测模型。若存在,直接调用进行负载预测;否则,从采集数据中提取特征数据作为输入值、以2s后的控制器负载值作为期望值构建训练集,采用GBRT算法训练得到预测模型。具体实现时,使用Python的机器学习库scikit-learn中的函数GradientBoostingRegressor(),并设置关键参数:n_estimators=100、max_depth=13、loss=’ls’,调用fit()方法训练模型。接下来,将实时数据置入预测模型,输出控制器的预测负载值。应用中可以调用predict()方法来实现。

本发明提供的控制器负载预测系统及方法,能够在控制器出现过载导致整体处理性能下降之前,对控制器的负载情形进行预测,根据预测结果对控制平面进行负载动态调整,从而使控制平面中多控制器间的负载更为均衡,资源利用率大大提高。本发明在云计算中心的SDN网络、数据中心的SDN网络及基于Openflow协议实现的各种控制平面中,具有广泛的应用前景。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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