APP下载

基于LSTM流量预测的路由规划和切换

2022-09-03诸葛斌王林超宋杨邵瑜董黎刚蒋献

电信科学 2022年8期
关键词:数据包链路控制器

诸葛斌,王林超,宋杨,邵瑜,董黎刚,蒋献

(浙江工商大学信息与电子工程学院(萨塞克斯人工智能学院),浙江 杭州 310018)

0 引言

运营商基于当前快速增长的网络需求和日益复杂的网络环境提出流量预测需求,OMC(operation and maintenance center)系统应支持基于历史流量数据,通过大数据分析算法进行流量预测,即能根据当前软件定义网络(software defined network,SDN)[1]已有的历史流量数据,结合监督学习、无监督学习等人工智能算法,快速全面预测整体网络流量趋势以指导网络提前进行调整或扩容,并且帮助运营商提前进行大客户流量营销。

互联网和通信设备的快速发展创造了更大、更复杂的网络结构,网络的复杂性导致大量流量数据的溢出,并且给网络管理和流量优化带来了挑战,包括路由决策、负载均衡、拥塞控制等服务。同时,研究人员看到两个可行的解决方案帮助更有效地管理网络——SDN和机器学习。SDN为所有的网络设备提供了一个集中的访问和控制机制,SDN控制器不仅可以监视和测量各种网络参数和度量,而且可以对资源分配和路由做出更明智和高效的决策,因为它可以全局地查看网络中的所有内容。然而,SDN控制器接收的数据量可能非常大。虽然SDN控制器本身可以扩展,例如在云上运行它,但是仍然需要有效的算法从接收的数据中提取所需的测量和信息。这是机器学习可以很好辅助SDN的地方。许多流量分类和流量预测问题可以通过各种机器学习算法实现,在保持相对简单设计的同时提高了系统性能。流量预测对SDN中路由决策、拥塞控制、负载均衡等服务的开展具有重大的促进作用,是一个基础性的研究领域。

1 基于LSTM模型的流量预测算法设计

1.1 流量预测框架和机制

本文提出的SDN流量预测系统框架如图1所示,所提的SDN体系架构是一种基于模型化的架构,各层提供的服务和功能均以元模型为基础,通过资源组合满足上层用户的多元化需求。元业务中包含了上层应用的特性和要求,它可以根据应用的特性和要求抽象业务所需的最基本网络服务功能。控制平面中预测模块为整个系统的核心模块,本文将深度学习模型应用到流量预测中进行网络流量的预测和处理机制的研究,通过与其他各层的模块进行交互,可以实现对转发层的优化调度和灵活转发。

图1 基于SDN的流量预测框架

在转发层,将物理设备虚拟化成一个资源池,再通过正交分解将转发层虚拟化成各种逻辑功能块,也就是元能力。与流量预测相关的模块包括流量抓取模块和转发信息库,流量抓取模块负责抓取流量信息,并将信息发送至控制层中的流量统计模块。转发信息库主要用于保存控制层中流与动作管理模块下发的流表信息。

控制层中,流量统计模块用于下发统计信息到流量抓取模块,接收流量抓取模块抓取的流量信息进行分析。然后发送至流量预测模块,流量预测模块通过深度学习算法对流量进行预测。然后将预测结果发送至结果分析模块进行流量分析,分析结果分别发送给控制层的策略管理模块和应用层的应用服务管理元业务模块。策略管理模块制定相应的策略发送给流与动作管理模块。流与动作管理模块将具体的策略下发至转发层的转发信息库。

其中,应用层的元业务是一个单独的微服务,它具有平台无关性和可以支持独立部署的特点。流量预测相关的业务主要包括应用服务管理模块和应用处理模块,应用服务管理元业务用于接收结果分析模块得出流量分析结果。应用处理元业务用于接收应用服务管理元业务转发的操作指令,对具体应用做出对应的操作。

SDN流量预测框架的流量预测机制是整个架构的核心部分,流量预测机制为流量预测系统提供了高效的防护策略。

1.2 数据预处理

目前,流量矩阵的估算主要依赖合成数据的流量矩阵评估某个算法的具体效果。几乎没有主流的机构可以提供流量矩阵的数据,直到 Uhilg等[2]公布了他们在欧洲探索与学习网 GEANT上获得的真实可用的流量矩阵数据集。这份流量矩阵数据集囊括了 GEANT中全内部网关协议(Interior gateway protocol,IGP)的流量信息、抽样了 NetFlow数据和边界网关协议(border gateway protocol,BGP)路由信息一同建立的流量矩阵。真实公开的流量矩阵可以加强对真实流量矩阵及其动态性的理解。因此,本文采用了CEANT2上部署的25个节点,收集节点之间链路的流量作为数据集,然后通过流量数据测量和估算方法计算流量矩阵,再通过流量矩阵进行流量预测。

首先对数据集进行处理,因为下载的数据集以15 min为间隔,为期两周左右的977个XML文件,每个XML文件中包含了25×25条流量信息。但是本文需要的数据集格式以不同的流划分文件,每个文件包含了两周时间内一条流以15 min为间隔的全部数据,文件输出格式为常用数据集格式CSV。创建一个数组array=[],设置文件的 path。读取目录下的文件名称,存储在变量files内。对files循环遍历该目录下的所有文件,每次循环调用dom.minidom.parse打开XML文件,打开文件之后通过 rootdata.get Elements By Tag Name 设置读取范围在标签<dst>…</dst>之间的元素。标签内的即需要的流量数据。通过itemlist.firstChild.data[5]确定选择每个XML文件中的第几条数据,并将读取出来的数据保存到数组中。使用to_csv函数将数组array=[]输出CSV文件保存至相同目录下。将数据拆分成训练集和测试集,将第n_0~n_12个数字作为特征。第n_13个数字为标签。依次循环累加x将第n_x个数字至第n_(x+12)个数字作为特征。第n_(x+13)个数字作为标签,最后,返回x_train训练集的特征,y_train测试集的标签,x_test测试集的特征,y_test测试集的标签。最后再将数据集进行标准化。

1.3 BL-LSTM模型搭建

人们对一个问题的思考不会从头开始,如一个人能够理解一篇文章是因为这个人已经有了一定的语言基础,人能够不断地累积知识,是因为人能够记忆一些已经学习过的知识。但是传统的神经网络做不到这一点,传统的神经网络对时序信息的预测和处理是非常困难的。如预测一句话的结尾,或者文章内容的下一段。虽然理论上递归神经网络(recurrent neural network,RNN)可以处理这种“长依赖问题”,但在实际过程中RNN无法学习这种特征。Hochreiter[3]和 Bengio[4]深入研究过为什么RNN不能学习到该特征。于是长短期记忆(long short-term memory,LSTM)网络——一种新的RNN模型应运而生。由于RNN绝大分都由相同的神经网络复制链接而成,而神经网络的结构非常简单,LSTM 也具有这种链式结构,但是它不同于简单的 RNN神经网络单元里只有一个网络层,LSTM的内部有4个网络层。LSTM的核心是网络单元设计,LSTM 的网络单元设计类似一个细胞,一个网络单元内的状态传输结构简单来说是由一个点乘器和一个加法器构成的,数据的传输过程像一个传送带,贯穿了整个细胞而且鲜有分支。一个LSTM里有3个门,而LSTM的细胞状态是由这 3个门控制的。门是由一个sigmoid函数和一个点乘操作组合而成的。门的作用是为了对细胞状态进行删除和更改,sigmoid函数输出的值在0~1,这表示有多少数据可以通过sigmoid层,0表示全丢弃,1表示全接受。LSTM细胞状态如图2所示。

图2 LSTM状态传输

本文基于 LSTM 模型[5]修改的深度学习模型BL-LSTM(based linear regression-LSTM),BL-LSTM算法模型如图3所示。采用BL-LSTM进行SDN流量预测模型的搭建。具体来说由两个部分组成,一个是LSTM网络,另一个是线性回归模型。LSTM网络由m个堆叠的LSTM层组成,用于对网络流量的时空特征进行建模。输出层采用线性回归模型计算未来的流量大小。

图3 BL-LSTM算法模型

开始训练模型时,不会直接把整个数据集导入模型中,而是使用batch的方式。深度学习的优化算法总的来说是梯度下降法,每次的权重和偏置更新可以分为以下两种极端。第一种是遍历完所有数据后再计算损失函数,然后根据新的参数计算新的梯度。这种方法因为数据集的增长和内存的限制,一次性导入整个数据集,变得非常困难。另一种是每次只训练一个样本,每载入一个数据就计算一次损失函数,然后求出梯度更新参数,这种方法虽然速度较快,但是收敛性能较差,可能在最优点附近来回移动,无法到达最优点。或者几次参数的更新互相抵消最终导致目标函数的强烈震荡,为了克服上述的两种极端现象,一般采取折中的方法。

训练模型时将数据分批次载入,这样一批数据共同决定了梯度方向,方向不容易跑偏,降低了随机性。另一方面因为一批内的样本数与整个数据集相比小很多,计算量也大大减小。定义迭代变量 iterations,一个 iterations等于使用batch_size个样本训练一次。定义轮询变量epochs,epochs被定义为向前和向后传播所有批次的单次训练迭代,这意味着一个 epoch是整个输入数据的单次向前和向后传递。简单来说,epoch指的是训练过程中数据将要被轮询多少次,即需要完整遍历数据集多少次。如果 epoch数量太少,神经网络就有可能发生欠拟合(即对定型数据的学习不够充分),如果 epoch数量太多,则有可能发生过拟合(即神经网络对定型数据中的“噪声”而非信号进行拟合)。BL-LSTM模型搭建的流程如下。

步骤 1创建一个 ArgumentParser对象,添加参数并解析,设置一组特征数量lag为12。

步骤 2经过多次调试最终设置 batch值为256,设置epochs值为600。调用数据处理函数获取x_train训练集的特征和y_train训练集的标签。

步骤3对x_train进行reshape,将数据转变为一列的三维数组。设置输入层、隐藏层和输出层的参数。

步骤4初始化一个顺序模型,加入一个LSTM层,设置return_sequences=True,每个时间步都输出ht−1。

步骤5将LSTM的输出结果,输出到多元线性回归模型进行训练。

步骤6获得完整的模型,输入测试集x_test,取得预测结果。

步骤7将归一化后的结果转化为原始数据。

2 基于流量预测的路由规划和切换

传统路径切换主要为如何在限制条件完成最快的更新,如何解决网络变化时流量波动等问题。

2.1 SDN路径切换解决方案

针对多条路径更新时,因为链路的带宽限制使路径切换后出现网络拥塞的问题[9],本文使用BP-ACO算法[10]进行路由规划,GEANT获得的流量矩阵作为数据集通过BL-LSTM算法进行训练,预测后短时间内的流量趋势。BP-ACO通过对流量预测的分析进行路由规划避免流量拥塞,对这个问题本文通过上述基于LSTM模型的流量预测的方法进行处理。

针对域间路由更新导致流表部署时间不同的问题,以及网络变化时会产生控制器下发的流表和交换机内实际接收到流表的不一致问题。

本文提出了一种新的方法解决SDN的一致性多交换机更新问题,方法是通过协调不同控制域内的控制器,中央控制器向各控制域下发流表,实现控制域的有序更新。但是域内的控制器向不同高质量的,多层虚拟交换机(open vSwitch,OVS)下发流表且OVS部署流表会产生不同的时延,导致转发数据流时没有流表而开始丢包。因为新的域内路由有空闲OVS,传输时延较低,传输过程中因为有一些数据包在链路传输,所以数据包传输失序。虽然失序现象可以通过传输控制协议(transmission control protocol,TCP)的重传机制缓解,但是随着数据发送速率的不断上升,传输的数据包开始变大,随机失序情况会越来越明显。

为了解决域内的一致性问题,本文提出了一种新的方法,该方法通过在拆除现有路由之前检查新路由的运行状态。具体的识别过程是通过多播的方式向每一个既在新路径又在旧路径上的OVSCNi发送两条相同的转发流表。CNi收到相同的数据包之后确认当前网络的新旧两条链路都能正常转发数据包,再断开旧的链路。然后,新的路径开始正式使用,最后将新的路径剩余带宽、吞吐量提交给控制器,控制器重新进行路由规划。

2.2 无损路径切换算法

一个OVS连接SDN控制器时,触发Event OFPS witch Features事件,在事件内实例化一个连接 OVS到控制器的网桥,实例化并解析OpenFlow协议,创建一个匹配流表头部的Match域,控制器向OVS发送报文,OVS接收报文后通过默认流表向控制器发送确认字符(acknowledge character,ACK),控制器通过收到的反馈报文,确认OVS和控制器建立连接。

SDN中央控制向所有只在新链路(Lnew)的控制器发送流表,OVS接收SDN控制器发送的流表后开始安装收到的流表,OVS安装完流表后发送ACK返回给控制器,中央控制器接收到所有 OVS的 ACK后开始下一步。

SDN中央控制向所有既在新链路(Lnew)又在旧链路(Lold)的控制器()发送流表,OVS接收SDN控制器发送的流表后开始安装接收的流表,OVS安装完流表后发送ACK确认报文返回给控制器,中央控制器接收所有OVS的ACK后开始下一步。

SDN控制器对所有域内链路,从远到近发送多播信号,当R∩收到两个相同的数据包时,确认两条链路都可以正常工作,则断开Lold链路中属于本次转发链路的部分。路径切换流程如图4所示。

图4 路径切换流程

2.3 基于多播的无损路径更新技术

在SDN中,控制器可以删除、添加或替换路由表中的源目流表。采取以多播的方式更新路径,旨在最小化节点资源消耗和链路资源消耗总成本。本文通过使控制器向OVS下发相同的源目流表。然后数据包通过先进先出队列(first input first output,FIFO)的方式沿着某一条路径传输。如果两个数据包P1、P2沿着同一条路径传输,然后都经过了OVS交换机S1、S2。如果P1在P2之前遍历S1,那么P1必须在P2之前遍历S2。当Si≠Sd收到了流表之后,部署安装流表,经过该OVS的数据包按照新的路由表开始转发数据包。

SDN控制器可以指示 OVSSi向控制器转发一段路径中的所有数据包,通过对这段路径中的Si打上标签,在Si这些的路由表中添加一条转发给控制器的流表。通过控制器识别数据包是否相同,而不是通过交换机Si识别。值得注意的是,只有整条转发链路的最后一个OVS需要将数据包转发给控制器,而不是转发链路中的每一个OVS。因此,OVS的标准操作和OpenFlow命令可以支持多播转发所需要的操作。多播传输中复制的数据包通过每个数据包的源地址和标识字段辨别。通过这个方法可以分辨当前数据包是多播传输中复制的数据包还是通过TCP重传机制重新发送到Si的数据包。

本文介绍算法的一个例子,SSRU切换开始之前的网络拓扑如图5所示,其中,一次只建立(s,d)路径的一个部分,并替代当前的等效部分。Dx表示一个域,Cx,x∈ { 0,1,2,… ,n}表示旧链路上的OVS,Ny,y∈ { 0,1,2,3,… ,n}表示新链路上的OVS,CNi:Cx=Ny,x∈ { 0,1,2,… ,n}表示既在新链路又在旧链路上的OVS。

图5 SSRU切换开始之前的网络拓扑

控制器查询新旧两条域间路径上 OVS的dpid,如果找到两组相同的dpid就可以确认该域处于新旧路径的交点。首先,向只在新域间路径的控制器下发流表,然后再部署域内OVS的流表。

切换从CNi下标最大的替换路径开始,第一段需要切换的路径N9~N12。控制器向N9~N12新链路上的OVS下发流表。

然后,起点S交换机向终点D交换机发送两条相同的数据包,一条沿着Cx,x∈ { 0,1,2,… ,n}传输,一条沿着Ny,y∈ { 0,1,2,… ,n}传输。当相交节点N12收到两个相同的数据包时确认两条路径都可以正常转发,删除旧链路上的流表,停止旧链路的转发。

通过算法计算第二段切换的路径为N0~N9,因此,向N0~N9新链路上的节点下发流表。

起点S交换机向终点D交换机通过多播发送两条相同的数据包,当相交节点N9收到两个相同的数据包,确认两条转发链路建立完成。删除旧链路的转发流表,流量按照新链路开始转发,完成切换,SSRU切换结束之后的网络拓扑如图6所示。

图6 SSRU切换结束之后的网络拓扑

中央控制器向源目管理域内的控制器下发流表,然后域内通过上文域内的多播算法对域内路径进行切换,完成新域间路径的切换之后,删除旧域间路径上的转发流表。

3 基于RYU的服务链功能部署开发与测试

本实验使用如下硬件设备:华为 FusionCloud服务器 5台、华为 CE6800交换机两台、华为CE12800交换机两台、华为S1700交换机一台、AR交换机一台。本实验使用如下软件:4.18版本的Ryu控制器、2.3.0版本的 mininet、16.04版本的Ubuntu。本节主要介绍了BL-LSTM算法的流量预测和在预测结果下基于 BP-ACO[10]的路由规划和切换实验。

3.1 BL-LSTM算法的流量预测实验

本文以GEANT2部署的25个节点之间的流量信息作为数据集,然后通过流量数据测量和估算方法计算流量矩阵,再通过流量矩阵进行流量预测。通过BL-LSTM实现流量的预测,并将该算法和门控循环单元(gated recurrent unit,GRU)[5]以及栈式自编码(stacked auto-encoder,SAE)深度学习模型[8]进行比较。选择第12个端口到第23个端口的链路作为被测对象,数据集每隔5 min进行一次测量,持续两周。该链路共记录977条流量数据。预处理之后的数据集见表1。

表1 预处理之后的数据集

首先读取977个XML流量数据文件,其次将每份数据集中的12~23端口之间的流量依次插入到新的newdata.CSV文件。

然后通过预处理脚本对获取的数据进行分组、归一化、矩阵转换等数据预处理,脚本处理算法见算法1。

算法1预处理脚本

开始

train, test = [], []

foriin range(lags, len(flow1)):

train.append(flow1[i- lags:i+ 1])

foriin range(lags, len(flow2)):

test.append(flow2[i- lags:i+ 1])

train = np.array(train)

test = np.array(test)

np.random.shuffle(train)

X_train = train[:, :-1]

y_train = train[:, -1]

X_test = test[:, :-1]

y_test = test[:, -1]

returnX_train,y_train,X_test,y_test, scaler

结束

本节实验将本文提出的 BL-LSTM 算法与GRU算法、SAE算法进行对比,首先将BL-LSTM算法的预测结果与真实数据进行对比,BL-LSTM预测结果曲线如图7所示,BL-LSTM 曲线很好地拟合了真实值的曲线,但低点较真实值偏高。将归一化的测试集和预测结果进行反归一化,纵坐标变为流量的真实大小。

其次,将3种算法的预测结果和真实值进行对比,预测曲线对比如图8所示。BL-LSTM算法对真实值曲线的拟合效果最好,SAE的效果次之,GRU的效果最差。

使用归一化过后的测试集和预测结果计算相应的预测评估结果,量化算法之间的区别。其中,以12~23端口之间的流量数据集为例,对测试集的评价结果见表2。

表2 评价结果

由表2可知 BL-LSTM 模型的 MAPE为22.361 037%,误差最小;SAE次之,GRU的MAPE为43.088 212%,误差最大。从BL-LSTM、SAE、GRU模型的预测结果看,BL-LSTM模型的预测准确率要高于SAE和GRU。虽然LSTM和GRU都是循环神经网络,但是在处理时间序列问题上,具有长期记忆特性的循环神经网络LSTM优势更大。

25组数据中不同算法的MAPE值如图9所示,采用25组不同端口之间的数据作为数据集,各种算法预测结果的 MAPE值区别明显。BL-LSTM预测精度最高,MAPE值在22.5%左右,SAE和GRU略有波动,SAE的MAPE平均值为35.2%,GRU的平均值为45.8%。

图9 25组数据中不同算法的MAPE值

3.2 切换实验

运行整理好的mininet拓扑,拓扑主要由4个控制域构成,每个控制器控制一个控制域,SSRU切换之前的转发路径如图10所示。C2的控制域只在旧的链路上,C1的控制域只在新的链路上。而C0、C3的控制域既在新的链路又在旧的链路,域间的路由切换需要中央控制器对各控制域有序下发流表实现。

图10 SSRU切换之前的转发路径

每个域内有6台OVS,它们构成两条新旧链路,以C0的控制域为例,S22~S24只在旧链路上的交换机、S18~SS20是只在新链路上的交换机、S17和S21既在新链路又在旧链路上的交换机。域内的路径切换需要通过多播数据包确认路由更新状态,进而实现路径切换,SSRU切换之后的转发路径如图11所示。

图11 SSRU切换之后的转发路径

运行写好的RYU控制器和mininet拓扑,控制器连接OVS会触发装饰器Event OFPS witch Features,每次OVS向控制器泛洪报文的时候将定义的标志(Flags)加 1。控制器连接 OVS如图12所示。

图12 控制器连接OVS

经过测试发现55次左右的装饰器触发能够建立完整的连接。本文设置Flags到达55之后控制器开始执行路径切换。

传统的 Ryu二层交换机作为控制器,发送37个数据包进行测试,75%的数据包在切换的过程中丢失。二层交换交换机丢包现象如图13所示。

图13 二层交换交换机丢包现象

在应用无损路径切换算法时,发送多组数据包进行测试,没有数据包在切换的过程中丢失,该算法的丢包率和失序率都明显优于传统路径切换算法。SSRU切换丢包现象如图14所示。

图14 SSRU切换丢包现象

发送速率从100 Mbit/s到500 Mbit/s的丢包数量实验结果见表3,当发送速率从 100 Mbit/s到500 Mbit/s时,丢包率始终维持在0,但是其中伴随了一些包失序问题,这是因为在路径切换过程中,新路径的网络设备会出现空闲状态,该路径上的传输速率更快,于是切换过程中后续的数据包经过新链路可能会先到达目的地址,导致在一个往返时延(round-trip time,RTT)内可能会出现数据包失序的情况。幸运的是TCP具有重传机制可以有效地缓解这个问题,用户数据报协议(user datagram protocol,UDP)也有相关的机制解决少量的数据包失序。

表3 发送速率从100 Mbit/s到500 Mbit/s的丢包数量实验结果

从H1到H2跨越3个控制域发送数据包,发送速率从800 Mbit/s到1 200 Mbit/s的丢包数量实验结果见表4。

表4 发送速率从800 Mbit/s到1 200 Mbit/s的丢包数量实验结果

发送速率逐步提高的实验结果见表5,可以看出来 SSRU算法在进行路径切换时引起的平均时延非常少,且这种时延几乎不影响文件的实际传输,在文件的传输过程中既保证了业务以及会话的稳定运行,又防止流量只走最短路径导致网络局部拥塞,对网络整体进行了负载均衡。

表5 发送速率逐步提高的实验结果

对表5出现的缩写的简单介绍见表6。

表6 缩写介绍

传输速率对平均时延的影响如图15所示,可以看出随着传输速率ATR的增长,路径切换产生的平均时延呈线性增长,这表示SSRU算法在高速传输中依然可以保持高可用性。验证了即使在高的传输速率SSRU也可以实现无损的路径切换。

图15 传输速率对平均时延的影响

4 结束语

随着近年网络技术的不断发展和演进,用户对网络资源的需求体量越来越大,内容越来越复杂,传统的网络架构很难满足目前灵活的网络需求。SDN的革命性技术思想赋予了网络可编程性和可演进性,实现网络资源更灵活的管理。为了提高网络资源利用率,提出了基于LSTM模型的流量预测,为路由规划提供理论依据。通过提前预测网络流量,在流量激增之前进行防御措施保证网络的安全性和稳定性,实现基于流量预测的路由规划、无损路径切换等功能。

猜你喜欢

数据包链路控制器
二维隐蔽时间信道构建的研究*
工商业IC卡控制器改造为物联网控制器实践
天空地一体化网络多中继链路自适应调度技术
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
基于星间链路的导航卫星时间自主恢复策略
PLC可编程控制器相关外置的选择计算研究
浅析民航VHF系统射频链路的调整
C#串口高效可靠的接收方案设计
一种IS?IS网络中的链路异常检测方法、系统、装置、芯片
模糊PID控制器设计及MATLAB仿真