1.一种基于动态缓存的主动队列管理方法,其特征在于,包括如下步骤:S1、针对流量队列执行动态缓存策略:基于初始化缓存容量、以及缓存的上下界周期性地调整缓存容量,直到缓存内的队列排空;具体包括以下子步骤:S101、缓存容量Buffer初始化:对节点缓存容量Buffer的初始值进行设置,单位为字节;
S102、周期计数count=0,周期计数用于实现缓存容量的周期性调整,设置周期为T;
S103、获取当前队列并将队列添加到列表中,该列表长度为L,代表列表中的元素个数;S104、判断列表长度是否超过L,是则执行count++,否则返回执行步骤S103;S105、比较count和T的大小,count=T则执行步骤S106,count
S107、基于Qavg的大小、以及当前队列长度调整缓存容量Buffer;
S108、判断缓存内队列是否排空,若未排空则重置周期、清空列表,执行步骤S102,若排空则结束缓存更新策略;
S2、构建DQN环境,DQN智能体根据环境中的状态执行相应的动作,通过与环境的循环迭代的交互过程,DQN智能体不断更新当前环境状态和动作对应的Q值,学习得到最优丢包策略,环境的状态是:队列长度、出队速率、排队时延、以及缓存容量;
S3、构建DQN智能体,将环境中的当前队列长度、当前出队速率、当前排队时延、以及当前缓存容量定义为状态空间,将丢包率定义为智能体的连续动作空间,定义总奖励函数为排队时延奖励函数和吞吐量奖励函数之和,采用 策略来选择能够使总奖励函数最大化的动作;
S4、构建由策略网络和价值网络构成的深度确定性策略梯度网络;
策略网络包括结构相同的当前策略网络和目标策略网络,以环境的状态为输入,得到当前状态下的丢包概率;
价值网络包括结构相同的当前价值网络和目标价值网络,价值网络以环境的状态、以及当前状态对应的动作为输入,得到当前状态和动作对应的价值;
将当前策略网络和当前价值网络的参数更新到目标策略网络和目标价值网络;
S5、获取环境的初始状态,使用当前策略网络,根据当前状态生成动作,并执行动作给出奖励以及下一状态,并采用经验回放机制训练深度确定性策略梯度网络,得到动态缓存的主动队列管理模型,利用动态缓存的主动队列管理模型,以当前流量队列为输入,得到缓存内流量队列管理策略。
2.根据权利要求1所述的一种基于动态缓存的主动队列管理方法,其特征在于,步骤S107具体为:判断Qavg是否大于当前队列长度:若Qavg大于当前队列长度,则判断当前队列长度是否小于Buffer的0.9倍,若是则令Buffer=0.9×Buffer,否则保持Buffer不变;进一步判断Buffer是否小于缓存下界Buffer_min,若是则令Buffer=Buffer_min,若否则保持Buffer不变;若Qavg不大于当前队列长度,则令Buffer扩大1.1倍,即Buffer=1.1×Buffer;
进一步判断Buffer是否大于缓存上界Buffer_max,若是则令Buffer=Buffer_max,若否则保持Buffer不变。
3.根据权利要求1所述的一种基于动态缓存的主动队列管理方法,其特征在于,步骤S2具体是: DQN智能体根据环境中的状态st执行相应的动作at,该动作决定缓存内的数据包是丢弃还是保留的概率,即丢包率,环境根据奖励函数计算当前动作下的奖励值rt,同时更新下一状态st+1,DQN智能体根据st+1和rt执行新的动作;通过与环境的循环迭代的交互过程,DQN智能体不断更新Q值,最终学习得到最优丢包策略。
4.根据权利要求1所述的一种基于动态缓存的主动队列管理方法,其特征在于,步骤S3中,排队时延奖励函数为:
(1)其中, Ddesired表示当前队列在缓存中的理想排队时延,该变量通过手动设置, Dcurrent表示当前队列的实际排队时延,该变量通过NS3中的GetSeconds()函数获取;
吞吐量奖励函数为:
(2)其中, Dmax表示当前缓存下的最大排队时延,Rplay表示瓶颈链路的物理带宽,即数据速率,Nenq表示当前成功入队的数据包个数,Ndropped表示当前被丢弃的数据包个数, Bcurrent表示当前缓存容量;总奖励函数为:
(3)
w1、w2分别为排队时延奖励、吞吐量奖励的权重。
5.根据权利要求1所述的一种基于动态缓存的主动队列管理方法,其特征在于,步骤S3中,采用 策略来选择能够使奖励函数rt(st,at)最大化的动作at, 策略的决策方式为:
(4)
其中at表示针对当前状态st下的丢包率,其中为(0,1)内的随机数, 为探索率,当时,选择预期价值最大的动作;当 时,随机选择一个参数调整动作,探索率采用公式 进行计算,其中 为训练回合数。
6.根据权利要求1所述的一种基于动态缓存的主动队列管理方法,其特征在于,步骤S4中,策略网络包括输入层、隐藏层、全连接层、以及输出层,具体为:输入层:包括四个输入单元,分别对应状态空间 中
的4个变量;Lcurrent表示当前队列长度、Rdequeue表示当前出队速率、Dcurrent表示当前队列的实际排队时延、Bcurrent表示当前缓存容量;
隐藏层:隐藏层中的神经元个数为128,采用ReLU激活函数实现非线性变换;
全连接层:全连接层中的神经元个数为128,采用ReLU激活函数实现非线性变换;
输出层:采用1个输出单元,实现当前状态下的丢包概率输出。
7.根据权利要求6所述的一种基于动态缓存的主动队列管理方法,其特征在于,价值网络包括输入层、隐藏层、全连接层、以及输出层,具体为:输入层:包括5个输入单元,分别对应 以及当前
状态st采取的最大的动作at,即(st,at);
隐藏层:设置隐藏层中的神经元个数为128,采用ReLU激活函数实现非线性变换;
全连接层:设置全连接层中的神经元个数为128,采用ReLU激活函数实现非线性变换;
输出层:包括1个输出单元,输出当前状态和动作对应的价值 。
8.根据权利要求1所述的一种基于动态缓存的主动队列管理方法,其特征在于,采用经验回放机制训练深度确定性策略梯度网络包括以下子步骤:S401、模型初始化:初始化策略网络 的参数 和价值网络Q的参数 ;初始化目标策略网络 的参数 和目标价值网络 的参数 ;初始化经验回放池D;
S402、智能体训练:获取环境的初始状态s1;使用当前策略网络 根据当前状态st生成动作 ;执行动作at并观察环境给出的奖励rt和下一状态st+1;将经验存储在经验回放池D中;从经验回放池D中随机采样小批量经验进行训练;
S403、经验回放:从经验回放池中随机采样一个小批量的经验 ;
根据采样的经验计算目标值 :
(5)
计算当前状态价值 ;
计算价值网络的损失函数:
(6)
其中,N代表每次从经验回放池中抽取的小批量经验的大小;采用Adam优化器最小化损失函数,更新价值网络的参数 ;
计算策略网络的损失函数:
(7)
采用Adam优化器最小化损失函数,更新价值网络的参数 ;
S404、软更新目标网络参数 和 :
将当前策略网络和当前价值网络的参数更新到目标策略网络和目标价值网络(8)。