一种基于动态缓存的主动队列管理方法
- 国知局
- 2024-08-02 14:53:14
本发明属于信息工程领域,具体涉及一种基于动态缓存的主动队列管理方法。
背景技术:
1、 队列管理在数据传输上有着重要的作用,队列管理机制通过分组丢弃策略减少缓存队列长度,用以降低缓存溢出概率、有效提高数据传输性能并且尽可能保证各个流之间的公平性和可靠性。常见的队列管理机制主要分为早期的被动队列管理(passive queuemanagement, pqm)和近些年发展较快的主动队列管理(active queue management, aqm)。
2、pqm中应用最为广泛的就是弃尾算法(drop-tail)。其原理是在路由器中设定一个队列的最大值或者是阈值。当队列长度达到阈值时,接下来的数据包则无差别的全部丢弃,直到队列发送下游的数据包后队列长度恢复到阈值以内。这类似于传统的先进先出(first in first out, fifo)方式。然而,随着网络流量的增加和网络体系结构的发展,pqm容易出现死锁、链路利用率低、公平性差等问题。为了解决上述问题,早期的aqm算法便由pqm算法演化而来。aqm算法设计的核心思想是围绕采用何种拥塞检测尺度以及如何根据拥塞情况来控制丢包率。根据拥塞检测尺度的不同,可将aqm算法分为:基于队列尺度的随机早期检测(random early detection, red)类算法、基于链路负载尺度的blue类算法以及基于时延尺度的codel类算法。其中red类算法能够较好的缓解传统“弃尾”算法的缺陷,blue类算法能够减少丢包率对中间网络设备缓存空间的需求,codel类算法能够调整数据报文在队列中的时延,从而缓解缓存区的bufferbloat问题。然而,网络规模的持续扩大将进一步加剧bufferbloat问题,而上述队列管理算法都是基于固定缓存条件下实现分组丢弃策略,因此难以有效应对bufferbloat问题。
技术实现思路
1、 本发明针对现有技术存在的问题,本发明利用深度强化学习dqn(deep q-learning network)构建一种基于动态缓存的主动队列管理方法,以降低缓存溢出概率、有效提高数据传输性能。
2、为解决以上技术问题,本发明提供如下技术方案:一种基于动态缓存的主动队列管理方法,包括如下步骤:
3、s1、针对流量队列执行动态缓存策略:基于初始化缓存容量、以及缓存的上下界周期性地调整缓存容量,直到缓存内的队列排空;
4、s2、构建dqn环境,dqn智能体根据环境中的状态执行相应的动作,通过与环境的循环迭代的交互过程,dqn智能体不断更新当前环境状态和动作对应的 q值,学习得到最优丢包策略,环境的状态是:队列长度、出队速率、排队时延、以及缓存容量;
5、s3、构建dqn智能体,将环境中的当前队列长度、当前出队速率、当前排队时延、以及当前缓存容量定义为状态空间,将丢包率定义为智能体的连续动作空间,定义总奖励函数为排队时延奖励函数和吞吐量奖励函数之和,采用策略来选择能够使总奖励函数最大化的动作;
6、s4、构建由策略网络和价值网络构成的深度确定性策略梯度网络;
7、策略网络包括结构相同的当前策略网络和目标策略网络,以环境的状态为输入,得到当前状态下的丢包概率;
8、价值网络包括结构相同的当前价值网络和目标价值网络,价值网络以环境的状态、以及当前状态对应的动作为输入,得到当前状态和动作对应的价值;
9、将当前策略网络和当前价值网络的参数更新到目标策略网络和目标价值网络;
10、s5、获取环境的初始状态,使用当前策略网络,根据当前状态生成动作,并执行动作给出奖励以及下一状态,并采用经验回放机制训练深度确定性策略梯度网络,得到动态缓存的主动队列管理模型,利用动态缓存的主动队列管理模型,以当前流量队列为输入,得到缓存内流量队列管理策略。
11、进一步地,前述的步骤s1包括以下子步骤:
12、s101、缓存容量 buffer初始化:对节点缓存容量 buffer的初始值进行设置,单位为字节;
13、s102、周期计数 count=0,周期计数用于实现缓存容量的周期性调整,设置周期为 t;
14、s103、获取当前队列并将队列添加到列表中,该列表长度为 l,代表列表中的元素个数;
15、s104、判断列表长度是否超过 l,是则执行 count++,否则返回执行步骤s103;
16、s105、比较 count和 t的大小, count= t则执行步骤s106, count< t则移除列表中的最旧队列,并执行步骤s103;
17、s106、计算列表内的平均队列长度 q avg,,其中 q (count)表示列表内单次计数的队列长度,单位为字节;
18、s107、基于 q avg的大小、以及当前队列长度调整缓存容量 buffer;
19、s108、判断缓存内队列是否排空,若未排空则重置周期、清空列表,执行步骤s102,若排空则结束缓存更新策略。
20、进一步地,前述的步骤s107具体为:判断 q avg是否大于当前队列长度:若 q avg大于当前队列长度,则判断当前队列长度是否小于 buffer的0.9倍,若是则令 buffer=0.9 *buffer,否则保持 buffer不变;进一步判断 buffer是否小于缓存下界 buffer_min,若是则令 buffer= buffer_min,若否则保持 buffer不变;若 q avg不大于当前队列长度,则令 buffer扩大1.1倍,即 buffer=1.1 *buffer;进一步判断 buffer是否大于缓存上界 buffer_max,若是则令 buffer =buffer_max,若否则保持 buffer不变。
21、 进一步地,前述的步骤s2具体是: dqn智能体根据环境中的状态 s t执行相应的动作 a t,该动作决定缓存内的数据包是丢弃还是保留的概率,即丢包率,环境根据奖励函数计算当前动作下的奖励值 r t,同时更新下一状态 s t+1,dqn智能体根据 s t+1和 r t执行新的动作;通过与环境的循环迭代的交互过程,dqn智能体不断更新q值,最终学习得到最优丢包策略。
22、 进一步地,前述的步骤s3中,
23、排队时延奖励函数为: (1)
24、其中, d desired表示当前队列在缓存中的理想排队时延,该变量通过手动设置, d current表示当前队列的实际排队时延,该变量通过ns3中的getseconds()函数获取;
25、吞吐量奖励函数为:
26、 (2)
27、其中, d max表示当前缓存下的最大排队时延, r play表示瓶颈链路的物理带宽,即数据速率, n enq表示当前成功入队的数据包个数, n dropped表示当前被丢弃的数据包个数, b current表示当前缓存容量;
28、总奖励函数为:
29、 (3)
30、 w 1、 w 2分别为排队时延奖励、吞吐量奖励的权重。
31、 进一步地,前述的步骤s3中,采用策略来选择能够使奖励函数 r t( s t, a t)最大化的动作 a t,策略的决策方式为:
32、 (4)
33、其中 a t表示针对当前状态 s t下的丢包率,其中为(0,1)内的随机数,为探索率,当时,选择预期价值最大的动作;当时,随机选择一个参数调整动作,探索率采用公式进行计算,其中为训练回合数。
34、进一步地,前述的步骤s4中,策略网络包括输入层、隐藏层、全连接层、以及输出层,具体为:
35、输入层:包括四个输入单元,分别对应状态空间中的4个变量; l current表示当前队列长度、 r dequeue表示当前出队速率、 d current表示当前队列的实际排队时延、 b current表示当前缓存容量;
36、隐藏层:隐藏层中的神经元个数为128,采用relu激活函数实现非线性变换;
37、全连接层:全连接层中的神经元个数为128,采用relu激活函数实现非线性变换;
38、输出层:采用1个输出单元,实现当前状态下的丢包概率输出。
39、进一步地,前述的价值网络包括输入层、隐藏层、全连接层、以及输出层,具体为:
40、输入层:包括5个输入单元,分别对应以及当前状态 s t采取的最大的动作 a t,即( s t, a t);
41、隐藏层:设置隐藏层中的神经元个数为128,采用relu激活函数实现非线性变换;
42、全连接层:设置全连接层中的神经元个数为128,采用relu激活函数实现非线性变换;
43、输出层:包括1个输出单元,输出当前状态和动作对应的价值。
44、进一步地,前述的采用经验回放机制训练深度确定性策略梯度网络包括以下子步骤:
45、s401、模型初始化:初始化策略网络的参数和价值网络 q的参数;初始化目标策略网络的参数和目标价值网络的参数;初始化经验回放池 d;
46、s402、智能体训练:获取环境的初始状态 s1;使用当前策略网络根据当前状态 s t生成动作;执行动作 a t并观察环境给出的奖励 r t和下一状态 s t+1;将经验存储在经验回放池 d中;从经验回放池 d中随机采样小批量经验进行训练;
47、s403、经验回放:从经验回放池中随机采样一个小批量的经验;
48、根据采样的经验计算目标值: (5)
49、计算当前状态价值;
50、计算价值网络的损失函数:
51、(6)
52、其中, n代表每次从经验回放池中抽取的小批量经验的大小;
53、采用adam优化器最小化损失函数,更新价值网络的参数;
54、计算策略网络的损失函数:
55、 (7)
56、采用adam优化器最小化损失函数,更新价值网络的参数;
57、s404、软更新目标网络参数和:
58、将当前策略网络和当前价值网络的参数更新到目标策略网络和目标价值网络(8)。
59、相较于现有技术,本发明采用以上技术方案的有益技术效果如下:ns3网络拓扑仿真验证表明,较于fifo、red、ared、codel、fq-codel四种主队管理算法,本发明基于动态缓存的主动队列管理方法能够在保证吞吐量和丢包率的前提下实现更低的平均传输时延和平均时延抖动,其中平均传输时延较于fifo降低了27%,较于codel的降低了1.9%,平均时延抖动较于fq-codel降低了45.6%,较于codel的平均传输时延降低了4.7%。此外,本发明采用的缓存容量更低,能够有效降低路由器等转发设备的硬件成本,具有降本增效的优势。
本文地址:https://www.jishuxx.com/zhuanli/20240801/244188.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表