码迷,mamicode.com
首页 > 其他好文 > 详细

tc令牌桶限速心得

时间:2015-05-22 18:41:13      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

一、实验拓扑与实验现象

实验拓扑如图所示,在①号机上发送数据,③号机上接受数据,同时在④号机的eth1与eth2网口限制速率为115200kbps,命令如下

tc qdisc add dev eth1 root tbf rate 115200bps buffer 1600 limit  3000
tc qdisc add dev eth2 root tbf rate 115200bps buffer 1600 limit  3000

 

技术分享

图1 实验拓扑

然后在④号机上使用ifstat查看网口状态,得到结果如下:

技术分享技术分享

 

我们可以看到eth1的入口速率为144KB/s左右,而eth2的出口速率为112KB/s左右,那么还有32KB/s的速率哪里去了呢?

 

二、令牌桶在端口限速的原理

首先让我们了解下令牌桶限速的原理,如限速原理图如下(此图引自博文:令牌桶算法的应用 )

技术分享

 

 

图2 使用令牌桶做端口限速的原理图

 

  图2展示是了linux系统中宽带管理的实现,需由端口发送的报文通过分类器分类以后,进入队列,这个队列的大小由上面tc tbf命令中的limit设定,若令牌桶中有这个报文大小的令牌,则将此报文发送出去,否则在缓存队列中等待,等待有足够多的令牌后在发送,若在这个过程中缓存队列溢出,则将导致部分报文被丢弃,这里值得注意的是发送报文是以包为单位发送的,但是令牌桶的实现是以字节为单位,而不是针对包进行的。

  每个到来的令牌从数据队列中收集一个数据包,然后从桶中被删除。这个算法关联到两个流上——令牌流和数据流,于是我们得到3种情景:

  1、数据流以等于令牌流的速率到达TBF。这种情况下,每个到来的数据包都能无延迟地通过队列。

  2、 数据流以小于令牌流的速度到达TBF。通过队列的数据包只消耗了一部分令牌,剩下的令牌会在桶里积累下来,直到桶被装满。剩下的    令牌可以在需要以高于令牌流速率发送数据流的时候消耗掉,这种情况下会发生突发传输。
  3、数据流以大于令牌流的速率到达TBF。这意味着桶里的令牌很快就会被耗尽。导致TBF中断一段时间,称为“越限”。如果数据包持续到    来,将发生丢包。

  

  最后一种情景非常重要,因为它可以用来对数据通过过滤器的速率进行整形。
  可见,令牌的积累可以导致越限的数据进行短时间的突发传输而不必丢包,但是持续越限的话会导致传输延迟直至丢包。

博客迁到个人博客网站:http://btdog.com.cn/index.php/home/article/detail/id/3.html

tc令牌桶限速心得

标签:

原文地址:http://www.cnblogs.com/kekukele/p/4119913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!