zoukankan      html  css  js  c++  java
  • tc令牌桶限速心得

    一、实验拓扑与实验现象

    实验拓扑如图所示,在①号机上发送数据,③号机上接受数据,同时在④号机的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

  • 相关阅读:
    (转)Linux端口nmap和netstat命令
    (转)Linux下增加交换分区的大小
    (转)centos7安装telnet服务
    (转)VmWare下安装CentOS7图文安装教程
    (转)Linux系统安装时分区的选择
    (转)硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍
    (转).tar.gz文件和.rpm文件的区别
    (转)Linux(Centos)之安装Java JDK及注意事项
    ibatis中integer类型
    ibatis时间比较大小
  • 原文地址:https://www.cnblogs.com/kekukele/p/4119913.html
Copyright © 2011-2022 走看看