论文出处:http://download.csdn.net/detail/hearthougan/9504057
以往测量可用带宽只是估计平均可用带宽,却忽略了这种度量方式在不同时间范围内的会有显著的变化。而该算法思想展示了如何在用户规定的时间范围内估计某一可用带宽的分布。如果两个估计的可用带宽所占的百分比覆盖了大部分的分布(例如10%至90%),那么用户可以得到可用带宽变化范围的有效估计。该论文提出了两个算法,一个是非参数估计,另一个是参数估计,其都是基于百分比抽样(percentile sampling)的思想来实现的。百分比抽样就是对发送的N个探测流分类,并统计Type-G的比例,而Type-G所占比例的期望等于对应可用带宽累积分布的一个概率。但是该论文提出的两个算法是该思想的逆应用,即给定确定的概率来估计探测速率,根据探测速率我们就可以估算可用带宽。
首先介绍一些基本概念:
1.带宽的利用率记为: ,并且 。
2.可用带宽记为: ,并且有 ;那么网络路径的可用带宽为: 。
3.端到端的平均可用带宽 是时间t的函数,因此它可以被视为一个随机过程 ,那么,称为随机变量的分布函数,其中, 。
4.可用带宽随机变量 的第p个百分位数,记为:,并且有: ,即: 的概率为p。
5.对探测流分类:如果探测流速率R大于或等于平均可用带宽 ,那么,就将该探测流划分为Type-G,否则划分为type-L。用I(R)表示Type-G (I(R) = 1)和Type-L (I(R) = 0),即:,那么I(R)的期望为:, 。
6.设I(R,N)表示Type-G的数量,那么有: ,其期望为:
##命题1: 对于一个稳定的可用带宽过程,Type-G探测流分数 是 的一个无偏估计,即: 。
命题1,是percentile sampling 的核心思想。可以由探测速率来求出相应的累积概率,而我们感兴趣的是给定一个概率如何求出相应的探测的速率?这样,我们就根据该思想的逆应用来求解探测速率,有探测速率又如何估算可用带宽 的变化范围 ?因为 和 分别是随机变量 的在概率 和 处所对应的百分位数,因此估计出探测流速率就可估计出相应的可用带宽。
如前面所述, 如果两个估计的可用带宽所占的百分比覆盖了大部分的分布(例如10%至90%),那么用户所得到的可用带宽变化范围的估计是有效的。 因此本文以此为基础 。论文假定了 的取值范围0.05-0.06,N的取值为40-50。接下来分别介绍两个算法。
一、非参数估计
记 ,由命题1可知 的期望等于 。因此,我们可以通过调整探测流R,使得Type-G类的探测流分数接近于p。
非参数算法是迭代的,通过迭代来调节探测流的速率,那么在第n次迭代中,发送端以速率 发送N个探测流给接收端。如果 接近目标 ,那么就有 ;如果 ,那么 ;如果 ,那么 。因此,如果 在 之间,那么发送的探测速率保持不变。如果 ,发送端要减小探测速率,同理,如果 ,那么发送端要增大探测速率。
该算法设置了一个调整变化率的上界b,下一次迭代速率取决于b与 的最小值,b的取值一般限定1.10-1.20之间。用dif f表示下次要调整的变化率:
由此可以不断估计出 ,即可得出 ,同理也可以求出 。每次迭代,该算法被执行两次,一个是为了估算 的N个探测流速率为 和为了估算 的另一组速率为 的N个探测流,这两组探测流可能是交错的,这样可以保证是在相同时间上的变化范围。
算法伪代码
非参数算法的缺点:当可用带宽的变化范围不稳定时,估算可用带宽的变化范围会有很大的误差,因此非参数算法假定可用带宽的变化是稳定的。
每次迭代的总探测时间T: ,其中 表示的是减小两个连续探测流之间干扰,所需的空闲时间。那么当 时,只要可用带宽保持10秒的稳定即可。
参数估计
本算法假定可用带宽的边缘分布为高斯分布(正态分布),我们知道正态分布的两个函数值,可以求出正态分布的标准差 和均值 ,根据 和 可以求出 和 ,并且该算法还可以监测出两个的百分比对应的可用带宽,比如10%和40%。
描述:
两组探测流速率分别为 和 ,然后分别计算出 和 。根据命题1可知,,当N充分大时,我们就认为 ,由此可以计算出 和 因此得:
本算法的核心就是求出 和 , 就是平均可用带宽,根据正态分布的特点,可以求出可用带宽的变化范围,本算法无需迭代,因此可以快速求出可用带宽的变化范围。
算法伪代码