Pathchirp—有效的带宽估计方法(二)
上一个blog介绍了有效带宽估计方法:pathload。http://blog.csdn.net/ice110956/article/details/11126491。
做一个小小的总结:pathload用等距离的包序列探测,通过网络延时的趋势来判定是否过载,再用二分法收敛到实际的剩余带宽。Pathload每次的带宽估计大概要5MB左右的探测包,12S的探测时间,虽然探测的准确率较高,但是消耗更大。
下面介绍另一个带宽估计的算法,pathchirp,它用少的多的包来进行探测,对比于pathload,在探测效率上有很大的提升。
基本模型
如下图,pathchirp用一个指数型递增的序列作为探测序列:
这样的一个队列称为一个chirp. pathchirp用m个chirp来平均计算。
每个chirp中,每个包的发送间隔时间为:ΔK。每个包的链路总延时为:qk. 这个包的瞬时发送速率可以如下计算:
如果qk=qk-1,说明此时的发送速率要小于链路带宽,即
否则,大于链路带宽。
简单的图形说明如下:
那么,我们就可以做如下简单的估计:
链路的瓶颈带宽等于qk开始增加的发送速率。如上图,D在第五个包后开始增长,带宽估计为20s一个包。
模型的优点
1.一个pathchirp通过N个包的序列,得到了N-1个包间隔,而同样要得到这么多间隔,一般的包对方法要用2*N-2个包,而包序列方法则更多。
2.通过指数级增长,pathchirp包发送带宽从G1增长到GN,只用了[logG1-logGN]个包。
3.最重要的优势,pathchirp得到了链路延时中很重要的信息。
加权平均的带宽估计
根据上面所述,在理想状态下,我们只要找到带宽延时的拐点就行了,但是实际并不是这样。
但是由于突发的数据流,导致q并不是单调增长的。如下图:
Pathchirp把突然连续地增长视为到了链路瓶颈带宽。图中一小段的上升和下降,pathchirp中认为是突发的数据流导致的,而实际的平稳带宽还是大于发送速率。
那么,我们要如何在有噪声的延时图上面找到实际的瓶颈带宽拐点呢?pathchirp使用一个加权平均的方式来计算真实带宽如下公式:
Ek为包k发送时刻的链路估计带宽,Ek=B[tk,tk+1],D表示整个包序列chirp的加权带宽。
于是我们的估计再转化为计算每个包对应的带宽估计Ek
Ek直观地理解如下:
公式说明,如果链路延时q呈下降趋势,那么此时的带宽要小于发送带宽。其他情况下,发送速率要大于链路瓶颈带宽。
划分离群区间
并不是所有的qk<qk+1我们都能推断链路发生了阻塞。直观上来说就是,只有不断增加的序列,我们才能推断链路发生了阻塞,而偶然的增加并不能说明这个问题。于是我们要划分一个q的离群区间,即增加区间。
Pathchirp的离群区间计算如下,其目的是寻找真实的链路延时开始点和结束点。
每一个qi<qi+1的i都是潜在的离群开始点。离群区间结束点j如下定义:
F称为减小参数。
我们再定义一个参数L,j-i>=L时,我们说这个区间满足长度L要求,我们定义他为离群区间。
根据离群区间计算每个包估计带宽
通过上面离群区间的划分,我们划分了如下三种包:
1. 结束离群区间的包:
我们把它的链路带宽定义为自己发送速率。
2.处于离群区间的包:
我们把它的链路带宽定义为离群区间开始包的发送速率。
3.非离群区间的包:
我们把这时的带宽也定义为最后一个离群区间结束的包l的发送速率。
具体的算法
问题
1. 首先是系统时间的问题。执行pathchirp要求要有很高的时间精度。但是CPU时间等等问题是无法解决的。一个变更方案就是使用网卡的时间戳而不是应用层的时间戳。
2. 还有就是丢包问题,pathchirp把有丢失包的chirp直接丢弃。
效率与准确度
以下对比pathload的效果与准确度:
相比pathload,pathchirp使用1/10的包数量,达到比较接近的精度,在一定的环境下有他的优势。
参考文献:pathChirp: Efficient Available BandwidthEstimationfor Network Paths
http://www.slac.stanford.edu/pubs/slacpubs/9500/slac-pub-9732.pdf
Pathchirp—有效的带宽估计方法(二)的更多相关文章
- pathload --有效的网络带宽估计方法
上一篇博客简述了现行的带宽估计的方法,分类,以及一些问题. 见:http://blog.csdn.net/ice110956/article/details/11071969 上文列出了13种现行的方 ...
- Eviews 9.0新功能——估计方法(ARDL、面板自回归、门限回归)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 9.2 估计功能 eviews9.0下载链接: ...
- TCP的带宽估计和丢包恢复
一.带宽估计 TCP的带宽估计主要通过拥塞控制算法实现,用到两个变量: 1.cwnd TCP对当前链路可用带宽的估计 2.ssthreash 拥塞控制算法“假想”出来的可用带宽值 二.丢包 ...
- 宽带DOA估计方法
Wideband DOA Estimation. 语音信号以及野外的车辆信号的声音都是宽带信号,所以传统的窄带DOA算法(MUSIC,ESPRIT等)都不适用.需要采用宽带DOA算法来计算目标信号的波 ...
- WebRTC的带宽估计[转载]
带宽估计(BWE)模块的任务是决定你可以发送多大的视频流且不会造成网络拥塞,以此来保证不会降低视频质量. 在以前的带宽估计算法还是十分基础的,大体上是基于丢包而设计的.通常我们在开始慢慢的增加视频的比 ...
- Android抓包方法(二)之Tcpdump命令+Wireshark
Android抓包方法(二) 之Tcpdump命令+Wireshark 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分 ...
- Java 简单实用方法二
整理以前的笔记,在学习Java时候,经常会用到一些方法.虽然简单但是经常使用.因此做成笔记,方便以后查阅 这篇博文先说明构造和使用这些方法. 1,判断String类型数据是否包含中文 可以通过正则表达 ...
- SSH框架的多表查询(方法二)增删查改
必须声明本文章==>http://www.cnblogs.com/zhu520/p/7773133.html 一:在前一个方法(http://www.cnblogs.com/zhu520/p ...
- RAC(ReactiveCocoa)使用方法(二)
RAC(ReactiveCocoa)使用方法(一) RAC(ReactiveCocoa)使用方法(二) 上篇文章:RAC(ReactiveCocoa)使用方法(一) 中主要介绍了一些RAC中常见类的用 ...
随机推荐
- Loggerly技术架构
https://www.loggly.com/blog/topic/log-management-technology/
- perl lwp 超时问题
lwp 超时问题: jrhmpt01:/root/async# cat a1.pl use LWP::UserAgent; use utf8; use DBI; use POSIX; use Data ...
- tomcat的webappclassloader中一个奇怪的异常信息
假设一个应用抛出大量的Class not found信息,一般你会怀疑包冲突.但是tomcat的webappclassloader却有这种问题: 假设一个应用公布出现故障, webappclasslo ...
- 多条件搜索拼接Sql语句
1. 如下实例: 1.1 如下图所示:[通过用户输入的数据拼接Sql搜索语句] 1.2 private void button2_Click( ...
- Visual Studio Tools for Unity安装及使用
Visual Studio Tools for Unity安装及使用 转载自:CSDN 晃了一下,10.1到现在又过去两个月了,这两个月什么也没有学,整天上班下班,从这周末开始拾起unity,为了年后 ...
- The Power of Reading——英语学习小技巧之七
This method is "The Power of Reading" and it comes from an article by Dr.Stephen Krashen. ...
- JUnit4的使用2
package com.imooc.test.aware; import org.junit.Test; import org.junit.runner.RunWith; import org.jun ...
- Web开发找错基本思路
WEB开发主要是两个交互(B/S数据) 浏览器: 1 包含html.css.js等客户端代码运行错误. 传输端: 1 路径引入错误,常用插件的引入(artDialog.Ztree.JQuery等). ...
- 转载纯真ip库
http://blog.csdn.net/clin003/archive/2007/08/14/1743157.aspx 利用 QQWry.Dat 实现 IP 地址高效检索(PHP) 根据 LumaQ ...
- U-Boot在FL2440上移植(四)----支持网卡DM9000和烧写yaffs文件系统
<一>支持网卡芯片DM9000 在driver下,有网卡驱动DM9000x.c 和 DM9000x.h DM9000接在BANK4,位宽16 在include/configs/TX2440 ...