vlambda博客
学习文章列表

在SDN网络中基于深度强化学习的流量负载均衡

在SDN网络中基于深度强化学习的流量负载均衡

研究目的

传统的网络体系结构实际上是分布式系统,其中控制分散在节点之间,每个节点对整个网络的查看和控制非常有限,负载平衡只能采用专有硬件,这种硬件成本非常高。

主要贡献

提出了一个神经网络来完全控制可持续发展网络中的操作决策,SDN的集中控制还支持使用深度强化学习模型,以便来获得网络如何响应不同需求。这项工作中解决的问题是通过一种最常见的负载均衡机制最大限度的利用网络资源。提出了一个结合卷积神经网络和Q-Learning算法的代理,来平衡HTTP服务器之间的流量负载。

具体方法

Q- learning :是一种强化学习算法,通常被称为异步动态学习的一种方法,其目标是学习一种策略,基于这种策略,agent知道在给定的状态下要采取什么样的行动。
有一个agent,是怎样来极大化奖励(reward),还有一个环境,环境一直是动态的,agent会在这个环境里得到一个状态,然后会输出一个动作到环境中。通过agent的决策会输出下一步,进行下一步的决策.该方法能够使agent在马尔可夫决策过程(MDP)中发现解决方案。它通常描述一个强化学习的环境,而不需要环境的模型,只需要简单的体验其行为的结果。
MDP模型的元组描述 和策略Π。S表示状态,A表示动作。

在SDN网络中基于深度强化学习的流量负载均衡是状态转移概率矩阵,在SDN网络中基于深度强化学习的流量负载均衡是一个奖励函数,在SDN网络中基于深度强化学习的流量负载均衡称为折扣因子。MDP模式包括一项指导特定状态选择行动的策略,表示为在SDN网络中基于深度强化学习的流量负载均衡Q-learning过程是在对agent的每一个动作进行奖励和惩罚的帮助下进行的。通过反复尝试所有状态下的所有动作,能够学习到最好的状态动作对。Agent在状态-动作矩阵(Q表)中为每个状态选择一个动作,这个矩阵包括每个动作的回报估计。采取行动之后,根据行动的结果对代理人进行奖励或者惩罚,状态-动作矩阵用新的Q值更新,公式如下:

在SDN网络中基于深度强化学习的流量负载均衡

在SDN网络中基于深度强化学习的流量负载均衡是折扣因子,在SDN网络中基于深度强化学习的流量负载均衡是学习率,rt是在时间t时的奖励,重复这个过程,直到模型的学习没有进一步的改进,训练的目标时使策略尽可能的准确,以便始终为给定的状态选择最佳的操作。由于有很多的状态无法用状态-动作表来表示,因此就使用CNN与Q-Learning结合起来。这样借助神经网络,智能的对Q值进行预测,就不用每个状态建立一个有不同Q值的矩阵,从而减少计算量,状态作为输入并返回估计的未来报酬作为输出来估计Q的可能值,此外还引入了一种从经验中学习的机制。大大提高了它的性能和网络的整体性能。

本文提出的是一个动态负载平衡算法的一个解决方案,为了确保神经网络能够访问大量数据,我们决定将胖树网络拓扑用于我们的SDN。

胖树拓扑:该网络拓扑主要用途使连接并行通用超级计算机处理器,它允许同时传输大量信息。胖树拓扑在数据重心网络中被广泛应用,胖树拓扑的主要实体使具有相同端口数量和相同带宽的交换机,交换机之间的连接方式是沿着树向上,如下图所示:

在SDN网络中基于深度强化学习的流量负载均衡

上边这个网络拓扑由4层和和K个pod,K表示每台交换机的端口数,K=4,上边的根,表示核心层,包含(k/2)2个交换机,然后往下是聚合层、边缘层、最后是主机层,位于叶子上。用K个端口的交换机构建胖树,最多支持3k/4个主机,胖树的pod由k/2个聚合交换机和k/2个边缘交换机组成,每个都连接到独立聚合交换机的端口,一个聚合交换机依次连接到k/2个边缘交换机和k/2个核心交换机。总结:通过每个pod中的这种连接,每个聚合交换机与所有的边缘交换机连接,所有的边缘交换机与所有的聚合交换机连接,每个pod连接到k2/4个主机和所有的核心交换机,最终每个核心交换机连接连接到所有的pod。

负载平衡使用CNN和Q-learning:监控两种类型的数据:交换机之间连接的网络流量和服务器利用率。表示网络状态的张量是N*N的矩阵,N是网络中的交换机的总数,该矩阵包含连接两个交换机的每个链路的带宽相关的值,如果交换机之间没有连接,或者已经表示了链路(即s1-s2与s2-s1相同),则该值设置为0。否则,该值将介于0和1之间,其中1表示链路带宽的100%可用性,而0表示链路已达到其最大容量。第二个数据输入是一个向量,其值表示每个服务器的CPU和内存利用率。这两个张量的组合构成了我们的Q-Learning模型将使用的完整状态。

在SDN网络中基于深度强化学习的流量负载均衡

提出的深层神经网络(图2)由三个独立的神经网络组成,其中两个网络用作从网络收集的数据的输入和处理。第一种是卷积神经网络(CNN),由两个卷积层(卷积层,ReLu激活函数)和一个平坦层组成。CNN用于识别网络状态中的模式。第二种是简单的神经网络(NN),它由三个隐藏层组成,用于识别网络中服务器的CPU和内存负载。前两个网络的输出被引导到第三个神经网络,第三个神经网络有两个隐藏的完全连接层和一个输出层,并产生输出向量。建议解决方案中的代理、状态和操作如下:

代理-扮演SDN控制器的角色

状态-将状态定义为网络设备之间链路的带宽容量与服务器的CPU和内存负载的组合

Action-一个元组(S,D),其中S是将处理请求的服务器,D是该服务器将处理的后续请求数。

算法1是用来训练deep Q-learning

在SDN网络中基于深度强化学习的流量负载均衡

奖励函数如公式2:在SDN网络中基于深度强化学习的流量负载均衡

模型的整体有效性通过成本函数(等式3)来衡量:

实验:使用mininet模拟的SDN网络,实验分为两大类,第一类涉及指定时间段内不同数量的请求,第二类涉及恒定数量的请求;为了得到更准确的结果来支持我们的建议,我们在每个实验中总共运行了10次迭代,并提取了每个负载平衡算法的平均性能。表3中的值是第一组实验的结果,在这组实验中,网络在4分钟内被30个并发用户的请求淹没。在记录的所有指标中,DQN模型都获得了更高的性能,因为它能够在服务器之间分配请求,从而使服务的请求量比其他两种算法高出大约40%。