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接收大文件

自动化工具

待续

linux tc流量控制的更多相关文章

  1. Linux TC 流量控制介绍

    前段时间在做一些测试的时候接触到了Linux tc,因为需要对数据包添加延迟,用到了tc中的netem.添加简单的延迟非常简单,像这样一条命令就搞定了:$ tc qdisc add dev eth0 ...

  2. Linux TC流量控制HOWTO中文版

    <本文摘自Linux的高级路由和流量控制HOWTO中文版 第9章节>网人郭工进行再次编译: 利用队列,我们可以控制数据发送的方式.记住我们只能对发送数据进行控制(或称为整形).其实,我们无 ...

  3. Linux TC的ifb原理以及ingress流控-转

    原文:http://www.xuebuyuan.com/2961303.html 首先贴上Linux内核的ifb.c的文件头注释:     The purpose of this driver is ...

  4. Linux TC (traffic control)

    在着手学习TC采用如下单位来描述带宽: mbps = 1024 kbps = 1024 * 1024 bps => byte/s mbit = 1024 kbit => kilo bit/ ...

  5. Linux TC(Traffic Control)框架原理解析

    近日的工作多多少少和Linux的流控有点关系.自打几年前知道有TC这么一个玩意儿而且多多少少理解了它的原理之后,我就没有再动过它,由于我不喜欢TC命令行,实在是太繁琐了.iptables命令行也比較繁 ...

  6. Linux网络流量控制工具—Netem

    第一篇:概念篇 Netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽.传输延迟.丢包等等情况.使 ...

  7. Linux TC基于CBQ队列的流量管理范例

    参考了TC的很多文档,自己也整理了一篇配置记录.在实际使用过程中效果还不错,在此分享给大家以备参考.环境:局域网规模不是很大40多台机器. NAT共享上网(内网:eth0 外网:eth2)CBQ是通过 ...

  8. linux下使用tc(Traffic Control) 流量控制命令模拟网络延迟和丢包

    目录 TC案例 TC常用命令 TC安装 TC原理介绍 TC规则 TC操作原理 TC命名规则 TC单位 TC命令 TC案例 如何使用tc模拟网络延迟和丢包 修改网络延时:  sudo tc qdisc  ...

  9. linux 下使用 tc 模拟网络延迟和丢包(转)

    1 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带 ...

随机推荐

  1. linux 信号量sem实现 生产者—消费者(线程间通信)

    #include<pthread.h> #include<stdlib.h> #include<stdio.h> #include<unistd.h> ...

  2. EF 执行存储过程

  3. 代码死循环导致cpu使用率过高

    1. top命令查看进程pid  27081 2. ps -mp pid -o THREAD,tid,time  (tid:31128) 3.printf “%x\n” number  #将tid转换 ...

  4. 非线程安全的HashMap 和 线程安全的ConcurrentHashMap

    在平时开发中,我们经常采用HashMap来作为本地缓存的一种实现方式,将一些如系统变量等数据量比较少的参数保存在HashMap中,并将其作为单例类的一个属性.在系统运行中,使用到这些缓存数据,都可以直 ...

  5. Java面试题1-附答案

    List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1.ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高 ...

  6. idea 创建项目没有web.xml文件,如何添加

    1.首先看下项目工程里面是否有WEB-INF文件夹,没有就创建一个 2.点击 file 选择 project structure 3.选择 facets,点击+号, 选择 web 4.弹出 弹框 选择 ...

  7. [LC] 244. Shortest Word Distance II

    Design a class which receives a list of words in the constructor, and implements a method that takes ...

  8. 对TD tree的使用体验及建议

    TDtree与QQ空间有着相似的功能,你可以在里面发表自己的感受与心情,也可以存储照片或者给喜欢的说说点赞.发表评论等,可以说这是一个将QQ空间从QQ里独立出来的软件.作为一个娱乐性的软件,它的功能还 ...

  9. CentOS-Samba服务安装与配置

    title date tags layout CentOS6.5 Samba服务安装与配置 2018-09-03 Centos6.5服务器搭建 post 例题: 在服务器中安装Samba服务,创建共享 ...

  10. javascript常用知识汇总

    javascript这个语言庞大而复杂,我用了三年多了,还是皮毛都不会.从刚开始的jquery,到后来的es6,每天都在学习,每天都在忘记. 1.禁止手机虚拟键盘弹出 在开发适配手机的页面时,出现了这 ...