作者:smallnest

Linux Traffic Control (tc)的扩展 Network Emulation (netem)可以很方便的模拟网络不好的情况,一般新的linux内核中(>= 2.6)已经内置了这个工具,可以方便的进行测试。

本文罗列了了 tc的常用的模拟命令, 以备将来使用的时候查询。

主要参考了Linux基金会的官方介绍: netem

监控网卡。

首先要查看你的网卡信息,如: eth0,然后将这个网卡加入监控列表 sudo tc qdisc add dev eth0 root netem

如果不想再监控,可以移除这个网卡 sudo tc qdisc del dev eth0 root netem

如果想查看监控列表, 可以使用 tc -s qdisc

qdiscqueueing discipline的缩写。

模拟网络延迟

固定延迟

1
tc qdisc add dev eth0 root netem delay 100ms

每个包都固定延迟 100毫秒, 设置好后你可以使用ping命令测试。

固定延迟+小随机值

1
tc qdisc change dev eth0 root netem delay 100ms 10ms

延迟时间变成了 100ms ± 10ms

固定延迟+小随机值+相关系数

1
tc qdisc change dev eth0 root netem delay 100ms 10ms 25%

This causes the added delay to be 100ms ± 10ms with the next random element depending 25% on the last one. This isn't true statistical correlation, but an approximation.

遵循正态分布的延迟

典型情况下延迟并不是均分分布的,而是遵循类似正态分布的规律。所以你可以使用某种分布模拟延迟。

1
tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal

分布为normal、 pareto、 paretonormal等。

模拟丢包

随机丢弃一些包, 丢弃比率可以设置。丢失比最小为 232 = 0.0000000232%

1
tc qdisc change dev eth0 root netem loss 0.1%

上述命令会随机丢弃千分之一的包。

你还可以增加一个相关参数:

1
tc qdisc change dev eth0 root netem loss 0.3% 25%

丢弃率为千分之三, 后一个的丢弃的可能性和前一个的可能性的25%相关:

Probn = .25 Probn-1 + .75 Random

模拟包重复

1
tc qdisc change dev eth0 root netem duplicate 1%

类似丢包的命令,上面命令产生百分之一的重复包。

模拟错误包

模拟随机噪音(错误包), 这个功能在 2.6.16以及以后的版本中才加入。它会在包中随机位置更改一个bit。

1
tc qdisc change dev eth0 root netem corrupt 0.1%

模拟包乱序

1) 方式一
使用 gap。 第5th包(5、10、15、20)立即发送,其它的包会延迟10毫秒。

1
tc qdisc change dev eth0 root netem gap 5 delay 10ms

2) 方式二
方式一乱序方式是固定的,可以预测的。方式二引入随机性:

1
tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%

25%的包会立即发送, 其它的包会延迟10毫秒。相关系数为50%。

新版的netem的包延迟设置也可能导致包乱序,如果包延迟的有一定的随机性的话:

1
tc qdisc change dev eth0 root netem delay 100ms 75ms

因为延迟时间在100ms ± 75ms返回内, 就有可能第二包的延迟比第一个包的延迟小,先发出去。

控制包速(带宽)

没有直接命令,需要两条命令配合使用。

1
2
3
4
5
6
7
# tc qdisc add dev eth0 root handle 1:0 netem delay 100ms
# tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
# tc -s qdisc ls dev eth0
qdisc netem 1: limit 1000 delay 100.0ms
Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )
qdisc tbf 10: rate 256Kbit burst 1599b lat 26.6ms
Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )

tc: 模拟网络异常的工具的更多相关文章

  1. tc: 模拟网络异常的工具-----------鸟窝

    http://colobu.com/2017/04/21/tc-introduction/

  2. 异常上报工具:腾讯Bugly

    1.腾讯出了一个和umeng差不多的异常上报工具Bugly.(传送门:https://bugly.qq.com/docs/) (1)两者比较明显的区别是,Bugly能比较实时上报异常信息,经过测试基本 ...

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

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

  4. linux 下使用 tc 模拟网络延迟和丢包

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

  5. 利用 Traceview 精准定位启动时间测试的异常方法 (工具开源)

    机智的防爬虫标识原创博客地址:http://www.cnblogs.com/alexkn/p/7095855.html博客求关注: http://www.cnblogs.com/alexkn 1.启动 ...

  6. linux 下使用 tc 模拟网络延迟和丢包-使用 linux 模拟广域网延迟 - Emulating wide area network delays with Linux

    tc 是linux 内置的命令:使用man pages 查看 我们看到,其功能为 show / manipulate traffic control settings,可对操作系统进行流量控制: ne ...

  7. Greys--JVM异常诊断工具

    https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf 一.简介 我们平时在线上或者开发中会遇到各种性能.功能等问题,在运行过程中 ...

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

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

  9. Windows和Linux环境,网络异常模拟测试方法【转载自光荣之路微信公众号】

    1.网络异常的分类 在系统的运行过程中,可能会遇到各种各样的网络问题,其中主要可能出现的问题有 网络延迟:当网络信息流过大时,可能导致设备反应缓慢,造成数据传输延迟: 网路掉包:网路掉包是在数据传输的 ...

随机推荐

  1. tcp/ip协议学习笔记一

    一. 简述 以前在学校学习计算机网络的时候学习多是网络7层模型OSI,了解了一些基本的计算机网络概念和协议通信格式,但是一直没弄明白其中的原理,包括各层之间的关系,应用,还有一些常见的令牌环网到底是什 ...

  2. SQL Server DATEADD() 函数 一步步使用教程

    SQL Server DATEADD() 函数 DATEADD() 函数在日期中添加或减去指定的时间间隔. DATEADD(datepart,number,date)date 参数是合法的日期表达式. ...

  3. 怎样快速高效的定义Django的序列化器

    1.使用Serializer方法自己创建一个序列化器 先写一个简单的例子 class BookInfoSerializer(serializers.Serializer): ""& ...

  4. Ubuntu操作系统编写zabbix的启动管理脚本

    Ubuntu操作系统编写zabbix的启动管理脚本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.修改zabbix的pid存放路径 1>.创建存放zabbix的pid目录 ...

  5. GNS3 icmp之严格路由

    路由配置: icmp记录路由抓取出接口的IP地址,最多可以抓取9个.ip协议头中的options为40个字节 R1 : conf t int f0/0 no shutdown ip add 192.1 ...

  6. 第1节 HUE:13、hue的下载以及安装配置

    hue的基本介绍:主要是用于与其他各个框架做整合的,提供一个web界面可以供我们去操作其他的大数据框架可以理解为这个hue就是一个与其他各个框架整合的工具,hue本身不提供任何的功能,所有的功能,都是 ...

  7. 当3D打影人头”成为黑客的秘密武器,隐私该如何保护?

    在<碟中谍>系列电影中,除了超级敬业又帅气的阿汤哥之外,最让人津津乐道的桥段就是用3D打印做出来的"人头".通过这些惟妙惟肖的"人头",阿汤哥完成了 ...

  8. Web项目设置编码格式

    1. 如果用的Tomcat ,请修改server.xml 中Connector URIEncoding="UTF-8" (GET请求时) 2. 用字符编码过滤器,设置默认编码方式为 ...

  9. jquery动态选中radio,获取radio选中值

    //动态选中radio值,1:表示radio的name 2:表示后台传过来的radio值$(":radio[name='1'][value='" + 2 + "']&qu ...

  10. GAN网络进行图片增强

    GAN网络进行图片增强 基于Tensorflow框架 调用ModifyPictureSize.py文件 代码如下: from skimage import io,transform,color imp ...