出自: http://blog./uid-8478708-id-2031115.html http://blog./uid-8478708-id-2031117.html 显式拥塞控制是我从国外的文献直译的说法,英文叫做explicit congestion control。国内也有称作基于路由器反馈的拥塞控制机制,国防科大07年就是用这个名字申请的自然科学基金。显式拥塞控制机制的核心思想就是根据路由器反馈的网络状况调整发送速率,已到达高利用率、更好的公平性和快速收敛性。 显式拥塞控制这个idea还要从ECN说起,只不过ECN还比较地段,ECN只是网络通过IP头的TOS字段告诉终端,网络是不是拥塞了。 显式拥塞控制的真正鼻祖是XCP协议,他的作者Dina也就是凭借这个idea博士毕业就成了MIT的助理教授,现在已经是副教授了。 光知道网络是否拥塞是不够的,网络拥塞,那有多堵?网络不拥塞,那么网络还有多少剩余的控制可以被使用?靠猜,那当然是很难获取高效率的咯。尤其是在高带宽时延积网络面前。显式拥塞控制的研究其实就是围绕着怎么获取网络的状态,获取什么信息,怎么利用这些信息展开的。 今天先说到这,其他的东东下次有空再说。 除了XCP以外,还有些别的显式拥塞控制机制,很有些意思,比如VCP、EMKC、JETMAX、RCP、CLTCP等等。
值得一提的是,以上有除了XCP和RCP都是华人做的. 介绍协议以前我的先说说拥塞控制性能评价的标准: 1.效率:即网络的利用率。 2.公平性:我们以max-min公平标准作为评价标准,即每个用户的吞吐量和其他共享相同瓶颈的用户的吞吐量相同。 3.收敛性:收敛性需要从两方面来考虑,一是收敛到效率;二收敛到公平。 拥塞控制最好要实现的是使每个连接都能够分配到他应该被分配到的带宽,而且要越快越好。 先来说说xcp是怎么为每个连接分配带宽的,xcp路由器可以取得每个连接的速率、通过路由器的连接数和网络的利用率,这就好办了,xcp路由器有这么多信息,就可以把没用掉的带宽,平均分配给每个连接呀,这是AI吧。当网络超载的时候,再让这些连接按照比例减少就可以了,也就是MD,为什么要MD,做tcp研究的都应该知道,MD可以减小连接速率之间的差异,从而起到收敛到公平的作用。 你看这其实就是一个精确的AIMD吧。不过呢,这还不够,我们来举个例子说它为什么不够,假定连接1的速率是9,连接2的速率是90,路由的出口是100,现在路由的剩余带宽是1,把这个1分配给他们以后,没有可以分配的了,那怎么办?难道连接1就只有9.5的带宽,凭什么呀?XCP为了解决这个问题,提出了“shuffing”机制。shuffing机制其实就是为各个连接主动的一次性的做了一次AIMD,首先把各个连接的速率减少相同的比例,然后,将减少的带宽都平均分配给每个连接。shuffing机制可以是XCP收敛到公平的性能确保在O(N)。 XCP的方法还是挺巧妙的吧,(我最近做的一个带宽预留的项目,思路就是源自于XCP,不过是简化版的,不知道公司会不会用)但是代价可不小哦,为了让路由器获取足够的信息,XCP包头,就要包括时延,拥塞窗口等等信息,路由器对每个包都要计算一遍。 VCP的方法就很简单,它就用了ip头的2个bit,VCP路由器仅仅只是向发送端反馈网络的利用率,而且是超级简化版的,要不然ip头的2个bit怎么够用呢?这2个bit能告诉终端,网络利用率是处于80%一下,还是80%-100%,或者超载。当网络利用率不高的时候,连接要大大的提高发送速率,可是连接并不知道要提高多少,能提高多少,可是网络利用率可是最重要的指标,为了达到较高的网络利用率,连接只能按比例提高。当网络处于80%以上,网络利用率比较高了,而且现在也不敢提高太大的比例,再者还要考虑公平性呀,就改成MI吧。等网络超载了,反正网络处于80%以上,连接都是慢慢增长的超也超不了很多,降低个7.5%就差不多了,不能降低太多了,要不然网络利用率就很低了。 VCP的方法很简单吧,网络利用率也很高,可是有个问题,VCP只有最多20%的带宽在平均分配,要经过多久连接才能收敛到公平呀?这个时间肯定很长。EMKC用的也是几乎和VCP一样的思路,不过他获得是准确的网络利用率。 |
|
来自: 寝乡园 > 《WSN 拥塞控制》