一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

SDN架构下基于深度强化学习的资源优化方法及系统与流程

2021-10-19 11:52:00 来源:中国专利 TAG:
SDN架构下基于深度强化学习的资源优化方法及系统与流程
本发明属于通信
技术领域
,尤其涉及一种SDN架构下基于深度强化学习的资源优化方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的
背景技术
信息,不必然构成在先技术。当前互联网快速发展,各种应用层出不穷,网络承载流量日益增加,传统互联网架构由于其控制平面与数据平面耦合在一起,导致整个网络结构复杂,配置困难,难以快速动态地对网络进行调整,而越来越不适应当前的网络需求。软件定义网络(SDN,SoftwareDefinedNetwork)的提出,为解决这些问题打开了新的窗口。SDN的主要思想在于将传统网元的控制平面与数据平面解耦,并将控制平面集中起来,解决了传统网络配置难,管理难的诸多问题。传统的网络中,数据转发多以数据包的形式独立进行,主要依据目的IP地址进行转发。在SDN架构中,数据转发是以流的方式进行定义。一般来说,网络流是由<源IP地址,源端口,协议,目的端口,目的IP地址>五元组定义,具有相同的五元组的数据包的集合,就是一个流。SDN控制器可以为每条流下发特定的转发路径,做到了更细粒度的控制,能够更好地实现资源的分配。同时,SDN架构的转控分离、集中控制的特点,为机器学习技术在网络资源优化中的应用,提供了前提条件。深度强化学习(DRL,DeepReinforcementLearning)技术是近年来兴起的一种新型的机器学习技术,是深度学习(DL,DeepLearning)与强化学习(RL,ReinforcementLearning)的结合。以DeepMind团队推出的AlphaGo围棋AI战胜人类顶尖棋手为标志,深度强化学习越来越受到人们的重视。其与传统的深度学习方法——有监督与无监督的学习方法不同,深度强化学习是在与环境的实时交互中学习,通过对环境进行采样,智能体(Agent)根据采样情况做出决策,环境再给出奖励,经过多次迭代,智能体便可以学到如何处理当前环境以获得最大化的收益。由上可知,深度强化学习适用于决策类的问题。在近年来的互联网应用发展中,视频通话、网络直播、视频点播等互联网应用模式已经成为人们的一种生活方式,可以预见,随着5G等技术的进一步发展,越来越多的如远程医疗、远程教育、远程会议之类的持续时间较长、带宽要求较大的业务流量将出现在网络中。此类流量往往有着较高的服务质量(QoS,QualityofService)要求,而在这些要求中,首要的是网络带宽要满足实时需求。另外,从运营商的角度来看,如何使网络中能够同时容纳更多的流,实现拥塞的避免,提高网络资源的有效利用,是一个重要的问题。为解决上述问题,现有的基于OpenFlow的网络负载均衡算法中提出了GLB(GlobalLoadBalance)方法,该方法采取在多条路径中选取一条的选路法,其选路的方法为:以每条路径中所有链路的剩余带宽的均值除以所有链路剩余带宽的标准差,来获取该条路径的权重,再从所有路径中选取权重最大的一条。该方法应用了网络的实时动态信息,但是并不能很好地确保选择的路径能满足流的带宽需求,也不能很好地实现拥塞避免。技术实现要素:为了解决上述
背景技术
中存在的技术问题,本发明提供一种SDN架构下基于深度强化学习的资源优化方法及系统,其能够在满足流的带宽需求的同时,尽可能地考虑网络的整体负载均衡,达到拥塞避免的效果,同时在网络即将拥塞时,对网络中的部分流进行重路由,使网络能够进一步实现拥塞避免,达到网络资源的进一步优化。为了实现上述目的,本发明采用如下技术方案:本发明的第一个方面提供一种SDN架构下基于深度强化学习的资源优化方法。一种SDN架构下基于深度强化学习的资源优化方法,其包括:使用已训练好的智能体对网络中的新流,实时地根据当前网络状态与待分配流的带宽需求进行路径分配;所述智能体利用深度强化学习算法训练得到;检测网络拥堵情况,若网络即将出现拥塞,则触发重路由,对网络中的部分流进行路径的重新选择,以进一步地优化网络资源,实现拥塞避免。本发明的第二个方面提供一种SDN架构下基于深度强化学习的资源优化系统。一种SDN架构下基于深度强化学习的资源优化系统,其包括:智能路由模块,其用于使用已训练好的智能体对网络中的新流,实时地根据当前网络状态与待分配流的带宽需求进行路径分配;所述智能体利用深度强化学习算法训练得到;重路由模块,其用于检测网络拥堵情况,若网络即将出现拥塞,则触发重路由,对网络中的部分流进行路径的重新选择,以进一步地优化网络资源,实现拥塞避免。本发明的第三个方面提供一种计算机可读存储介质。一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述所述的SDN架构下基于深度强化学习的资源优化方法中的步骤。本发明的第四个方面提供一种计算机设备。一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述所述的SDN架构下基于深度强化学习的资源优化方法中的步骤。与现有技术相比,本发明的有益效果是:为了在SDN架构下实时地为每条流分配一条满足其带宽需求的路径,同时最大化网络的有效利用,尽可能地避免拥塞,本发明提出一种SDN架构下基于深度强化学习的资源优化方法,该方法首先利用深度强化学习技术训练出一个智能体(Agent),该智能体能够在新流出现时实时地根据当前网络状态与待分配流的带宽需求,合理地分配转发路径,同时,当检测到网络即将出现拥塞时,控制器以上述智能体为依据,对网络进行全局重路由以实现拥塞的避免,进一步提高网络资源的有效利用。采用本发明的智能体在对网络中的新流进行路径分配时,能够在满足流的带宽需求的同时,尽可能地考虑网络的整体负载均衡,达到拥塞避免的效果。同时在网络即将拥塞时,对网络中的部分流进行重路由,使网络能够进一步实现拥塞避免,达到网络资源的进一步优化。本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。附图说明构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。图1是本发明的SDN架构下基于深度强化学习的资源优化方法的整体框架及信息流程示意图;图2是智能路由模块结构与信息流程示意图;图3是智能路由模块中数据预处理模块的信息流程示意图;图4是重路由模块结构与信息流程示意图;图5是重路由模块中智能演算模块结构与信息流程示意图;图6是测试中应用的NSFNet网络拓扑结构;图7是测试结果中的流带宽满意度变化曲线;图8(a)是测试结果中的网络时延服务质量指标变化曲线;图8(b)是测试结果中的抖动服务质量指标变化曲线;图8(c)是测试结果中的丢包服务质量指标变化曲线;图9(a)是测试结果中的吞吐量变化曲线;图9(b)是测试结果中的有效吞吐量变化曲线。具体实施方式下面结合附图与实施例对本发明作进一步说明。应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属
技术领域
的普通技术人员通常理解的相同含义。需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。通常在使用机器学习算法解决问题时,训练的过程和应用的过程都是分开进行的,本发明也不例外。实际的应用中,首先在仿真网络中进行智能体的训练。主要因为仿真网络中容易进行各种流的模拟。待训练结束后,将控制器应用于实际网络中,即可进行正常工作。首先对控制器整体构架及工作流程进行说明。控制器至少包括:智能路由模块,其用于使用已训练好的智能体对网络中的新流,实时地根据当前网络状态与待分配流的带宽需求进行路径分配;所述智能体利用深度强化学习算法训练得到;重路由模块,其用于检测网络拥堵情况,若网络即将出现拥塞,则触发重路由,对网络中的部分流进行路径的重新选择,以进一步地优化网络资源,实现拥塞避免。在其他实施例中,控制器整体构架包括流信息处理、链路状态信息收集、智能路由、流信息存储、重路由、流表下发这些功能模块。实时工作时,首先使用已训练好的智能体对网络中的新流进行路径分配,若网络即将出现拥塞,则触发重路由,对网络中的部分流进行路径的重新选择,以进一步地优化网络资源,实现拥塞避免。具体地,流信息处理模块负责对数据平面发送到控制器的未能匹配到流表而不知如何处理的数据包进行信息提取,获取该数据包所在流的系列信息,并将这些信息发送至智能路由模块。链路状态信息收集模块负责周期性地对全网进行链路状态收集,包括各链路的负载情况及各流的占用带宽情况等,将链路的负载情况发送至智能路由模块、重路由模块、流信息存储模块,将各流的占用带宽情况发送到流信息存储模块。智能路由模块分为两个主要的部分,一部分是智能体,在训练和工作时都运行,另一部分是参数更新模块,负责在训练时对智能体进行参数更新,故只在训练时工作,工作时应用的智能体是提前训练好的。工作中,该模块负责根据实时网络负载情况和流信息处理模块发送的流信息进行路径的分配,并将路径信息等添加到流信息中,分别发送至流信息存储模块和流表下发模块。流信息存储模块在收到智能路由模块发送的流信息后按时间顺序进行存储,同时,在每周期链路状态信息收集模块送来各负载信息及流信息后,对存储的流信息进行更新,以尽可能的使存储的流信息与网络中的实际情况对应。重路由模块在每周期收到各链路负载信息后,进行是否重路由的判定,如进行重路由,则从流信息存储模块获取流信息,依据这些信息判断网络中有哪些流的路径需要更改,对这些路径进行更改后将新的流信息发送至流表下发模块。流表下发模块负责根据智能路由模块和重路由模块发送的流信息进行流表的增删。然后对智能体的训练方法进行说明。进行训练时,流信息存储模块及重路由模块不工作,智能路由模块中的智能体和参数更新模块一起工作。本发明中的智能体训练过程为,将网络从没有流的状态作为一轮训练的起始,逐条向网络中添加流,如果某流能分配到满足其带宽需求的路径,则智能体得到相应奖励,继续进行下一步,如果某流分配到的路径不能满足其带宽需求,则认为网络已拥塞,得到相应的奖励,停止本轮训练。在训练过程中,除上述不工作模块外,控制器中其余模块正常工作,模块间信息传递与上述工作流程一致,智能路由模块中参数更新模块根据交互的样本对智能体中的神经网络进行参数更新。最后对重路由方法进行说明。首先重路由模块周期性地检测网络各链路是否到达提前设置好的拥塞阈值,如未到达则继续下一周期的检测,如到达则触发重路由。触发重路由后,首先从流信息存储模块,获取存储的流信息集合,然后对这些信息进行多次的序列重排,之后,将重排后的流信息逐个送入已训练好的智能体进行智能演算,全部完成后,依演算的结果选择一个最佳的流信息序列。将该序列中在智能演算中各流获取的路径与原序列流信息中的路径进行对比,将路径不一致的流挑选出来,进行重路由,更替为新的路径。实施例一为便于理解,对本发明使用的深度强化学习技术进行介绍。首先介绍强化学习(RL),在RL处理一个任务时,通常使用马尔可夫决策过程(MDP,MarkovDecisionProcess)来描述:在一个确定的环境E(Environment)中,有一个状态空间S(State)和一个动作空间A(Action),RL算法会使用一个智能体(Agent)在环境E中进行决策,状态空间S中的任一状态表示智能体所感知的当前环境,动作空间A中的每个动作都是在每种状态下都可以选择的动作。当智能体使用策略π(s)在某状态s下执行某动作a后(小写的s和a分别代表某个状态和动作),状态s会发生转移,环境E则根据此次状态转移给予智能体一个奖励r(Reward)。当智能体由初始状态开始逐步执行一系列动作,即进行一系列状态转移,直到一次交互(episode)结束,到达终止状态(done),智能体会得到一个累计奖励Score(Score=∑r)。RL的目标即是找到一个最优的策略π*(s),使智能体能够获得最大的Score。RL中常用的经典算法是Q-Learning算法。该算法通过对每个状态s下可能的各个动作a估计出对应的状态动作价值Q(s,a),简称Q值,并将<s,a,Q(s,a)>保存于Q表中。经过训练,智能体能正确地估计出所有的Q(s,a),则在应用过程中当某状态s出现时,只需在Q表中查找s对应的Q(s,a)最大时的动作a即可。但是当状态空间很大时,Q-Learning就会出现Q表过大,难以收敛等问题。为了解决上述问题,DeepMind团队于2013年提出DeepQ-Learning算法。该算法将传统的Q-Learning与深度学习DL结合起来,具体来说就是,将Q-Learning中的Q表用深度神经网络(DNN,DeepNeuralNetwork)代替,借助DNN强大的拟合能力,实现对Q(s,a)的估计。故而该技术属于深度强化学习DRL的范畴。在该算法中使用的DNN称为深度Q网络(DQN,DeepQNetwork)。本发明中的资源优化算法采用DeepQ-Learning方法,使用该方法训出的智能体称为DQN智能体。下面对本发明中所用到的网络模型、流的定义、路径分配、网络拥塞等进行定义。网络模型是指SDN网络中的数据平面的I个通信节点(Nodes),通常是SDN交换机,在下文中以Ni来表示第i个交换机,这些交换机之间按特定的拓扑结构相连。每台交换机上连接一台主机(Hosts),可以同时进行数据的收发,进而每台交换机都可以是网络流量的进出口。如果两台交换机相连,则它们之间有两条链路(全双工模式),全网有M条链路(Links),设L为所有链路按一个固定顺序排列起来形成的集合,则第m(m∈[1,M])条链路用Lm表示。设链路Lm能承载的最大传输速率(即容量)为Cm,链路Lm承载的实时传输速率(即负载)为Em,定义第m条链路的拥塞度为Ψm,Ψm=Em/Cm。下文中C、E、Ψ分别表示与L中链路按顺序一一对应的容量向量、负载向量、拥塞度向量。网络流(Flows)指按照具有相同五元组<源IP地址,源端口,协议,目的端口,目的IP地址>进行定义的一组网络数据包的集合。假设某链路Lm中共有J条流,定义第j条流的带宽需求为Dj,即该流需要的传输速率,定义第j条流的实时带宽为Bj,即该流在链路上的实时传输速率。在不发生拥塞情况下,Dj=Bj。则上文中所述的链路负载路径分配,本发明采用选路法。路径指多条首尾相连的链路按由源节点到目的节点的顺序依次形成的一个排列,如节点N1到N5之间有一条路径经过且仅经过节点N2,则该条路径为((N1,N2),(N2,N5))。本发明所述路径皆为无环路径。对于任意的节点对(源节点No到目的节点Nd),利用Python中的Networkx包(图论与复杂网络建模工具)计算得到K条备选路径,其集合为各路径按跳数由小到大的顺序排列。所谓路径分配,即在网络中有新的流需要分配链路时,从该流对应的路径集合Po,d中选取一条最优的路径。网络拥塞是指,在向网络中某链路分配流时,如果该流的流带宽B加上当前链路负载Em大于该链路的容量Cm时,则必然会发生拥塞。当某链路发生拥塞时,所有途经该链路的流都会出现服务质量的严重下降。根据以上的介绍,对于SDN架构下的资源优化问题,目标是:在一个具有N个交换机,M条链路的SDN网络中,在某时刻控制器收到来自交换机的流请求时,控制器根据当前的网络的拥塞度Ψ,及流的源节点No、目的节点Nd、带宽需求D等信息,为该流选取一条最优的传输路径在满足该流的带宽需求时,兼顾整个网络的负载均衡,以最大可能地实现拥塞的避免。同时,周期性地检查各链路拥塞度Ψm,若某链路Ψm大于或等于链路拥塞阈值δCT(CT,CongestThreshold),则进行全局的重路由,以进一步优化网络资源配置。本实施例提供了一种SDN架构下基于深度强化学习的资源优化方法,其至少包括:使用已训练好的智能体对网络中的新流,实时地根据当前网络状态与待分配流的带宽需求进行路径分配;所述智能体利用深度强化学习算法训练得到;检测网络拥堵情况,若网络即将出现拥塞,则触发重路由,对网络中的部分流进行路径的重新选择,以进一步地优化网络资源,实现拥塞避免。如图1所示,SDN网络包含数据平面(DP,DataPlane)与控制平面(CP,ControlPlane)。数据平面只包含若干个SDN交换机,及连接链路。控制平面可由一个或多个控制器(Controller)组成,本发明主要讨论一个控制器的情况,故下文皆称控制器。控制器通常具有很多功能模块,如拓扑发现等,对这些已有成熟技术的基础模块,不再进行介绍。SDN架构基本的工作机制是:当有数据流到达某交换机时,如果该交换机中有与之匹配的流表,则依照流表进行处理,如从某端口转发;如果该交换机中没有与之匹配的流表,则将已收到的数据包转发到控制器,请求下发流表。结合控制器整体构架及工作流程进行详述:流信息处理步骤:其对应控制器的流信息处理模块,其功能为当控制器收到来自某交换机转发的数据包后,对该数据包包头进行分析处理,以获取该数据包所在流的相关信息F。具体地,一部分是流基本信息Fb,即上述定义流的五元组信息,用于对不同流进行区分;另一部分是流路由信息Fr,是源主机和目的主机所分别连接的交换机(No和Nd),以及该流的带宽需求D三者的集合,故Fr=<No,Nd,D>,该信息用于为流分配路径。在获取上述信息后,将其以键值对F={Fb:Fr}形式转发到智能路由模块。关于流的带宽需求D的获取,在实际工作中,首先对流进行应用分类,获取其类型后,针对该类型的流预估一个带宽即可,现有很多成熟的流分类技术,本文不再赘述。在本发明所述的训练和测试过程中,设置为以数据包优先级(也就是应用分类)获取流带宽需求,在下文的训练设置部分详述。链路状态信息收集步骤:其对应链路状态信息收集模块,负责周期性地对全网各链路进行负载信息的收集。一部分是各链路的链路负载Em。由Em结合链路容量Cm,计算出链路拥塞度Ψm,并将其组合成拥塞度向量Ψ。另一部分是各链路上承载的各流基本信息Fb及对应的实时带宽B,组合为键值对FN={Fb:B},全网的FN的集合为实时流信息集合ΦN,因为考虑到网络中的流通常只会持续一段时间,故通过收集该信息可知当前网络中有哪些流。收集完成后,将Ψ发往流信息存储模块、智能路由模块及重路由模块,将实时流信息集合ΦN发送到流信息存储模块。智能路由步骤:其对应智能路由模块,负责对新流进行路径分配。智能路由模块分为两个主要的部分,一部分是DQN智能体,在训练和工作时都运行,另一部分是参数更新模块,负责在训练时对智能体进行参数更新,故只在训练时工作,工作时采用的智能体是已提前训练好的。此处仅说明工作时的情况。具体地,每周期接收链路状态收集模块发来的链路拥塞度Ψ并存储。在网络中链路状态是按周期收集,而新流的出现则是随机的,所以在新流出现时,均使用当前存储的链路拥塞度Ψ。收到流信息处理模块提交的流信息F={Fb:Fr}后,将Ψ、Fr送入训练好的DQN智能体,得出最优的路径及对应的Q值。将路径信息及Q值添加到原流信息F中,得到带路径的流信息之后将更新后的流信息Fp送入流信息存储模块及流表下发模块。流信息存储步骤:其对应流信息存储模块,负责将智能路由模块送来的流信息Fp按时间顺序进行存储,将该集合记为流信息集合Φ,并在链路状态信息收集模块送来当前流信息集合ΦN后,对Φ进行更新:首先是删除已经不存在的流的流信息,使流信息存储模块中的Φ与网络实际情况实时对应;然后,因之前流信息处理模块获取的流带宽需求D是一个预估值,不是精确值,故在收到ΦN后,结合Ψ,对Φ中每条流信息Fp进行检查,如果某流的路径中所有链路均无拥塞(Ψm<1),则其精确的带宽需求应为此时的实时带宽B,故依此对流路由信息Fr=<No,Nd,D>中的带宽需求D进行更新,即改为对应B的值,如果某流的路径中某条链路有拥塞(Ψm=1),则不更新,因此时的实时带宽不能代表带宽需求。重路由步骤:其对应重路由模块,在接收到链路状态信息收集模块发送的链路拥塞度Ψ后,对各Ψm进行逐一检查,若有某条链路的拥塞度Ψm超过了拥塞阈值δCT,则触发全局重路由。具体地,重路由触发后,重路由模块首先从流信息存储模块获取当前所有流的流信息集合Φ,再通过具体的重路由方法(下文详述)判断各流的当前路径是否需要更改,将需要更改的流信息组成重路由流信息集合发送到流表下发模块。流表下发步骤:其对应流表下发模块,负责在接收到流信息后对各交换机进行流表的增删。具体地,如果是智能路由模块送来的流信息Fp,则只添加对应的流表;如果是重路由模块发送的重路由流信息集合则先增添新流表,再删除原流表,完成各数据流的重路由。下面进一步对智能路由步骤进行详细介绍,如附图2。因智能路由步骤对应的智能路由模块主要运行DeepQ-Learning算法,首先对状态s和动作a进行定义如下:状态s:在本发明中,状态由链路拥塞度Ψ和当前流路由信息Fr=<No,Nd,D>联合组成,即s=[Ψ,Fr]。动作a:对任意的状态s来说,都可以由Fr计算出的K条备选路径,且备选路径按跳数由小到大排列,故选取备选路径的序号为动作a,a∈[1,2…K]。智能路由步骤主要分两部分,一部分是DQN智能体,另一部分是参数更新模块。其DQN智能体由数据预处理步骤、DQN、动作选择步骤构成。数据预处理步骤负责将状态s处理成DQN的输入特征矩阵同时输出备选路径集合Po,d。本发明中的DQN采用多层全连接网络,其中的可训练参数由θ表示。其输入为特征矩阵输出为K个路径各自对应的Q值。下文用Q(s)表示DQN的输出。动作选择模块,负责根据Q(s)给出具体的动作a,及动作a对应的Q值Q(s,a)。在训练模式下,采用ε-greedy方法给出动作a;在工作模式下,采用贪婪法,即a=argmaxQ(s)。具体地,ε-greedy方法指设置一个参数ε∈[0,1],在每次进行动作选择时随机出β∈[0,1],如果β>ε,则a=argmaxQ(s),否则,从所有可选动作[1,2…K]中随机选择一个作为动作a。利用该方法可以达到深度强化学习中的探索与利用的平衡,初始时,参数ε设置较大(如1.0),随着训练的进行,逐渐减小,直到一个最小值(如0.01)。这样设置,初始时更注重探索,越到后期越注重对学到的知识的利用。其参数更新步骤主要包括奖励计算及终止判断、交互缓存、损失函数计算等模块。奖励计算及终止判断模块,负责计算奖励r,并判断是否终止本轮(episode)交互,用一个布尔值done来表示。交互缓存模块负责将交互中的每步(step)的相关数据进行记录,具体的内容为表示下一个状态的特征矩阵,交互缓存为一个先入先出队列,其容量为Buffer_Size。损失函数计算步骤负责每过一定的步数从交互缓存中采样出一批样本,计算损失函数Loss,用于对DQN进行参数更新。进一步对数据预处理步骤的处理流程进行说明,如附图3。步骤(一)根据状态s中的流路由信息Fr及网络拓扑计算备选路径集合步骤(二)对各路径分别初始化一个链路拥塞度增量向量为M维的零向量,M为链路的总数量,该向量中的元素与链路集合L中的链路按顺序一一对应。步骤(三)分别根据对中的每个元素进行赋值。即依次遍历中的元素,如果该元素对应的链路在中,则该元素置为拥塞度增量D/Cm,D为当前流的带宽需求,Cm为该链路的容量;如果该元素对应的链路不在中,则该元素保持为0。步骤(四)将各分别与Ψ按位相加,得到预估链路拥塞度向量其意义为当前流分配到第k条路径上时,预计会得到的网络链路拥塞度向量。步骤(五)对各分别初始化一个M*H维的独热预估拥塞度矩阵为零矩阵。的M行与中的M个元素一一对应,其实质为的独热编码形式。独热编码,即一位有效(one-hot)编码。步骤(六)根据各中的元素对各中元素进行赋值。具体地,先将中的每个元素都乘以参数H(下文具体说明),再向上取整,然后对中的元素一一遍历,按照对中的每个元素进行赋值,式中的m、h分别表示中的元素在行、列上的坐标值。步骤(七)分别将中的M行按位相加,得到1*H维的输入特征向量将各依路径顺序合并成为K*H维的输入特征矩阵对步骤(五)中参数H的取值进行说明:H为想要控制的流量最小粒度τ占所有链路中最大容量Cmax的比例的倒数,即H=Cmax/τ,如在某网络中链路容量有1Gbps、2Gbps两种,而欲控制的流量最小粒度为10Mbps,则应设置H为200。相较于直接将各预估拥塞度向量作为特征向量,采用上述编码方式的特征向量的优势在于:1、训练出的智能体具备拓扑无关性,即网络拓扑结构改变时,智能体仍然能正常工作。因为对神经网络来说,输入的特征维度是固定的,如果以向量为输入,则神经网络输入为K*M维,则网络拓扑改变时,比如部分节点失效或临时增加一些节点,M将发生变化,训练出的智能体则无法工作。而对于上述特征向量来说,增删节点不会影响输入向量的维度,始终是K*H维,进而智能体可以在该情况下正常工作。2、神经网络结构大小与网络拓扑结构的大小无关,只与需要控制的流粒度有关。如果以向量为输入,随着网络拓扑结构的增大,M必然变大,从而导致神经网络的结构也会变大。而以上述特征向量为输入则不论网络拓扑结构有多大,输入神经网络的特征向量均为K*H维,进而保证了网络结构不会随拓扑结构增大。在这种情况下,如果控制器的算力强就可以设置的控制粒度细一些,即H值较大,如果算力弱就可以设置控制粒度τ粗一些,即H值较小。如网络的链路最大容量是1Gbps,需要控制的流量粒度τ为10Mbps,则H应取值为100,如要控制流量粒度为1Mbps,则H需取值1000。下面进行DQN智能体训练方法的详述:首先是进行训练时的设置说明。数据平面采用Mininet网络仿真软件进行仿真。主要因为在实际网络中不易进行流的模拟。仿真网络的拓扑结构采用NSFNet(NationalScienceFoundationNetwork),其具体拓扑见附图6,其他信息与上文所述的网络模型一致,每个交换机皆连接一个主机,每个交换机都可以作为收发的节点。网络流采用Iperf软件进行模拟,该软件的UDP模式可以生成任意带宽的UDP数据流。网络流的生成时间与链路状态信息收集对应,具体为每周期进行链路状态信息收集后,生成一个新的网络流。网络流的主机对每次随机生成,是任意两个不同的主机即可。生成的流带宽为网络最小控制粒度τ的1到10整数倍,其集合为Ω=[τ,2τ,…,10τ],每次生成流的带宽需求D从集合Ω中随机选择一个。在不同带宽的流包头打上对应带宽的优先级1到10,以使流信息处理步骤能够获取该流的带宽需求D。另外,设置每条流的目的端口号唯一,防止交换机将所有源及目的IP地址相同的流都认为是同一个流。网络流皆设置为静态流,即流生成后一直持续,在本轮交互中不会结束。控制平面采用Ryu控制器进行二次开发获得。控制器中的流信息存储步骤及重路由步骤无需工作。智能路由步骤中的DQN智能体与参数更新步骤同时工作。流信息处理步骤设置为以优先级获取流带宽需求D。DQN智能体中的动作选择模块采用ε-greedy方法。具体的仿真网络参数如表1所示:表1仿真网络参数表参数值拓扑结构NSFNet交换机数目14链路数目42链路容量10Mbps链路时延20ms最小控制粒度0.1Mbps参数H100下面对训练过程的步骤进行具体说明,训练过程分为交互子进程和参数更新子进程,下列步骤中,步骤(二)到步骤(六)为交互子进程,步骤(七)到步骤(十)为参数更新子进程。所述的一步交互指从向网络中添加一个数据流到完成对该流的路径分配。所述的一轮交互指从网络中没有数据流,经过多步交互,网络到达拥塞状态(有一条链路拥塞)。具体步骤为:步骤(一)系统初始化。具体地,首先启动控制器,各功能步骤所对应的模块加载正常后,启动Mininet仿真网络,控制器与数据平面各交换机建立连接,控制器获取数据平面拓扑结构。DQN中的参数θ进行随机初始化。设定训练交互的总轮数为epsoide_max,轮数epsoide=0。步骤(二)开始一轮交互。如果网络中有流,清空网络中的所有流,如没有,则保持。记录轮数,即每轮开始时epsoide加1。步骤(三)开始一步交互。每步设置时间周期T,起始时链路状态信息收集模块收集各链路信息,之后,数据平面依上述方法产生一个网络流。此时交换机中没有对应流的流表,则将到达的数据包发送至控制器。步骤(四)控制器对当前流进行路径分配。数据包到达控制器后,流信息处理步骤对数据包进行解析,获取流信息F={Fb:Fr},将该信息发送到智能路由步骤。智能路由步骤中,数据预处理步骤将状态s=[Ψ,Fr]转换为特征矩阵送入DQN,得出Q(s),再由动作选择步骤给出具体的动作a及Q(s,a),再结合路径集合给出分配的路径将及Q(s,a)添加至流信息F。得到带路径的流信息步骤(五)下发流表。流表下发步骤根据上述的流信息Fp,向各对应交换机下发流表,使该流在网络中正常传输。步骤(六)奖励计算及终止判断。奖励计算步骤在收到智能路由步骤发送的动作a、预估拥塞度向量Ψpre及路径集合Po,d,得出动作a对应的预估拥塞度向量及路径然后根据判断是否终止本轮交互。即遍历如果其中任意元素大于1,则说明将当前流分配到网络中会引发拥塞,则终止本轮交互,赋值done=True;否则,继续进行本轮交互,赋值done=False。当done=True时,检查epsoide是否等于epsoide_max,如等于,结束训练,否则,返回步骤(二);当done=False时,返回步骤(三)。同时,进行奖励r的计算,具体的依进行计算。其中α为系数,t为本次所选的路径的跳数。步骤(七)在交互子进程进行的同时,记录交互过程于交互缓存中。具体地,每交互一步,将交互样本存储于交互缓存之中。步骤(八)每过一定的交互步数,即更新步数(update_steps),从交互缓存中随机采样一批样本,批量大小为Batch。步骤(九)根据采样到的样本,进行损失函数Loss的计算。首先是计算交互样本中的目标Q值Qtarget,即期望的Q值。其计算公式为:其中的r为交互样本中的奖励,γ为折扣因子,表示随着时间的推移奖励的衰减,Q(s′)表示交互样本中下一状态特征矩阵对应的Q值。再依公式计算损失函数Loss,Q(s,a)表示交互样本中的实际Q值。故损失函数是一批样本目标Q值与实际Q值的均方误差的平均。步骤(十)对DQN进行参数更新。根据步骤(九)中计算出的损失函数Loss以Adam优化器对DQN的参数θ进行更新(需设置学习率η)。之后,返回步骤(八)。具体的DQN训练超参数如表2所示:表2DQN训练超参数表参数值优化器Adam学习率0.0005训练总轮数5000交互缓存容量50000更新步数4批量大小32折扣因子0.99备选路径数量4系数α0.1通过上述步骤即可训练出DQN智能体。下面对本发明的重路由方法进行说明,首先阐述本发明进行重路由的思想。通常,在网络出现拥塞,或者即将出现拥塞时,会采用对部分流进行重路由的方法,来缓解网络的拥塞。那么到底如何选取应该进行重路由的流呢?通过观察发现,对于所有的这类根据当前网络状态在几个备选路径中选取一条最优路径的方法来说,网络流出现的顺序十分重要。在实际中流的顺序只有一种,即时间序列,但是,可以在控制器中利用流信息进行演算,以获得一个最佳的流序列,及该序列对应的每条流的路径,然后将该序列对应的路径与实际中的路径进行一一对比,如果某条流路径相同,则不必重路由,如果路径不同,则对该流进行重路由。如何获取一个最佳的流序列呢?在DeepQ-Learning算法中,DQN网络训练完成后,即能估计当前网络状态下每个动作对应的Q值,而Q值即是在当前时刻选取某动作后网络所能得分的期望值,从上述训练过程可知,得分越大,意味着能容纳的流数就越多,即在未来发生拥塞的可能越小,故而Q值越大,则代表网络状态更好,预期能容纳更多的流。所以,上述重路由的问题可以转化成为一个组合优化的问题,即如何通过对已知的流信息的序列重排,及进行模拟演算,使最后的Q值最大。本发明采用求取组合优化问题近似解常用的随机搜索方法(RS,RandomSearch)。重路由步骤所对应的重路由模块的结构如附图4所示,主要由拥塞阈值检测、随机序列重排、DQN智能演算、最佳序列选择、重路由流选择等模块组成。下面结合各模块对重路由模块的工作步骤进行说明:步骤(一)拥塞阈值检测。在每次收到链路状态信息收集步骤所对应的链路状态信息收集模块送来的链路拥塞度Ψ时,拥塞阈值检测模块将Ψ中的每个元素均与拥塞阈值δCT进行比较。如果有元素大于或等于δCT,则触发重路由,进入步骤(二),否则,等待下一周期。拥塞阈值δCT通常可取0.7到1之间的数值,根据具体情况选择。另外,为防止在网络总负载较大时,频繁触发重路由,进一步导致网络的混乱,可设定一定时间段内进行重路由的最大次数。步骤(二)随机序列重排。在重路由触发后,随机序列重排步骤所对应模块首先获取流信息存储模块中的以时间顺序存储的流信息集合之后对该序列进行随机重排ω次,获取ω个新的不同序列的重排流信息集合(加横杠与实际的信息区别,下同)。并将ω个送入DQN智能演算模块。步骤(三)进行智能演算。此处的DQN智能演算步骤所对应模块是对上述的智能路由步骤所对应模块中已训练好的DQN智能体稍做改变得到的,如附图5,改变之处在于:此模块中的状态中的链路拥塞度在对每个重排流信息集合演算开始时,初始化为M维零向量,且在每步演算结束得到动作后,即按照对进行更新,即为下一步演算的为数据预处理步骤所对应模块计算出的预估拥塞度向量中与动作对应的向量。故此步具体为,依先后顺序将某重排流信息集合中的每个流信息逐个送入DQN智能演算步骤所对应模块进行演算,其中的由上述方法获得。每个流信息经智能演算后,得到新的路径及将各流信息原有的路径更改为将原Q(s,a)更改为则单个流信息变为对ω个重排流信息集合分别进行演算后,将改变后的流信息集合ω个送入最佳序列选择模块。步骤(四)进行最佳序列的选择。最佳序列选择步骤所对应模块将经过智能演算后的ω个的各自的最后一个流对应的取出,进行比较,选出最大的一个则对应的序列为最佳序列流信息集合将与当前网络的实际Q(s,a)进行比较,如果大,则进行下一步,否则,结束重路由,返回步骤(一)。实际的Q(s,a)即为实际流序列Φ中的最后一个流信息中的Q(s,a)。步骤(五)重路由流选择。将最佳序列流信息集合中各流的路径与实际流序列Φ中各流对应的路径一一对比,将路径不同的流信息提取出来组成一个新的流信息集合,其路径为全部完成后即得到重路由流信息集合将该集合送入流表下发模块,进行数据平面流表的增删。结束本次重路由,返回步骤(一)。重路由相关参数如表3所示:表3重路由参数表对比实验:为说明本发明在网络资源优化中的优势,本发明与GLB方法进行对比。为说明重路由的优势,将只用智能路由(标示为DQN)和智能路由加重路由(标示为DQN RS)两种模式分别进行实验。测试的设置为与上述训练的设置基本一致,具体的不同之处:一是采用的流带宽集合为Ω=[4τ,12τ,20τ],即在测试中生成的流的带宽分别为0.4Mbps、1.2Mbps、2.0Mbps;二是在智能路由加重路由(DQN RS)模式下,流信息存储模块与重路由模块正常工作,本测试中单次测试只进行最多一次重路由。具体的测试方法为:首先生成50个包含100条流信息的列表。上述每种方法均使用这些流信息进行总共50次测试,每次生成100条流。一次测试过程中,每链路状态收集周期依次按流信息列表生成一条网络流,分别以上述三种方法进行路径分配。对比的指标为:流带宽满意度(bandwitdhsatisfaction),每周期对所有已存在的流进行检查,查看其实时传输带宽是否大于或等于其带宽需求,该指标为带宽需求满足的流数目与总的流数目之比。网络的时延(delay)、抖动(jitter)、丢包率(packetloss),每周期对网络中已存在的各流的时延、抖动、丢包率进行统计并平均,以获取随着流数目的增加网络中流的QoS指标的变化情况。吞吐量(throughput)指标,定义为网络中所有流的实时传输带宽之和。有效吞吐量(effectivethroughput)指标,其定义为每周期带宽需求被满足的所有流的实时传输带宽之和,相比于吞吐量,有效吞吐量更能说明网络资源分配的优劣。结果分析(以下所有测试结果为首先进行50次测试结果的平均,之后再将每5个相邻数值平均为一个值):流带宽满意度变化曲线如图7所示,其横轴为流数,纵轴为流带宽满意度。该曲线旨在说明随着网络中流数目的增加,各流的带宽满意度变化情况。从图中看出,初始时,各种方法的流带宽满意度均为1,随着流数目的增加,各曲线都会下降(当流带宽满意度小于1时,网络即到达拥塞状态)。GLB方法最早出现流带宽满意度的下降,且后续下降幅度最大,DQN方法次之,DQN RS方法最优,即最晚下降,后续下降幅度最小。该曲线说明,相较于GLB,本发明提出的DQN及DQN RS方法,在同样条件下,可使网络满足更多流的带宽需求,更晚地到达拥塞状态。时延、抖动、丢包率等变化曲线如图8所示,这些指标均为每周期对网络中各流的时延、抖动、丢包率进行统计并平均得到的。各图横轴均为流数,纵轴为各指标,其中图8(a)为时延,单位是毫秒(ms),图8(b)为抖动,单位是毫秒(ms),图8(c)为丢包率,是一个比值。从各图可以看出,初始时,各指标都很小,随着流数目的增加,网络进入拥塞状态之后,各指标开始恶化。其规律与上述流带宽满意度基本一致,即GLB方法最早出现各指标的恶化,且后续各指标恶化幅度最大,DQN方法次之,DQN RS方法最优,即最后出现指标恶化,且后续恶化幅度最小。这三条曲线说明,相较于GLB,本发明提出的DQN及DQN RS方法,在同样条件下,可使网络中流的时延、抖动、丢包率等指标更小,使网络能提供更好的服务质量。吞吐量与有效吞吐量变化曲线如图9(a)和图9(b)所示,横轴均为流数,纵轴为各指标,图9(a)为吞吐量,单位为兆比特每秒(Mbps),图9(b)为有效吞吐量,单位为兆比特每秒(Mbps)。吞吐量随着流的增加变化曲线如图9(a)所示,在未拥塞前,三种方法的吞吐量曲线基本一致,且呈线性增长,在后期网络到达拥塞之后,增长速率均开始下降,其中GLB算法因最早出现拥塞,而最早开始下降,且最终吞吐量最低,DQN方法次之,DQN RS方法最优,在后期吞吐量的增长速率最优,吞吐量也最大。但是如果只从吞吐量来看,不能很好地显示本发明的优越,因为虽然三者吞吐量在后期已经能明显地看出优劣,但是总体来说还是十分接近。故而引入有效吞吐量,图9(b)是上文所定义的有效吞吐量的变化曲线,该曲线更贴近网络拥塞后用户的实际体验,以及我们的日常经验,即网络在拥塞之后,肯定是状况会变差,而不是像吞吐量曲线显示的那样,只是增长速率变低而已。如图,在未拥塞前,各链路的有效吞吐量随流数目的增加持续增长,且呈线性增长,拥塞发生后,其有效吞吐量增长速率下降,直到到达一个峰值,在此之后,随着流数的增长,有效吞吐量开始下降。之所以有这样的规律是因为,拥塞初期,拥塞的链路较少,网络中仍有很多链路是负载较轻的,出现新流与原有流争夺带宽的情况较少,所以随着流数目的增长,有效吞吐量只是增长速率下降;而随着流数目不断地增长,处于拥塞的链路数目越来越多,新到的流与之前已存在的流争夺带宽的情况越来越多,而导致很多经过拥塞链路上的所有流都不能得到带宽需求的满足,自然会出现有效吞吐量下降的现象。对于上述的三种方法来说,GLB方法最早到达有效吞吐量最高点,约在第65条流添加时,且有效吞吐量一直最低,DQN算法次之,约在第80条流添加时,DQN RS方法最优,约在第85条流添加时到达有效吞吐量的最高点,且有效吞吐量一直最高。这两条曲线说明,相较于GLB,本发明提出的DQN及DQN RS方法,在同样条件下,可使网络的吞吐量及有效吞吐量更大,使得网络可以为更多用户提供有效的服务。综上所述,本发明提出的SDN架构下基于深度强化学习的资源优化方法,利用DeepQ-Learning算法训练得出的DQN智能体对网络流进行实时路径分配,并在网络即将到达拥塞时以DQN智能体的演算为依据进行重路由,尽可能多地满足了网络流的带宽需求,有效地实现了拥塞避免,提高了网络的整体服务质量和传输性能,很好地实现了网络的资源优化。同时,通过一种特殊的数据预处理方法,使得DQN智能体能应对网络中的拓扑结构的变化,使得本发明具有很好的适应性和鲁棒性。实施例二本实施例提供了一种SDN架构下基于深度强化学习的资源优化系统,其至少包括:智能路由模块,其用于使用已训练好的智能体对网络中的新流,实时地根据当前网络状态与待分配流的带宽需求进行路径分配;所述智能体利用深度强化学习算法训练得到;重路由模块,其用于检测网络拥堵情况,若网络即将出现拥塞,则触发重路由,对网络中的部分流进行路径的重新选择,以进一步地优化网络资源,实现拥塞避免。此处需要说明的是,本实施例的SDN架构下基于深度强化学习的资源优化系统中的各个模块,与实施例一中的SDN架构下基于深度强化学习的资源优化方法中的各个步骤一一对应,其具体实施过程相同,此处不再累述。实施例三本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述所述的SDN架构下基于深度强化学习的资源优化方法中的步骤。实施例四本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述所述的SDN架构下基于深度强化学习的资源优化方法中的步骤。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜