tc流量控制

项目背景

  • vintage3.0接口lookupforupdage增加一个策略,当带宽流量tx或rx超过40%,75%随机返回304;超过60%,此接口均返回304
  • 为了对测试机器进行流量控制,使用了tc:设置网络传输速率;传输大文件:产生网络流量

生成大文件

dd if=/dev/zero of=test bs=1M count=10000
会生成一个10000M的test文件,文件内容为全0
文件比较大,同机房直接传输也需要几分钟
注意:文件传输需要在同机房,可以打满带宽;如果跨机房的话,无法打满带宽,也就十几兆左右。

tc简介

暂时没弄明白,请参考http://blog.csdn.net/daniel117/article/details/17350243

流量控制目标机器

  • 假设eth0是服务器的外网网络接口(可以用ifconfig查一下目标机器使用的外网网络接口)。tc队列添加设备接口root为最上层句柄,标记类型默认使用1的class

    tc qdisc add dev eth0 root handle 1: htb default 1
    解释:无论是队列还是class,filter,都有ID之类的标志符,一般都有parent(父,上层的),因为qdisc在顶部,所有parent无,用root字样标识,ID用1: 来标志;default 1表示当某个ip流不满足任何已设定的filter规则时,将自动归入class 1 中

  • 在qdisc下建立一个class,来制定eth0控制通过本机到外网的速度

    tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 1000mbit
    解释:为eth0下的root队列1:0添加分类并命名为1:1,类型为htb,速度为100mbit,最大可以到1000mbit。
    特别说明:网卡计量用的bit,和我们通常计量的byte换算关系是8:1,所以100mbit的速率是12M,如果想设置流量为25M,rate为200mbit,如下
    tc class add dev eth0 parent 1: classid 1:1 htb rate 200mbit ceil 1000mbit
    此处控制的流量是send(发送)即tx,如果想控制rx(接收)流量,需要设置发送流量的机器;比如想设置接收流量25M,那么需要设置发送流量机器tc rate 200mbit

实践

  • 基于vintage项目背景,将vintage-server部署在10.13.1.135,启动vintage-server服务
  • 模拟tx(send)流量超过40%,如48M

    • 对10.13.1.135进行流量控制

    tc qdisc add dev eth0 root handle 1: htb default 1
    tc class add dev eth0 parent 1: classid 1:1 htb rate 400mbit ceil 1000mbit

    • 10.13.1.135创建一个大文件 dd if=/dev/zero of=test bs=1M count=10000
    • 在10.13.1.134接收大文件test,nc -l 1234 >test
    • 在10.13.1.135发送大文件test,nc 10.13.1.134 1234
  • 大文件传输期间就可以进行自己的测试任务

  • 模拟rx(receive)流量超过60%,如72M

    • 对10.13.1.134进行流量控制

    tc qdisc add dev eth0 root handle 1: htb default 1
    tc class add dev eth0 parent 1: classid 1:1 htb rate 400mbit ceil 1000mbit

    * 10.13.1.134发送大文件
    * 10.13.1.135接收大文件

自动化工具

待续

最新文章

  1. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
  2. liunx之:解决liunx下dns配置重启失效的问题
  3. distinct order by 排序问题
  4. Expression Add Operators
  5. OpenSSH后门获取root密码及防范
  6. 编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。
  7. 安装MSITVPN连接的时候弹出:需要(未知)上的文件'MSITVPN.bmp。
  8. C++字符串函数与C字符串函数比较
  9. 分布式搜索elasticsearch 索引文档的增删改查 入门
  10. VS2010 C# 调用Web Service .
  11. UVALive 2678 大于s的最短子序列和
  12. MVC+EF 入门教程(一)
  13. SQL SERVER 打开脚本报“未能完成操作,存储空间不足”
  14. CentOS7.6配置do.cker和K.B.S
  15. 《DSP using MATLAB》Problem 5.10
  16. 手机不弹toast解决方法
  17. 859. Buddy Strings
  18. Uni2D —— 入门(全)
  19. Ubuntu 18.04 gcc降级为4.8.5版本
  20. mybatis 3 -枚举

热门文章

  1. Python语言学习前提:条件语句
  2. c# winform清空ie缓存的几种方法
  3. MFC的combox禁止键盘输入
  4. AC和路由器
  5. Yahoo!团队:网站性能优化的35条黄金守则
  6. PAT甲级——1042 Shuffling Machine
  7. PAT甲级——1011 World Cup Betting
  8. Java集合源码剖析——ArrayList源码剖析
  9. [LC] 692. Top K Frequent Words
  10. javaee验证码如何使用