一、netem 与 tc:

netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情况。使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如Fedora、Ubuntu、Redhat、OpenSuse、CentOS、Debian等等。

tc 是 Linux 系统中的一个工具,全名为traffic control(流量控制)。tc 可以用来控制 netem 的工作模式,也就是说,如果想使用 netem ,需要至少两个条件,一个是内核中的 netem 功能被包含,另一个是要有 tc 。

需要注意的是:本文介绍的流控只能控制发包动作,不能控制收包动作,同时,它直接对物理接口生效,如果控制了物理的eth0,那么逻辑网卡(比如eth0:1)也会受到影响,反之,如果您在逻辑网卡上做控制,该控制可能是无效的。(注:虚拟机中的多个网卡可以在虚拟机中视为多个物理网卡)。
二、模拟延迟传输

# tc  qdisc  add  dev  eth0  root  netem  delay  100ms 

该命令将 eth0 网卡的传输设置为延迟100毫秒发送。

更真实的情况下,延迟值不会这么精确,会有一定的波动,我们可以用下面的情况来模拟出带有波动性的延迟值:

# tc  qdisc  add  dev  eth0  root  netem  delay  100ms  10ms

该命令将 eth0 网卡的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送。

还可以更进一步加强这种波动的随机性:

# tc  qdisc  add  dev  eth0  root  netem  delay  100ms  10ms  30%

该命令将 eth0 网卡的传输设置为 100ms ,同时,大约有30%的包会延迟 ± 10ms 发送。

三、模拟网络丢包:

# tc  qdisc  add  dev  eth0  root  netem  loss  1% 

该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包。

也可以设置丢包的成功率:

# tc  qdisc  add  dev  eth0  root  netem  loss  1%  30%

该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包,成功率为30% 。

四、模拟包重复:

# tc  qdisc  add  dev  eth0  root  netem  duplicate 1%

该命令将 eth0 网卡的传输设置为随机产生 1% 的重复数据包。

五、模拟数据包损坏:

# tc  qdisc  add  dev  eth0  root  netem  corrupt  0.2%

该命令将 eth0 网卡的传输设置为随机产生 0.2% 的损坏的数据包。 (内核版本需在2.6.16以上)

六、模拟数据包乱序:

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

该命令将 eth0 网卡的传输设置为:有25%的数据包(50%相关)会被立即发送,其他的延迟10秒。

新版本中,如下命令也会在一定程度上打乱发包的次序:

Linux 下利用netem模拟广域网特性相关推荐

  1. linux下使用TC模拟弱网络环境

    linux下使用TC模拟弱网络环境 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟 ...

  2. Delphi下利用WinIo模拟鼠标键盘详解

    本文最早在编程论坛上发表,文章地址:http://programbbs.com/bbs/view12-17207-1.htm,相关文件可以在上述地址的页面中下载.转载时请注明出处. 前言 一日发现Se ...

  3. Linux下利用rsync实现多服务器文件同步

    Linux下利用rsync实现多服务器文件同步 目标:多服务器文件同步 环境:2台centos5.6 Web端:192.168.20.20 Backup端:192.168.20.21 需要备份目录为: ...

  4. linux下利用openssl来实现证书的颁发(详细步骤)--转载和修改

    原文地址:http://www.cnblogs.com/firtree/p/4028354.html linux下利用openssl来实现证书的颁发(详细步骤) 1.首先需要安装openssl,一个开 ...

  5. linux下IO口模拟I2C的一些总结

    2019独角兽企业重金招聘Python工程师标准>>> 以前一直在用I2C接口,因为总是有线程的例子就一直没有去深入的了解,今天分析了一下在linux下通用GPIO模拟I2C的程序. ...

  6. 【java】 linux下利用nohup后台运行jar文件包程序

    Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 ...

  7. 嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误

    嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误 2015-05-27 14:19 184人阅读 评论(0) 收藏 举报  分类: 嵌入式(928)  一般察看函数运行时堆栈的 ...

  8. linux fb应用例子,Linux下利用framebuffer画点的程序小例子

    Linux下利用framebuffer画点的程序小例子: /* * ================================================================== ...

  9. linux在指定行添加内容,linux下利用shell在指定的行添加内容的方法

    linux下利用shell在指定的行添加内容的方法 在linux的一些配置中总会要进行某个文件中的某行的操作,进行增加,修改,删除等操作. 而这里主要是进行的是指定的行添加数据的操作: 脚本如下: s ...

最新文章

  1. 2021 互联网大厂新年礼盒大比拼!
  2. BZOJ 1444: [Jsoi2009]有趣的游戏
  3. SpringBoot_配置-@ConfigurationProperties与@Value区别
  4. iOS网络请求安全(JWT,RSA)
  5. 160 - 27 Cosh.1
  6. vs2010的sdf文件和ipch文件夹
  7. PHP mysql数据迁移,如何自动化PHP/MySQL应用程序的迁移(架构和数据)
  8. HDU2047 阿牛的EOF牛肉串【递推】
  9. mybatis同时查询未知个数的表中数据(表名做为参数传递,联合查询union)
  10. 单片机c语言程序源代码,51单片机C语言程序设计源代码
  11. AdminLTE-2.4.10源码包
  12. Latex表格与图片旋转,且标题同时旋转 (表格的标题可设置于表格的上方或下方)
  13. 2021-10-16windows系统还原点创建/查看/配置/删除
  14. Java基于JSP的报刊订阅管理系统
  15. Java爬虫后台微信小程序之音乐播放器(下)
  16. stm32L451比较器使用
  17. 将文件放到Android模拟器的SD卡中的两种解决方法
  18. 计算机用户名密码不知道了怎么改,电脑系统账号administrator设置了密码,密码忘记了怎么办?...
  19. 做个男人,做个成熟的男人,做个有城府的男人
  20. 西乡中学2021艺体生高考成绩查询,2019年西乡中学特长生评分标准

热门文章

  1. C++:单例模式 instance()
  2. 【保研加分项】本年度最全大学生竞赛汇总
  3. Skycc营销软件实现儿时的梦
  4. Generative Adversarial Active Learning for Unsupervised Outlier Detection
  5. Java序列化技术的知识与故事
  6. 【C语言】【unix c】获取文件的元数据(软链接,硬链接)(meta data)
  7. java 如何看装好没_如何查看Java配置好了没
  8. React项目的国际化
  9. 1044 火星数字 (20 分)
  10. 控制工程复试(含写给导师邮件)