tc: 模拟网络异常的工具
作者: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。
qdisc是queueing 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: 模拟网络异常的工具的更多相关文章
- tc: 模拟网络异常的工具-----------鸟窝
http://colobu.com/2017/04/21/tc-introduction/
- 异常上报工具:腾讯Bugly
1.腾讯出了一个和umeng差不多的异常上报工具Bugly.(传送门:https://bugly.qq.com/docs/) (1)两者比较明显的区别是,Bugly能比较实时上报异常信息,经过测试基本 ...
- linux 下使用 tc 模拟网络延迟和丢包(转)
1 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带 ...
- linux 下使用 tc 模拟网络延迟和丢包
1 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带 ...
- 利用 Traceview 精准定位启动时间测试的异常方法 (工具开源)
机智的防爬虫标识原创博客地址:http://www.cnblogs.com/alexkn/p/7095855.html博客求关注: http://www.cnblogs.com/alexkn 1.启动 ...
- linux 下使用 tc 模拟网络延迟和丢包-使用 linux 模拟广域网延迟 - Emulating wide area network delays with Linux
tc 是linux 内置的命令:使用man pages 查看 我们看到,其功能为 show / manipulate traffic control settings,可对操作系统进行流量控制: ne ...
- Greys--JVM异常诊断工具
https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf 一.简介 我们平时在线上或者开发中会遇到各种性能.功能等问题,在运行过程中 ...
- linux下使用tc(Traffic Control) 流量控制命令模拟网络延迟和丢包
目录 TC案例 TC常用命令 TC安装 TC原理介绍 TC规则 TC操作原理 TC命名规则 TC单位 TC命令 TC案例 如何使用tc模拟网络延迟和丢包 修改网络延时: sudo tc qdisc ...
- Windows和Linux环境,网络异常模拟测试方法【转载自光荣之路微信公众号】
1.网络异常的分类 在系统的运行过程中,可能会遇到各种各样的网络问题,其中主要可能出现的问题有 网络延迟:当网络信息流过大时,可能导致设备反应缓慢,造成数据传输延迟: 网路掉包:网路掉包是在数据传输的 ...
随机推荐
- Day1-Luogu-1631
题目描述 有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N^2N2个和,求这N^2N2个和中最小的N个. 输入输出格式 输入格式: 第一行一个正整数N: 第二行N个整数A_iAi, ...
- 使用 MYSQLBINLOG 来恢复数据
使用 MYSQLBINLOG 来恢复数据 2009-04-05 12:47:05 标签:mysql mysqlbinlog 恢复 数据库 数据 原创作品,允许转载,转载时请务必以超链接形式标明文章 原 ...
- python-python基础6(面向对象)
一.面向对象编程 编程范式 编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马 ...
- 请求http协议分析- (mysql-thinkphp) (5)
http协议 https://tools.ietf.org/pdf/rfc7231.pdf https://www.w3.org/Protocols/ ======================== ...
- 第1节 HUE:14、15、16、hue与hdfs、yarn集群、hive、impala、mysql的整合
3.hue与其他框架的集成 3.1.hue与hadoop的HDFS以及yarn集成 第一步:更改所有hadoop节点的core-site.xml配置 记得更改完core-site.xml之后一定要重启 ...
- iOS大V博客
王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒. http://onevca ...
- 利用Python实现自动扫雷
自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式. 一.准备工作 我的版本是 python 3.6.1python的第三方库:win ...
- Oracle delete 之后恢复数据
当我们粗心大意直接delete from不加条件而又没有回滚的时候有一个很简单的方法能够将数据恢复到delete之前的状态 第一种方案已经帮助我解决了实际问题.第二种方案暂未实践 在此记录下以便日后查 ...
- apache端口修改为80
apache端口莫名改变为443,访问网址失败,修改Apache端口: 1.打开目录(实际而定): C:\xampp\apache\conf 编辑httpd.conf 2.ctrl + f 搜索li ...
- Windows安装tensorflow,配置vs2013,anaconda3.4,cudn9.0,cudnn7.0和pycharm
前言 最近要开始学习深度,那么首先在电脑上安装tensorflow.但是我不知道是配置版本的问题,还是安装失误的问题,我安装了很久没有安装成功,最后重装了电脑,并且融合了所有的网上可以查到的方案才安装 ...