SDN架构下基于深度强化学习的路由决策方法及装置与流程

文档序号:16097163发布日期:2018-11-27 23:43阅读:431来源:国知局

本发明涉通信技术领域,特别是涉及一种SDN架构下基于深度强化学习的路由决策方法及装置。



背景技术:

长期以来,拥塞避免和路由优化一直都是现代通信网络中流量工程的重要研究课题。随着用户数量和网络规模的飞速增长,网络结构越来越复杂,网络拥塞和路由优化面临着越来越大的挑战。

网络中高度动态变化的流量业务和分布不均的流量密度是引起网络拥塞的主要原因。为了解决网络拥塞,常见的解决方案主要有:对可能引起网络拥塞的流量进行多路径分流以防止流量造成的负载过度集中。其中,等价路由(Equal-CostMultipathRouting hash,ECMP)技术就是一种常用的网络负载均衡技术。具体的,ECMP技术的基本原理是:当网络中源地址和目的地址之间存在多条不同链路时,支持ECMP的网络协议可以同时使用多条等价的链路进行源地址和目的地址之间数据的传输。

然而,ECMP技术只是简单地将流量平均分配给各条等价链路而不考虑网络中流量的分布,这导致其在具有非对称拓扑和流量的网络中表现不尽如人意。在具有非对称拓扑结构的网络中,流量分布是非对称的,而且流量分布越不均衡,就越难以通过ECMP技术来减少或避免网络拥塞的产生。并且由于难以减少或避免网络拥塞的产生,在网络流量高度动态变化的网络环境中,基于ECMP技术的路由策略也不能实现最优。



技术实现要素:

本发明实施例的目的在于提供一种SDN架构下基于深度强化学习的路由决策方法及装置,以在各种拓扑结构的网络中,减少网络拥塞的发生,并在网络流量高度动态变化的网络环境中,实现路由策略的最优化。具体技术方案如下:

第一方面,本发明实施例提供了一种SDN架构下基于深度强化学习的路由决策方法,应用于SDN控制器,所述方法包括:

获取网络中的实时流量信息;其中,所述实时流量信息包括:所述网络中的每条流所占用的链路带宽;

确定所述每条流的优先级;

将所述实时流量信息输入预先训练的深度Q网络DQN,按照所述每条流的优先级高低顺序,依次确定出所述每条流的路由;

其中,所述DQN是根据样本流量信息和所述样本流量信息对应的样本路由策略训练得到的;所述样本流量信息包括:每条样本流所占用的链路带宽,所述样本路由策略包括:所述样本流量信息对应的所述每条样本流的路由。

第二方面,本发明实施例提供了一种SDN架构下基于深度强化学习的路由决策装置,应用于SDN控制器,所述装置包括:

第一获取模块,用于获取网络中的实时流量信息;其中,所述实时流量信息包括:所述网络中的每条流所占用的链路带宽;

第一确定模块,用于确定所述每条流的优先级;

第二确定模块,用于将所述实时流量信息输入预先训练的深度Q网络DQN,按照所述每条流的优先级高低顺序,依次确定出所述每条流的路由;

其中,所述DQN是根据样本流量信息和所述样本流量信息对应的样本路由策略训练得到的;所述样本流量信息包括:每条样本流所占用的链路带宽,所述样本路由策略包括:所述样本流量信息对应的所述每条样本流的路由。

第三方面,本发明实施例提供了一种SDN控制器,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行所述存储器上所存放的程序时,实现如上第一方面所述的SDN架构下基于深度强化学习的路由决策的方法步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如上第一方面所述的SDN架构下基于深度强化学习的路由决策的方法步骤。

第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如上第一方面所述的SDN架构下基于深度强化学习的路由决策的方法步骤。

本发明实施例中,预先根据样本流量信息,以及所述样本流量信息对应的样本路由策略训练得到的DQN,进而在确定网络中每条流的路由时,在获取了网络中的实时流量信息后,将该实时流量信息输入训练好的DQN,使得DQN按照网络中每条流的优先级,依次确定出每条流的路由。由于本发明实施例基于预先训练的DQN网络来确定路由,而DQM网络训练时可以依据待分析的拓扑结构的网络的样本数据,因此,本发明实施例可以在各种拓扑结构的网络中减少网络拥塞的发生,并在网络流量高度动态变化的网络环境中,实现路由策略的最优化。

当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的一种SDN架构下基于深度强化学习的路由决策方法的流程图;

图2为本发明实施例提供的一种SDN架构下基于深度强化学习的路由决策方法的另一流程图;

图3为本发明实施例提供的一种SDN架构下基于深度强化学习的路由决策方法的另一流程图;

图4为本发明实施例提供的一种SDN架构下基于深度强化学习的路由决策装置的结构图;

图5为本发明实施例提供的一种SDN架构下基于深度强化学习的路由决策装置的另一结构图;

图6为本发明实施例提供的一种SDN控制器的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了便于理解方案,下面首先对SDN(Software Defined Network,软件定义网络)、DRL(Deep Reinforcement learning,深度强化学习)以及DQN(DeepQ Network,深度Q网络)进行简单地介绍。

SDN是一种新型的网络架构。与传统的网络架构不同,SDN提出了网络的数据平面与控制平面分离的思想。其中,网络的数据平面与控制平面之间的通信可以通过一种开放的协议——Openflow协议来实现。基于Openflow协议,数据平面中的Openflow交换机除了可以进行普通的数据流量转发和传输之外,还能够将采集的网络的实时流量信息上传给网络的控制平面的SDN控制器。SDN控制器可以收集其所管理的网络区域内的Openflow交换机所上传的流量信息并进行汇总,根据收集到的网络流量信息来制定相应的路由策略和转发机制。SDN架构与传统的网络架构相比具有很多优势,基于SDN架构可以实现网络功能的虚拟化(Network Function Virtualization,NFV),解耦软硬件,抽象网络功能,使网络设备功能不再依赖于专用硬件,从而充分灵活共享资源。通过SDN控制器,可以完全地实现网络的全局路由控制。这就意味着可以从整体的角度出发控制网络中流的路由策略和流量分配以解决网络中由于流量密度分布不均而引起的拥塞问题。

DRL是一种新型的机器学习方法,是结合了深度神经网络(Deep Neural Network,DNN)的强化学习(Reinforcement Learning,RL)方法,由DeepMind提出。如果想要将DRL应用于不同场景下的控制问题,需要保证该控制问题满足以下条件:(1)一个具有明确规则和定义的环境;(2)一个能够得到正确和及时反馈的系统(3)一个用于定义任务目标的奖励函数。网络的流量控制和路由决策问题是满足以上条件的,也就是说,使用DRL来实现网络的流量控制和路由决策是可行的。具体的,RL处理一个任务时,通常可以使用马尔可夫决策过程(MarkovDecisionProcess,MDPs)来描述:在一个确定的环境E中,有一个状态空间S以及一个动作空间A,RL会使用一个代理在该环境E中进行决策,状态空间S中的任一个状态表示代理所感知的当前环境,动作空间A中的任一个动作都是在每种状态下可供选择的动作。当代理使用策略π(s)在某个状态下执行某个动作后,状态会发生转移。而在状态发生转移后,环境E会根据此次状态转移给予代理一个奖励(reward)。当代理使用策略π(s)由初始状态开始执行一系列动作,即进行一系列状态转移后,代理会得到一个累积奖励Qπ(s,a)。RL的目标就是找到一个最优的策略π*(s),能够最大化代理得到的累积奖励。

在RL处理任务时,可以通过Q-learning来找到最优策略。但当状态空间过于庞大时,通过Q-learning求解各个状态下的累积奖励Qπ(s,a)的过程会变得十分困难。为了解决这个问题,可以使用DNN通过近似的方式来求取累积奖励Qπ(s,a)。这种结合了DNN和Q-learning的方法称作DQN。

DQN的主要结构为一个神经网络——称之为Q网络,Q网络可以将状态s作为输入,输出状态s下可选动作的Qπ(s,a)值,由于输出的Qπ(s,a)是Q网络近似的,因此需要训练Q网络的参数θ来使得近似的Qπ(s,a)更精确,具体的,在训练过程中,可以计算损失函数的值,在损失函数的值不满足设定条件时,通过常见的反向传递和梯度下降法来更新Q网络的参数θ。当Q网络在经过足够多的训练和更新之后,Q网络输出的Qπ(s,a)就会接近最优的累积奖励Q*(s,a),同时当前策略π(s)也会逼近最优策略π*

在网络中,当链路或设备上的传送的数据流量负载超过链路带宽或设备的最大处理能力时,会导致该链路或设备上的传输时延增加,吞吐量下降,同时传输数据会产生丢包,这种引起网络传输性能下降的情况称为网络拥塞。一般情况下,网络中的拥塞都是由于链路或设备的负载过重导致的,当网络中总的数据传输负载超过网络可容纳的负载上限时,网络拥塞是难以避免的,对于这种情况只能通过升级网络硬件或增加额外设备的方式来避免网络拥塞。但是在很多情况下,即使网络中总的数据传输负载远未到达网络可容纳的负载上限,网络拥塞也会发生。这种网络拥塞大多是由于网络中数据流量分布不均所导致的:由于传统路由协议中往往使用基本的最短路径算法,在网络中某些处于关键位置的链路或设备上往往会集中大量的流量负载,而另外一些处于网络边缘的设备或链路上负载则很少,网络资源的利用率很低。对于这种情况导致的网络拥塞,可以对网络的路由策略进行优化来减少或避免。

很明显地,一个网络中的最优路由策略要根据网络拓扑结构和实时的网络流量信息来决定。当网络中的数据流量变化时,网络的最优路由策略也需要随之变化。这要求必须掌握网络的实时流量信息,以根据该实时流量信息来对网络的路由策略进行优化。

为了实现在各种拓扑结构的网络中减少网络拥塞的发生,并在网络流量高度动态变化的网络环境中,实现路由策略的最优化,本发明实施例提供了一种SDN架构下基于深度强化学习的路由决策方法及装置。

在本发明的方案中,可以在SDN的网络架构下,通过SDN网络架构中位于控制平面的SDN控制器来实现网络的实时流量信息的采集和汇总,当SDN控制器将整个网络的实时流量信息汇总完毕后,可以根据网络的实时流量信息,利用DRL方法确定出网络的当前最优路由策略。进一步地,可以基于DRL中的DQN来确定出网络的当前最优路由策略。

下面首先对本发明实施例所提供的一种SDN架构下基于深度强化学习的路由决策方法进行介绍。

如图1所示,本发明实施例提供的一种SDN架构下基于深度强化学习的路由决策方法,应用于SDN控制器,该方法可以包括以下步骤:

S101,获取网络中的实时流量信息;其中,实时流量信息包括:网络中的每条流所占用的链路带宽。

本发明实施例提供的方法可以应用于SDN控制器。SDN控制器是SDN网络架构中控制平面的控制器,可以收集SDN网络架构中数据平面的Openflow交换机发送的上述网络的实时流量信息,并基于该实时流量信息制定相应的路由策略和转发机制。因而,上述网络可以是一种具有SDN网络架构的通信网络。

为了便于理解本实施例中的网络、流和拥塞问题,下面对本实施例中网络的模型、网络中流的定义和流的路由方式、以及网络的拥塞问题进行介绍。

首先,网络的模型是:一个具有若干个通信节点,m条物理链路的通信网络。每个通信节点对应着SDN网络架构中数据平面的每个Openflow交换机。所有的通信节点可以分为两种:源节点和转发节点。源节点是网络中的产生和最终接收数据包的节点,网络中所有的数据包都由源节点产生,并最终都会到达源节点。本实施例中,设定网络中的源节点的个数为n,用s1,s2,s3......sn表示源节点。转发节点是网络中的负责转发数据包的节点,转发节点不产生数据包,它们仅仅对由其他节点传输过来的数据包基于流表进行转发操作。

然后,网络中的流是指:网络中所有由相同的源节点出发,最终到达相同的目的节点的数据包归为一类,此类数据包共同组成一条流。其中,任一条流的源节点和目的节点不能为同一个节点,这里的任一条流的源节点是指:这条流的起始节点。基于此,可以推断出,在一个具有n个源节点的网络中,最多有N=n2-n条流。为了定量地描述每一条流在网络中的流量需求,定义:一条以节点si为源节点,节点sj为目的节点的流在链路中正常传输所占用的链路带宽为fi,j。对于每条流fi,j,可以为该条流在所有源节点和所有目的节点间确定出x条备选路由每条备选路由都指定了流fi,j由源节点si出发到达目的节点sj所经过的所有链路。在本实施例中,对网络进行路由决策的方式就是:对于网络中每条流,为其从备选路由中选择一条作为这条流的实际路由(简称为这条流的路由)。因此,流的路由方式是指:流通过其实际路由所指定的所有链路实现流中数据包的传输。需要说明的是,在本实施中,流是路由决策中所控制的最小单位,以流为最小单位进行路由决策,对于使用流表控制数据包转发的SDN控制器来说是易于实现的。

最后,网络的拥塞问题是指:对于网络中的m条物理链路,为每条物理链路指定两个参数:链路的最大可用的带宽阈值t1,t2,t3,...,tm和链路的实时链路负载值l1,l2,l3,...,lm。其中,链路的带宽阈值与实时链路负载值的度量单位相同。在上述对流的定义中,将流在链路中正常传输所占用的链路带宽表示为fi,j。那么对于一条链路k,如果当前状态下有多条流的路由经过这条链路k,例如:有三条流f1,2,f1,3,f1,4的路由经过链路k,定义该条链路k上的实时链路负载值lk等于上述多条流在链路中正常传输所占用的链路带宽之和,即链路k的实时流量负载lk=f1,2+f1,3+f1,4。如果lk的值超过了链路k的最大可用的带宽阈值tk,那么认为此时链路k上发生了拥塞,lk的值超过带宽阈值tk的程度对应着链路k上发生拥塞的严重程度,拥塞的严重程度越高,链路k的吞吐量越低,流经链路k的流的时延也就越高,即三条流f1,2,f1,3,f1,4的传输延迟越高;如果lk的值不超过链路k的最大可用的带宽阈值tk,则认为此时链路k上不会有拥塞发生,链路k的吞吐率量随着lk的值增加而线性增加,同时流经链路k的流能够在可接受的时延范围内进行传输。

基于上述对网络的模型、网络中流的定义和流的路由方式、以及网络的拥塞问题的介绍,对于网络的路由决策问题,目标是:在一个具有n个源节点,m条物理链路的网络中,在得到了某一时刻网络中每条流所占用的链路带宽的条件下,为每条流选择最合适的路由,使得网络的负载均衡状态最优,网络中发生拥塞的几率最小。可以理解的是,若某一时刻某条流不存在,其所占用的链路带宽即为0。

本实施例中,SDN控制器可以通过将SDN网络架构中位于数据平面上的所有Openflow交换机发送的网络的实时流量信息进行收集并汇总,来获取网络中的实时流量信息。这一过程可以通过现有技术实现,本发明在次不进行赘述。

在实际使用中,SDN控制器可以按一定的时间间隔,周期性地获取网络中的实时流量信息。SDN控制器每获取一次网络中的实时流量信息,就可以针对所获取的实时流量信息,进行一次路由决策。这就体现了本实施例中的当网络中的流量信息发生变化时,相应地,网络的路由策略也随之调整。因而,在网络中的流量高度动态变化时,SDN控制器实时地获取网络中的实时流量信息,并调整路由策略,可以始终保持网络的路由策略最优。

上述时间间隔可以根据网络的具体情况来确定。具体的,可以根据网络的流量变化程度来确定。若网络的流量变化较快,则可以将上述时间间隔设置为一个较小的值;若网络的流量变化不快,则可以将上述时间间隔设置为一个较大的值。

S102,确定每条流的优先级。

通过大量的仿真实验,发明人观察到:当对具有非对称拓扑结构的网络进路由决策时,为网络中的所有流选择路由的顺序对DQN(步骤S102中的DQN是指:训练好的DQN)的处理速度和效果有着显著的影响,一些情况下DQN的处理速度会显著提升,而另一些情况下DQN的处理速度十分缓慢甚至难以收敛。通过多组仿真实验的对比,发现DQN的处理速度和效果与不同流的备选路由有关:当某条流的备选路由中有一条“理想”路由时,这里“理想”路由是指:这条路由所流经的路径上其他流带来的负载很小,即这条路由所流经的路径上不易发生拥塞,优先进行这条流的路由选择可以让DQN以更快的处理速度来优化路由决策,而如果优先对那些备选路由均非“理想”路由的流进行路由选择,会使得DQN的处理时间更多,而且处理效果也很不理想。这是因为:当一条流的备选路由中有一条路由明显优于其他路由时,DQN很容易就能输出这条流的最优路由策略,当按一定的顺序为网络中的所有流选择路由时,这条流的顺序越靠前,DQN就能越快地输出这条流的最优路由策略,同时优化整个网络的路由策略所需要探索的解空间也就越小,处理也就越容易。上述DQN处理是指:基于训练好的DQN确定出网络中每条流的最佳路由。

基于上述原因,本实施例中,在DQN处理之前,针对流的路由策略确定顺序提出了流的优先级确定方法。一种实现方式中,步骤S102中的确定每条流的优先级,可以包括以下步骤:

S11,针对每条流fi,j,确定该条流的x条备选路由其中,i表示流fi,j的源节点,j表示流fi,j的目标节点。

网络中的源节点和转发节点可以组成多条路由。那么针对每条流fi,j,可以在多条路由中先选出一些备选路由,以进一步在这些备选路由中选出一条作为这条流fi,j的实际的路由。

其中,选取每条流的备选路由时,每条流的备选路由可以满足以下条件:

条件1:每条流的任一备选路由无环。

可以理解,当一条备选路由中存在环路时,意味着这条备选路由上传输的数据包将无法达到目的节点。

条件2:每条流的任一备选路由所经过的路径与其他备选路由所经过的路径不完全相同。

也就是说,针对任一条流,这条流的每条备选路由均与这条流的其他备选路由不同。由于本实施例的目的是:针对任一条流,在这条流的多条备选路由中选择出一条最佳的作为这条流的实际的路由,所以,为了便于比较多条备选路由,多条备选路由可以各不相同。

条件3:每条流的任一备选路径的距离满足预设值。

针对任一条流,为这条流选择最佳路由时,通常希望这条最佳路由的距离较短。所以可以设定一预设值,将距离小于该预设值的路由作为这条流的备选路由。一条路由的距离是指:这条路由的源节点(即:起始节点)到目的节点的距离,具体地,可以通过这条路由的条数或其他常用方式来衡量这条路由的距离。上述预设值可根据实际需要进行设定。针对不同的流,可以设置相同的预设值,也可以分别设置不同的预设值,本发明对此并不限定。

S12,通过以下公式计算流fi,j的第r条备选路由的评价值EVr:

其中,l1,l2,l3,...,L表示第r条备选路由听经过的各条链路,表示网络中除流fi,j之外的其他流的备选路由中,经过各条链路l1,l2,l3,...,L的各总次数;表示各总次数中的最大值。

在确定出每条流的备选路由后,可以对这条流的各条备选路由进行评价。具体的,可以评价每条备选路由所经过的各条链路被其他流占用的情况。本实施例中,可以设定上述的评价值EVr来评价每条备选路由所经过的各条链路被其他流占用的情况。通过上述评价值EVr的计算公式可以得出这样的结论:一条备选路由的EVr值越大,就意味着这条路由经过的链路的使用率越低,流fi,j选择这条路由后发生拥塞的可能性越小。

S13,通过以下公式计算流fi,j的优先级参考值Pi,j:

Pi,j=max(E)-max(E\{max(E)})

其中,E表示由流fi,j的所有备选路由的评价值组成的集合,E={EV1,EV2,EV3...EVX},max(E)表示所述集合E中的最大值,E\{max(E)}表示将所述集合中E中的最大值max(E)去掉后组成的新集合,max(E\{max(E)})表示所述新集合E\{max(E)}中的最大值。

计算出流fi,j的所有备选路由的评价值后,可以进一步根据所有备选路由的评价值计算出流fi,j的优先级参考值Pi,j。该优先级参考值Pi,j表示了:在流fi,j的所有备选路由中,评价值最大的备选路由和评价值第二大的备选路由的评价值之差。也就是说,该优先级参考值Pi,j表示了:流fi,j的所有备选路由中最“理想”的路由优于其他路由的程度。优先级参考值Pi,j越大,流fi,j的优先级就越高。

S14,按照所述每条流的优先级参考值的高低顺序,确定出所述每条流的优先级;其中,优先级参考值最高的流的优先级为0,优先级参考值最低的流的优先级为N-1。

计算出所有流的优先级参考值后,可以将所有流的优先级参考值按照从高到低的顺序排序。排序后的顺序就是为所有流选择路由的顺序。一条流的优先级参考值越高,则这条流的优先级越大。那么,在进行路由决策时,这条流的顺序就越靠前。

本实施例中,将优先级参考值最高的流的优先级表示为0,优先级参考值最低的流的优先级表示为N-1。确定出每条流的优先级后,可以按照优先级从0到N-1的顺序,依次确定每条流的路由。

S103,将实时流量信息输入预先训练的深度Q网络DQN,按照每条流的优先级高低顺序,依次确定出每条流的路由;其中,DQN是根据样本流量信息和样本流量信息对应的样本路由策略训练得到的;样本流量信息包括:每条样本流所占用的链路带宽,样本路由策略包括:样本流量信息对应的每条样本流的样本路由。

为了确定出每条流的路由,可以根据预先获取的样本流量信息和样本流量信息对应的样本路由策略,对DQN进行训练,得到训练好的DQN。进而,在训练好DQN后,可以将网络的实时流量信息输入训练好的DQN,使得训练好的DQN按照每条流的优先级高低顺序,依次确定出每条流的路由。其中,样本流量信息对应的每条样本流的样本路由可以认为是每条样本流的最佳的路由,因此,通过该DQN确定出的每条流的路由可以认为是每条流的最佳的路由。所以训练的过程就是:学习到每条样本流的最佳的路由。基于此,在训练结束后,将网络的实时流量信息输入训练好的DQN后,可以输出网络中各条流的最佳的路由。

在训练之前,可以预先设定一个用于训练的环境。在该训练环境中,包括多条样本流、多个通信节点(包括源节点和转发节点)以及多条链路,还包括一个流级别的网络流量-负载模型,通过这个模型可以得到训练环境中网络流量与链路负载的对应关系。由于对训练环境中各条样本流的路由决策会随着样本流量信息的变化而变化,所以针对一组样本流量信息,基于训练环境中网络流量与链路负载的对应关系,可以在确定各条样本流的路由的过程中,确定出训练环境中各条链路的实时负载。可以理解的是,在本方案中,由于具体是按照优先级的顺序来确定各条样本流的路由,所以每确定出一条样本流的路由后,各条链路的负载会发生变化,而该变化会影响下一条样本流的路由确定过程。在本方案中,可以将链路负载看作该链路上所有流量的线性累积。具体的,一条链路的负载是流经该条链路的各条样本流所占用的链路带宽之和。

基于上述预先设定的训练环境,可以对DQN进行训练。为了使训练好的DQN适用于对网络中的各条流进行路由选择,可以设定训练环境具有一个和网络的网络结构完全相同的训练网络,在该训练网络中源节点个数、转发节点个数和链路数量分别与网络中的源节点个数、转发节点个数和链路数量相同,而且该训练网络中各条链路的带宽也分别与网络中各条链路的带宽相同。下文中将详细介绍训练DQN的过程。

将实时流量信息输入预先训练的深度Q网络DQN,按照每条流的优先级高低顺序,依次确定出每条流的路由的过程,可以参考下文中介绍的针对一组样本流量信息进行一个回合的学习过程。

本发明实施例提供的方案,预先根据样本流量信息,以及所述样本流量信息对应的样本路由策略训练得到的DQN,进而在确定网络中每条流的路由时,在获取了网络中的实时流量信息后,将该实时流量信息输入训练好的DQN,使得DQN按照网络中每条流的优先级,依次确定出每条流的路由。本发明实施例可以在各种拓扑结构的网络中实现网络的负载均衡,减少网络拥塞的发生,并在网络流量高度动态变化的网络环境中,实现路由策略的最优化。

以下对本发明实施例中训练DQN的过程进行介绍,如图2所示,DQN的训练过程可以包括以下步骤:

S201,构建初始的DQN。

本实施例中,为了训练DQN,可以构建初始的DQN。该初始的DQN的结构可以包括:状态输入层、至少一层隐藏层、以及动作输出层。其中,在状态输入层可以将一组样本流量信息输入DQN,经过至少一层隐藏层的处理后,可以在动作输出层输出这组样本流量信息对应各条样本流的当前路由。该当前路由即为:DQN在当前参数下,经过一次学习后输出的结果。在初始的DQN中,各参数的值均为初始值。训练的过程就是不断地优化DQN中的参数,使得参数优化后的DQN输出的各条样本流的当前路由不断地接近各条样本流的样本路由。

S202,获取样本流量信息,以及样本流量信息对应的样本路由策略。

构建了初始的DQN后,可以获取样本流量信息以及样本流量信息对应的样本路由策略。以进一步根据样本流量信息以及样本流量信息对应的样本路由策略对DQN进行训练。

由于在网络流量信息发生变化时,相应地,需要调整网络的路由策略,即需要调整网络中各条流的路由。所以在本实施例中,具体是针对一组样本流量信息来训练DQN的,训练的结果就是:使得DQN可以输出这组样本流量信息对应的各条样本流的样本路由。由于在实际应用中,网络流量信息可以是任一的一组网络中各条流所占用的链路带宽的值,所以在训练DQN时,可以获取多组不同的样本流量信息,针对该多组不同的样本流量信息分别进行训练。这样,当针对网络中的某一组实时流量信息,对网络中各条流进行路由选择时,可以先确定出与该这一组实时流量信息最接近的样本流量信息,直接使用针对该样本流量信息而训练的DQN来确定这一组实时流量信息所对应的网络中各条流的路由。

S203,将样本流量信息输入DQN,按照预设的每条样本流的优先级高低顺序,得到每条样本流的当前路由。

预先设定每条样本流的优先级高低顺序的过程可以参考前述的确定网络中每条流的优先级的过程。确定出每条样本路的优先级高低顺序后,可以在每次训练时,按照该顺序确定各条样本流的当前路由,从而可以提升训练的速度。

一种实现方式中,步骤S203中的将样本流量信息输入DQN,按照预设的每条样本流的优先级高低顺序,得到每条样本流的当前路由,可以包括以下步骤:

S21,以样本流量信息、链路负载向量的初始值以及优先级0构成初始状态信息;其中,链路负载向量是由预设的训练环境中每条链路的链路负载值构成的向量,任一条链路的链路负载值是:经过该条链路的各条样本流所占用的链路带宽之和。

本实施例中,将针对一组样本流量信息的一次学习过程称为一个回合。在每个回合中,DQN由初始状态开始执行动作,继而进行一系列的状态转移直到结束状态的全部过程如图3所示。每个回合中,每输入一组状态信息,通过DQN就会输出一次动作,该输出动作表示:为一条样本流确定出一条当前路由。当一个回合输出了最后一个动作结束之后,在本回合中所输出的全部动作就表示:确定出了所有样本流的当前路由。

在每个回合中,每次输入的状态信息可以由三个部分构成:1、样本流量信息,即各样本流所占用的链路带宽,表示为:f1,2,f1,3,f1,4...fn,n-1;2、链路负载向量,表示为(l1,l2,l3...lm);3、优先级值,用于确定各样本流的顺序。具体的,样本流量信息在一个回合的一系列状态转移过程中,是不会随着状态转移而改变的,这是因为在一个回合的学习中所进行的路由决策均是针对这一组样本流量信息而进行的路由决策。链路负载向量表示了:当前状态下各条链路上的负载情况,该链路负载向量是随着状态转移而不断变化的。每次状态转移后,链路负载向量的变化由上一个状态的链路负载向量和上一个状态所输出的动作来确定。优先级表示:对各条样本流进行路由决策的优先级,同时也用来确定各个状态的顺序。

本实施例中,初始状态信息中的优先级的值设置为0,之后每执行一次动作后,状态转移后的新状态的优先级的值就增加1。

在初始状态信息中,由于还没有为任何一条样本流确定出路由,所以链路负载向量为0向量。

S22,将初始状态信息输入DQN,输出优先级为0的样本流的当前路由。

将初始状态信息输入DQN后,DQN可以基于当前的参数输出优先级为0的样本流(简称为样本流0)的当前路由。具体的,DQN可以在预先为样本流0确定的多条备选路由中选择一条,作为样本流0的当前路由。其中,确定样本流0的备选路由的方式,可以参考前述的确定网络中每条流的备选路由的方式。

S23,根据初始状态信息,以及优先级为0的样本流的当前路由,更新当前链路负载向量,并令优先级增加1。

在图3所示的过程中,每次输入状态信息后输出的动作都会影响下个状态信息中的链路负载向量。这是由于:当确定了一条流fi,j的路由ri,j后,这条流fi,j所流经的链路的链路负载发生了变化。因而,可以先根据样本流0的当前路由和初始状态信息中样本流0所占用的链路带宽,计算出样本流0给其流经的各链路所增加的负载,然后将所增加的负载与初始状态信息的链路负载向量中样本流0所流经的各链路的链路负载值相加,得到更新后的链路负载向量。该更新后的链路负载向量即可作为下一状态信息中的链路负载向量。

S24,设定s=1,…,N-1,按照s由小到大的顺序循环执行以下步骤a1-a3,输出优先级为1~N-1的样本流的当前路由,其中,N表示样本流的数量:

a1:以样本流量信息、更新后的链路负载向量以及当前优先级构成第s个状态信息。

本步骤可以参考步骤S21。

a2:将第s个状态信息输入DQN,输出优先级为s的样本流的当前路由。

本步骤可以参考步骤S22。

a3:根据第s个状态信息,以及优先级为s的样本流的当前路由,更新当前链路负载向量,并令优先级增加1。

本步骤可以参考步骤S23。

通过循环执行上述步骤a1-a3,就可以依次输出优先级为1~N-1的样本流的当前路由。当输出了最后一条样本流,即样本流N-1的当前路由后,就确定出了所有样本流的当前路由。进一步可以将所有样本流的当前路由与所有样本流的最佳路由进行比较,来优化DQN的参数。

S204,根据每条样本流的当前路由,以及样本路由策略,计算预先设置的损失函数的值。

在训练DQN过程中,可以预先设置一个损失函数。通过该损失函数可以衡量每条样本流的当前路由与每条样本流的样本路由之间的差距。

一种实现方式中,在步骤S203中的实现方式(即步骤S21-S24)的基础上,步骤S204中的根据每条样本流的当前路由,以及样本路由策略,计算预先设置的损失函数的值,可以包括以下步骤:

S31,根据第N-1个状态信息,以及优先级为N-1的样本流的当前路由,计算目标链路负载向量;其中,目标链路负载向量包括:样本流量信息对应的预设的训练环境中每条链路的实时链路负载值。

确定出优先级为N-1的样本流的当前路由后,就确定出了所有样本流的当前路由。因而,可以计算出训练环境中每条链路的实时链路负载值,组成目标链路负载向量,进一步根据该目标链路负载向量,来评价训练环境的负载均衡状态。其中,计算目标链路负载向量的方式可以参考步骤S23。

S32,根据目标链路负载向量,计算样本流量信息对应的奖励函数值MLV。

利用计算出的目标链路负载向量,可以对训练环境的负载均衡状态进行评价,以便于进一步对训练环境的路由策略进行优化。对训练环境的负载均衡状态进行评价,也就是:评价一个回合的学习结果。其中,训练环境的负载均衡状态是指:训练环境中各条链路上的负载情况。

由于本发明的目的是:尽可能地减少网络拥塞的发生几率和拥塞的程度。具体的,需要明确两种需求:1、当训练环境中任一条链路上的链路负载值lk低于该条链路的最大可用的带宽阈值tk时,需要使链路负载值lk尽可能的远离带宽阈值tk;2、当链路负载值lk超过带宽阈值tk时,需要使链路负载值lk尽可能的接近带宽阈值tk。为了实现这两种需求,需要先定量地描述训练环境中各条链路的链路负载值与带宽阈值之间的关系,这里,定义了一个训练环境的最大负载值(maximumloading Value,MLV),其表达式为:

MLV=min((t1-l1),(t2-l2),(t3-l3)...(tm-lm))

其中,l1,l2,l3,...,lm分别表示链路1,2,3,...,m的实时链路负载值,t1,t2,t3,...,tm分别表示链路1,2,3,...,m的带宽阈值。

MLV表示出了:训练环境中负载最重的链路的带宽阈值与实时链路负载值之间的差值。当MLV的值为正时,说明训练环境中所有链路的实时链路负载值均小于带宽阈值,训练环境中没有拥塞发生,此时MLV的值越大,则认为训练环境中的负载就越均衡。而当MLV的值为负时,说明训练环境中至少有一条链路的实时链路负载值超过了带宽阈值,训练环境中发生了拥塞,此时MLV的值越小,就表示训练环境中的拥塞越严重。

基于MLV所能表示的上述情形,在DQN的训练中,可以将MLV作为奖励函数,通过该奖励函数对训练环境的负载均衡状态进行评价。也就是说,该评价可以用一个奖励函数值来表示。每一个正的奖励函数值表示:奖励一个回合中,DQN所输出的动作;每一个负的奖励函数值表示:惩罚一个回合中,DQN所输出的动作。当通过多个回合的学习,使得DQN逐渐学会如何输出动作来得到更大的奖励函数值之后,说明训练完成。基于训练完成的DQN,可以针对网络的实时流量信息,给出最优的路由策略。

可以理解的是,在MLV的表达式中,选择使用最值而非均值来描述训练环境的拥塞情况,是由于:网络拥塞往往是网络负载不均导致的,因此需要对任何可能导致网络负载过度集中的路由策略进行惩罚。通过衡量网络中负载情况最差的链路,可以很容易地判断出路由策略的好坏,而使用平均值会使得难以区分好的路由策略和不好的路由策略。

本实施例中,可以根据目标链路负载向量,通过上述MLV的计算公式来计算样本流量信息对应的奖励函数值MLV,以根据该奖励函数值MLV进一步对一个回合的学习结果进行评价。

S33,根据奖励函数值,以及样本路由策略,计算预先设置的损失函数的值。

本实施例中,可以根据奖励函数值,以及样本路由策略,通过以下公式计算预先设置的损失函数的值:

L(θ)=E[(MLV+γmaxaQ(s′,a′|θ)-Q(s,a|θ)2]

其中,L(θ)表示损失函数,MLV表示奖励函数值,γ表示折扣因子,0≤γ≤1,θ表示DQN的当前网络参数,Q(s,a|θ)表示将初始状态信息s输入DQN后,输出每条样本流的当前路由后得到的累积奖励,a表示每条样本流的当前路由,maxaQ(s′,a′|θ)表示根据样本路由策略确定出的最优累积奖励。

具体的,s′表示执行动作a后转移的下一个状态,maxaQ(s′,a′|θ)表示状态s′对应的当前样本流的所有备选路由所对应的累积奖励中的最大值,a′表示状态s′对应的当前样本流的所有备选路。

其中,可以通过奖励函数值MLV来计算得到上述累积奖励Q(s,a|θ)。具体的,通过奖励函数值MLV计算累积奖励Q(s,a|θ)的方法,以及根据样本路由策略确定出的最优累积奖励的方法均属于现有技术。本发明在此不进行赘述。

S205,当所计算的损失函数的值不低于第一预设值时,调整DQN的网络参数,并返回将样本流量信息输入DQN,按照预设的每条样本流的优先级高低顺序,得到每条样本流的当前路由的步骤。

当所计算的损失函数的值不低于第一预设值时,说明DQN的训练效果还没有达到预期的效果,因而可以调整DQN的网络参数,返回执行步骤S203。具体的,可以采用反向传递和梯度下降法来调整DQN的网络参数。

当然,第一预设值可以根据实际需要进行设定。

S206,当所计算的损失函数的值低于第一预设值时,结束训练,得到训练完成的DQN。

当所计算的损失函数的值低于第一预设值时,说明DQN的训练效果达到了预期的效果,训练可以结束,从而得到了训练完成的DQN。也就是说,基于训练完成的DQN的网络参数,可以输出网络中各条流的最佳路由。

另外,在本实施例中,在图1所示实施例的基础上,还可以包括以下步骤:

S104(图中未示出),根据每条流的路由,更新本地的流表;将更新后的流表发送至各openflow交换机,以使各openflow交换机根据更新后的流表,对所述网络中的数据进行相应操作。

SDN控制器可以根据收集到的网络流量信息来制定相应的路由策略和转发机制。因而在确定出每条流的路由后,SDN控制器可以直接根据每条流的路由,更新本地的流表。继而可以将更新后的流表发送至SDN网络架构中数据平面的各openflow交换机,以使各openflow交换机根据更新后的流表,对所述网络中的数据进行相应操作。例如,对网络中的数据包进行转发操作。由此,各openflow交换机可以根据网络的最优路由策略实现数据的传输。

上述的根据每条流的路由,更新本地的流表的步骤,可以通过现有技术实现,本发明在此不进行赘述。

相应于上述方法实施例,本发明实施例提供了一种SDN架构下基于深度强化学习的路由决策装置,应用于SDN控制器,如图4所示,所述装置可以包括:

第一获取模块401,用于获取网络中的实时流量信息;其中,所述实时流量信息包括:所述网络中的每条流所占用的链路带宽;

第一确定模块402,用于确定所述每条流的优先级;

第二确定模块403,用于将所述实时流量信息输入预先训练的深度Q网络DQN,按照所述每条流的优先级高低顺序,依次确定出所述每条流的路由;

其中,所述DQN是根据样本流量信息和所述样本流量信息对应的样本路由策略训练得到的;所述样本流量信息包括:每条样本流所占用的链路带宽,所述样本路由策略包括:所述样本流量信息对应的所述每条样本流的样本路由。

本发明实施例提供的方案,预先根据样本流量信息,以及所述样本流量信息对应的样本路由策略训练得到的DQN,进而在确定网络中每条流的路由时,在获取了网络中的实时流量信息后,将该实时流量信息输入训练好的DQN,使得DQN按照网络中每条流的优先级,依次确定出每条流的路由。由于本发明实施例基于预先训练的DQN网络来确定路由,而DQM网络训练时可以依据待分析的拓扑结构的网络的样本数据,因此,本发明实施例可以在各种拓扑结构的网络中减少网络拥塞的发生,并在网络流量高度动态变化的网络环境中,实现路由策略的最优化。

更进一步的,在图4所示实施例的基础上,如图5所示,本发明实施例所提供的一种SDN架构下基于深度强化学习的路由决策装置,还可以包括:

构建模块501,用于构建初始的DQN;

第二获取模块502,用于获取样本流量信息,以及所述样本流量信息对应的样本路由策略;

第三确定模块503,用于将所述样本流量信息输入所述DQN,按照预设的所述每条样本流的优先级高低顺序,得到所述每条样本流的当前路由;

计算模块504,用于根据所述每条样本流的当前路由,以及所述样本路由策略,计算预先设置的损失函数的值;

第一处理模块505,用于当所计算的损失函数的值不低于第一预设值时,调整所述DQN的网络参数,并触发所述第三确定模块503;

第二处理模块506,用于当所计算的损失函数的值低于所述第一预设值时,结束训练,得到训练完成的DQN。

可选地,所述第三确定模块503,可以包括:

构建单元,用于以所述样本流量信息、链路负载向量的初始值以及优先级0构成初始状态信息;其中,所述链路负载向量是由预设的训练环境中每条链路的链路负载值构成的向量,任一条链路的链路负载值是:经过该条链路的各条样本流所占用的链路带宽之和;

第一输出单元,用于将所述初始状态信息输入所述DQN,输出优先级为0的样本流的当前路由;

更新单元,用于根据所述初始状态信息,以及所述优先级为0的样本流的当前路由,更新当前链路负载向量,并令优先级增加1;

第二输出单元,用于设定s=1,…,N-1,按照s由小到大的顺序循环执行以下步骤a1-a3,输出优先级为1~N-1的样本流的当前路由,其中,所述N表示样本流的数量:

a1:以所述样本流量信息、更新后的链路负载向量以及当前优先级构成第s个状态信息;

a2:将所述第s个状态信息输入所述DQN,输出优先级为s的样本流的当前路由;

a3:根据所述第s个状态信息,以及所述优先级为s的样本流的当前路由,更新当前链路负载向量,并令优先级增加1。

可选地,所述计算模块504,可以包括:

第一计算单元,用于根据第N-1个状态信息,以及优先级为N-1的样本流的当前路由,计算目标链路负载向量;其中,所述目标链路负载向量包括:所述样本流量信息对应的所述预设的训练环境中每条链路的实际链路负载值;

第二计算单元,用于根据所述目标链路负载向量,计算所述样本流量信息对应的奖励函数值MLV;

第三计算单元,用于根据所述奖励函数值,以及所述样本路由策略,计算预先设置的损失函数的值。

可选地,第二计算单元,具体用于根据所述目标链路负载向量,通过以下公式计算所述样本流量信息对应的奖励函数值MLV:

MLV=min((t1-l1),(t2-l2),(t3-l3)...(tm-lm))

其中,l1,l2,l3,...,lm分别表示链路1,2,3,...,m的实际链路负载值,t1,t2,t3,...,tm分别表示链路1,2,3,...,m的带宽阈值;

第三计算单元,具体用于根据所述奖励函数值,以及所述样本路由策略,通过以下公式计算预先设置的损失函数的值:

L(θ)=E[(MLV+γmaxaQ(s′,a′|θ)-Q(s,a|θ)2]

其中,L(θ)表示所述损失函数,MLV表示所述奖励函数值,γ表示折扣因子,0≤γ≤1,θ表示所述DQN的当前网络参数,Q(s,a|θ)表示将所述初始状态信息s输入所述DQN后,输出所述每条样本流的当前路由后得到的累积奖励,a表示每条样本流的当前路由,maxaQ(s′,a′|θ)表示根据样本路由策略确定出的最优累积奖励。

可选地,第一确定模块402,可以包括:

第一确定单元,用于针对所述每条流fi,j,确定该条流的x条备选路由其中,i表示所述流fi,j的源节点,j表示所述流fi,j的目标节点;

第四计算单元,用于通过以下公式计算所述流fi,j的第r条备选路由的评价值EVr:

其中,l1,l2,l3,...,L表示所述第r条备选路由所经过的各条链路,表示所述网络中除所述流fi,j之外的其他流的备选路由中,经过所述各条链路l1,l2,l3,...,L的各总次数;表示所述各总次数中的最大值;

第五计算单元,通过以下公式计算所述流fi,j的优先级参考值Pi,j:

Pi,j=max(E)-max(E\{max(E)})

其中,E表示由所述流fi,j的所有备选路由的评价值组成的集合,E={EV1,EV2,EV3...EVX},max(E)表示所述集合E中的最大值,E\{max(E)}表示将所述集合中E中的最大值max(E)去掉后组成的新集合,max(E\{max(E)})表示所述新集合E\{max(E)}中的最大值;

第二确定单元,用于按照所述每条流的优先级参考值的高低顺序,确定出所述每条流的优先级;其中,优先级参考值最高的流的优先级为0,优先级参考值最低的流的优先级为N-1。

可选地,所述每条流的备选路由满足以下条件:

所述每条流的任一备选路由无环;

所述每条流的任一备选路由所经过的路径与其他备选路由所经过的路径不完全相同;

所述每条流的任一备选路径的距离满足预设值。

另外,本发明实施例还提供了一种SDN控制器,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,

存储器603,用于存放计算机程序;

处理器601,用于执行存储器603上所存放的程序时,实现上述实施例中任一的SDN架构下基于深度强化学习的路由决策方法。

上述SDN控制器提到的通信总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一的SDN架构下基于深度强化学习的路由决策方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/SDN控制器/存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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