Linux模拟网络延迟、丢包等

摘要:
此功能模块可用于模拟具有良好性能的LAN中复杂的Internet传输性能,如低带宽、传输延迟、丢包等。它还可进一步增强这种波动的随机性:tcqdiscddeveth0rootnetemdelay1100ms30ms30%此命令将eth0网卡的传输设置为100ms,大约30%的数据包将以±10ms的延迟发送。
一、工具介绍

1.netem

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

2.tc

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

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

二、命令使用说明

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 发送。

2、模拟网络丢包:

tc qdisc add dev eth0 root netem loss 1%

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

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

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

3、模拟包重复:

tc qdisc add dev eth0 root netem duplicate 1%

该命令将 eth0 网卡的传输设置为随机产生 1% 的重复数据包 。
 
4、模拟数据包损坏:

tc qdisc add dev eth0 root netem corrupt 0.2% 

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

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

该命令将 eth0 网卡的传输设置为:有 25% 的数据包(50%相关)会被立即发送,其他的延迟 10 秒。  
新版本中,如下命令也会在一定程度上打乱发包的次序:

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

 

免责声明:文章转载自《Linux模拟网络延迟、丢包等》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Django【十七】权限管理与路径导航crosswalk 初步使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(转载)程序员的编辑器——VIM

程序员的编辑器——VIM一、VIM的历史1976年左右Bill Joy开发了vi,他也是伯克利大学的毕业生,后来他跟其他人一起成立了Sun Microsystems公司并成为了Sun的首席科学家。一开始Bill开发了ex,尔后开发了vi作为ex的visual interface,也就是说vi允许一次能看到一屏的文本而非一行,vi也因此得名。“早期,当键盘和...

vi编辑器的学习使用(七)

vi编辑器学习使用之七vi是一个强大的编辑器,他不仅可以用来处理我们平时的文本工作,他还可以用写程序文件。在vi中有许多命令可以方便的完成我们的程序处理工作。在用vi进行程序处理时,vi充分的显示出来了他的强大之处,他可以实现在语法加亮显示,实现自动缩进,实现括号匹配,还可以在程序中实现查找和跳转。我们可以用这样的命令在vi中打开语法加亮显示的功能::sy...

Linux用户(组)管理

在linux中系统中,它并不认识帐号名称。它认识的是我们的帐号ID,帐号ID保存在/etc/passwd文件中。我们在登录linux主机时,在输入完帐号和密码时,linux会先查找/etc/passwd文件中是否有这个帐号,如果没有则跳出,如果有的话,他会读取该帐号的user ID和group ID同时该帐号的根目录和shell也读了出来。然后在去核对密码...

AIX 5L 系统管理技术 —— 存储管理——卷组

卷组 在安装系统时,就会创建一个rootvg卷组。包含自带硬盘(内置硬盘)和系统逻辑卷,一个系统只能有一个rootvg卷组。一般情况下rootvg卷组最好只包含自带硬盘。 一、创建卷组 在创建卷组之前,系统管理员必须知道如下所列的信息。 (1)卷组的名字在系统中必须是唯一的。卷组名要求时一个字符串,长度时1至15字符。 (2)要确定新卷组中包含哪些物理卷,...

Linux下的crontab定时、执行任务命令详解 oracle 自动备份

在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“crontab”,是“cron table”的简写。 一、cron服务  cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。  se...

循序渐进Linux 2:Linux的常用命令及使用技巧

一、Shell   shell本身是一个以C语言编写的程序,是用户和操作系统内核之间通信的桥梁。shell既是一种命令解释程序,又是一种功能强大的解释型程序设计语言。shell解释用户输入的命令,提交到内核处理,最后返回结果给用户。 1. shell命令语法分析 command [option] -[arguments] 2. shell的通配符 bash...