模糊神经元主动队列管理方法在 IPCOP 中实现的方法 技术领域 本发明涉及一种实际通信网络实验平台中模糊神经元主动队列管理方法在 IPCOP 软件路由器中实现的方法。
背景技术 近年来, 计算机网络作为一种新兴的技术已被人们广泛使用, 很多研究者已经做 了大量的研究来改善其性能。 但是随着科技的不断发展, 网络规模一直处于增长状态, 对有 限网络资源的过度需求致使计算机网络的拥塞问题, 从而导致网络数据包的大量丢失和网 络资源的低利用率以及一些其他性能的恶化。所以, 网络拥塞作为一个比较严重的问题引 起了研究者的高度重视。
仅仅依赖于源端控制策略和机制进行控制是远远不够的, IETF(互联网工程任务 组) 提出了主动队列管理 AQM, 其目的是为了弥补端到端拥塞控制机制存在的缺陷。主动队 列管理 AQM 方法解决的问题主要包括以如几个方面 :
1. 在延迟和吞吐量之间保持简单的权衡, 使队列处于未满的状态是必要的。
2. 可以吸收突发流, 对于持续流和间隙流进行公平地处理。
3. 在队列满之前对新到达的数据包进行随机丢弃, 或者在队列满的时候对缓存区 的数据包随机丢弃, 从而避免拥塞的发生。
4. 避免多个 TCP 连接由于队列溢出而造成的 “慢启动” 状态。
在主动队列管理 AQM 方法提出之前, 路由器采取的是 “Droptail”方法, 即弃尾 法, 其原则是在路由器缓存区满之后进来的数据包全部丢弃。而主动队列管理 AQM 方 法是除了使用分组丢弃以外, 还在拥塞发生之前使用分组标记通知源端减小发送速率, 主动队列管理 AQM 方法不但能够很好地避免拥塞, 同时还能避免全局同步现象 (Global Synchronization)。1993 年, Flyod 和 Jacobson 提出了随机早期检查 RED(Random Early Detection) 方法, 然而许多随后的研究已经证实了随机早期检查 RED 方法存在着一些缺 点, 例如参数较敏感、 不能很好地识别拥塞程度、 公平性问题以及不能控制队列长度的稳 定目标值等。为了克服随机早期检查 RED 方法存在的缺点, 一些随机早期检查 RED 方法 的 改 进 算 法 被 提 出, 如 ARED(Adaptive-RED)、 SRED(Stabilized-RED)、 FRED(Flow-RED)、 HRED(Hybrid-RED)、 和 ERED(Effective-RED)。除了随机早期检查 RED 的改进方法, 还有一 些其他的主动队列管理 AQM 方法, 如 BLUE 方法、 虚拟队列 AVQ 方法、 REM 方法等等。大量的 实验表明以上这些方法在动态性能和反应速度方面存在缺陷, 在网络环境动态变化的情况 下, 仍然不能提供令人满意的服务质量。
2000 年 TCP(传输控制协议) 模型建立以后, C.Hollot 等人基于控制理论分析了 网络参数对系统稳定性的影响, 提出了 PI(Proportional Integral, 比例积分) 拥塞控制 器, 它消除了稳态误差, 对于缓存队列调整具有较好的响应性和鲁棒性。与随机早期检测 RED 方法相比, PI 拥塞控制方法可以更好的调节队列长度。然而, 它对于负载和网络参数 的变化存在着缺陷。随后研究人员又提出了自适应 PI 速率控制器 PD 和基于队列的自适应
PI 控制器 PD。为了对系统的整体性能进行改善, 在 PI 的基础上又加入了微分环节, 例如 : PD、 PID 作为一种调节队列长度的 AQM 算法而出现, 然而由于计算机网络本身存在的延迟和 随机性, 这些控制器的处理效果并不是很理想。而且将网络作为一种线性时不变系统是存 在问题的并且不切合实际, 因为实际的网络是复杂多变的。 因此, 这些方法具有局限的有效 性, 并且这些算法都是在 NS2 仿真软件中实现的, 并没有应用于实际网络环境中。 发明内容
本发明所要解决的技术问题是克服了现有技术都是在 NS2 仿真软件中实现的并 没有应用于实际网络环境中的问题, 提供了一种模糊神经元主动队列管理方法在 IPCOP 软 件路由器中实现的方法。
为解决上述技术问题, 本发明是采用如下技术方案实现的 : 所述的模糊神经元主 动队列管理方法在 IPCOP 中实现的方法的步骤如下 :
1. 相关参数的定义及初始化 ;
2. 等待新的数据包到达 ;
3. 采用有导的 Hebb 学习算法对神经元加权系数动态调节 ; 4. 采用模糊控制方法动态调整神经元增益 K ;
5. 计算丢弃概率 p(k) 并以丢弃概率 p(k) 丢弃数据包。
技术方案中所述的相关参数的定义及初始化是指 :
1) limit 为路由器缓存大小, 初始值为 600packets ;
2) qref 为队列长度的期望值, 初始值为 300packet ;
3) w 为采样频率, 初始值为 160 ;
4) q(k) 为当前时刻瞬时队列长度, q(k-1) 为前一时刻瞬时队列长度, q(k-2) 为前 两时刻瞬时队列长度, 初始值均为 0 ;
5) p(k) 为数据包的丢弃概率, p(k-1) 为前一时刻的丢弃概率, 初始值均为 0 ;
6) e(k) 为当前队列长度与期望队列长度的误差, e(k-1) 为前一时刻的误差, e(k-2) 为前两时刻的误差, 初始值均为 0 ;
7) xi(k) 为神经元的输入量, i = 1,2,3, 初始值均为 0 ;
8) ηi 为学习速率, i = 1,2,3, 初始值分别为 8e-5, 1e-6 和 1e-7 ;
9) wi(k) 为神经元的加权系数, i = 1,2,3, 初始值分别为 2.58392e-6, 2.98290e-6 和 3.50735e-8 ;
10) K 为神经元增益, 其初始值 K0 设置为 0.12。
技术方案中所述的采用有导的 Hebb 学习算法对神经元加权系数动态调节的步骤 如下 :
1) 将 q(k-1) 的值赋给前两时刻瞬时队列长度 q(k-2), 将 q(k) 的值赋给前一时刻 瞬时队列长度 q(k-1), q(k) 重新采样 ;
2) 计算神经元方法输入量 x1(k), x2(k), x3(k) 的值 :
x1(k) = q(k)-qref = e(k),
x2(k) = e(k)-e(k-1),
x3(k) = e(k)-2e(k-1)+e(k-2) ;
3) 实时计算神经元的加权系数 :
wi(k+1) = wi(k)+ηie(k)p(k)xi(k), i=1,2,3 ;
4) 将 k+1 时刻的三个加权系数分别赋值给 k 时刻的加权系数, 用于下一次计算。
技术方案中所述的用模糊控制方法动态调整神经元增益 K 的步骤如下 :
1) 以 x1(k) 和 x2(k) 作为输入量, 神经元增益 K 的变化量 ΔK 作为输出量, 对输入量 x1(k) 和 x2(k) 进行模糊化, 其中包括量程转换和选取隶属度函数两部分, 将 x1(k) 和 x2(k) 分别转化到 [-3, 3] 和 [-0.3, 0.3] 内, 输入输出均选取为七个模糊状态, 分别为 PB 即负大、 PM 即负中、 PS 即负小、 Z 即零、 NS 即正小、 NM 即正中、 NP 即正大, 隶属度函数选取为三角形 函数 ;
2) 结合专家知识和经验制定 ΔK 的模糊规则表, 共有 49 条模糊规则, 第一条模糊 规则可以写成 : If x1 is NB and x2 is NB then ΔK is PB, 其他模糊规则与之类似 ;
3) 采用 Mamdani 法进行模糊推理得到增益 ΔK 的模糊值 ;
4) 用最大隶属度法进行反模糊化得到 ΔK 的真实值, 即若输出量只有一个峰值, 那么取极值为精确值, 若有多个峰值, 则取峰值的平均值为精确值, 并对 K 进行更新, 即K= K0+ΔK。
技术方案中所述的计算丢弃概率 p(k) 并以丢弃概率 p(k) 丢弃数据包的步骤如 下:
1) 计算丢弃概率 p(k) :
其中 : w′ i(k) 为输入量加权系数 wi(k) 的归一化, 即2) 最后将数据包以丢弃概率 p(k) 进行丢弃。
与现有技术相比本发明的有益效果是 :
1. 模糊神经元方法能够应用于实际网络中, 并且能够保持较小的队列波动性, 达 到了理想的队列控制效果。
2. 模糊神经元方法能够将队列长度稳定在介于 0 至缓存大小之间的任意值。
参阅图 3, 为了检验模糊神经元方法的上述性能, 搭建了实际网络平台, 节点 R1 是 编译得到的 IPCOP 软件路由器, 节点 R2 是 H3C 硬件路由器, R1 和 R2 之间的瓶颈链路大小
设置为 15Mbps, 其他链路均为 100Mbps, 在 LINUX 系统下由 Si(i=1,2,3,4) 端向 D1 端利用 TCP 协议共发送 30 个大小为 10.7MB 的文件, 路由缓存大小为 600packets, 队列期望值为 300packets。本发明方法的初始值设置如下 : 模糊神经元方法的学习速率 η1、 η2 和 η3 分 别设置为 8e-5, 1e-6 和 1e-7, 加权系数初始值 w1, w2 和 w3 分别为 2.58392e-6, 2.98290e-6 和 3.50735e-8。模糊神经元增益的初值 K0 为 0.12。神经元方法的初始参数设置与模糊神 经元方法相同。 以上初值都是以控制领域为依据来设定的, 通过实验大量实验表证明 : 当参 数为其他值时, 算法效果并不理想。
将神经元方法和模糊神经元方法分别嵌入到 IPCOP 中, 并应用于图 3 的网络平台 中, 两种方法在实际网络环境中的队列长度变化情况参考图 4 和图 5, 可以看出, 两种方法的队列长度都比较稳定。两种方法的平均队列长度和均方差参阅图 6 和图 7, 可以明显出, 与神经元方法相比, 模糊神经元方法的平均队列长度更接近于期望值, 且其方差较小, 说明 模糊神经元方法与神经元方法相比, 队列长度更稳定, 波动性较小。
将模糊神经元方法的队列期望值分别设置为 50packets 和 500packets, 该方法作 用下的队列长度变换情况参考图 8 和图 9, 可以看出, 两种情况下的队列长度分别可以稳定 在 50 和 500 附近, 说明模糊神经元方法可以将队列长度稳定在 0 至缓存值之间的任意期望 值附近 (已实验证明) , 且队列比较稳定, 它有效地消除了队列震荡。
从以上两组实验可以得出结论 : 模糊神经元方法在真实的网络环境下是可实现 的, 且实现方法无需额外的硬件成本。 附图说明
下面结合附图对本发明作进一步的说明 :
图 1-a 是 x1 的隶属度函数 ;
图 1-b 是 x2 和 K 的隶属度函数 ;
图 2 是本发明所述的模糊神经元主动队列管理方法在 IPCOP 中实现的方法的流程 图; 图 3 是本发明所述的模糊神经元主动队列管理方法在 IPCOP 中实现的方法的实际 网络实验拓扑图 ;
图 4 是本发明所述的神经元主动队列管理方法在 IPCOP 中实现的方法在实际网络 环境下的队列长度变化 ;
图 5 是本发明所述的模糊神经元主动队列管理方法在 IPCOP 中实现的方法在实际 网络环境下的队列长度变化 ;
图 6 是神经元方法和模糊神经元方法的平均队列长度比较 ;
图 7 是神经元方法和模糊神经元方法的队列长度的方差 ;
图 8 是期望值设置为 50packets 时模糊神经元方法的队列长度 ;
图 9 是期望值设置为 500packets 时模糊神经元方法的队列长度。
具体实施方式
下面结合附图对本发明作详细的描述 :
参阅图 2, 本发明解决的技术问题是将模糊神经元方法添加到 IPCOP 软件路由器 中, 并应用于实际网络环境中, 模糊神经元方法能够根据期望值对队列长度进行调整, 最终 使得瞬时队列长度能够稳定在队列期望值附近, 且队列波动小, 本发明所述的模糊神经元 主动队列管理方法在 IPCOP 中实现的方法包括如下步骤 :
1. 相关参数的定义及初始化 :
1) limit 为路由器缓存大小, 初始值为 600packets ;
2) qref 为队列长度的期望值, 初始值为 300packet ;
3) w 为采样频率, 初始值为 160 ;
4) q(k) 为当前时刻瞬时队列长度, q(k-1) 为前一时刻瞬时队列长度, q(k-2) 为前 两时刻瞬时队列长度, 初始值均为 0 ;5) p(k) 为数据包的丢弃概率, p(k-1) 为前一时刻的丢弃概率, 初始值均为 0 ;
6) e(k) 为当前队列长度与期望队列长度的误差, e(k-1) 为前一时刻的误差, e(k-2) 为前两时刻的误差, 初始值均为 0 ;
7) xi(k) 为神经元的输入量, i = 1,2,3, 初始值均为 0 ;
8) ηi 为学习速率, i = 1,2,3, 初始值分别为 8e-5, 1e-6 和 1e-7 ;
9) wi(k) 为神经元的加权系数, i = 1,2,3, 初始值分别为 2.58392e-6, 2.98290e-6 和 3.50735e-8 ;
10) K 为神经元增益, 其初始值 K0 设置为 0.12。
2. 等待新的数据包到达。
3. 采用有导的 Hebb 学习算法对神经元加权系数动态调节 :
1) 将 q(k-1) 的值赋给前两时刻瞬时队列长度 q(k-2), 将 q(k) 的值赋给前一时刻 瞬时队列长度 q(k-1), q(k) 重新采样 ;
2) 计算神经元方法输入量 x1(k), x2(k), x3(k) 的值 :
x1(k) = q(k)-qref = e(k),
x2(k) = e(k)-e(k-1), x3(k) = e(k)-2e(k-1)+e(k-2) ;
3) 实时计算神经元的加权系数, 采用如下公式 :
wi(k+1) = wi(k)+ηie(k)p(k)xi(k), i=1,2,3 ;
4) 将 k+1 时刻的三个加权系数分别赋值给 k 时刻的加权系数, 用于下一次计算。
4. 采用模糊控制方法动态调整神经元增益 K, 步骤如下 :
1) 以 x1(k) 和 x2(k) 作为输入量, 神经元增益 K 的变化量 ΔK 作为输出量, 参阅图 1, 对输入量 x1(k) 和 x2(k) 进行模糊化, 其中包括量程转换和选取隶属度函数两部分, 将 x1(k) 和 x2(k) 分别转化到 [-3, 3] 和 [-0.3, 0.3] 内, 输入输出均选取为七个模糊状态, 分 别为 PB( 负大 )、 PM( 负中 )、 PS( 负小 )、 Z( 零 )、 NS( 正小 )、 NM( 正中 )、 NP( 正大 ), 隶属 度函数选取为三角形函数 ;
2) 结合专家知识和经验制定 ΔK 的模糊规则表, 如表 1 所示, 共有 49 条模糊规则, 第一条模糊规则可以写成
If x1 is NB and x2 is NB then ΔK is PB
其他规则与之类似 ;
表1
3) 采用 Mamdani 法进行模糊推理得到增益 ΔK 的模糊值 ;
4) 用最大隶属度法进行反模糊化得到增益的变化量 ΔK 的真实值, 即若输出量只 有一个峰值, 那么取极值为精确值, 若有多个峰值, 则取峰值的平均值为精确值, 并对增益 K 进行更新, 即 K = K0+ΔK。
5. 计算丢弃概率 p(k) 并以丢弃概率 p(k) 丢弃数据包, 步骤如下 :
1) 计算丢弃概率 p(k), 采用公式如下 :
其中 : w′ i(k) 为输入量加权系数 wi(k) 的归一化, 即 2) 最后将数据包以丢弃概率 p(k) 进行丢弃。