1.TC简介

       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。

流量控制的基本原理如下图所示:

 2.TC常用命令

2.1 模拟网络延时

命令:

tc qdisc add dev eth0 root netem delay 100ms

说明:该命令指的是对eth0网卡设置延时100ms,eth0名可以通过ifconfig查看,时间单位可以为s、ms、us

2.2模拟网络丢包

命令:

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

说明:该命令指的是对eth0网卡设置为随机丢包1%,成功率30%。

2.3模拟包重复

命令:

tc qdisc add dev eth0 root netem duplicate 1%

说明:该命令指的是对eth0网卡设置随机产生1%的重复包。

2.4模拟包乱序

命令:

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 75%(大约有75%的包会延迟±10ms发送)。

2.5 查看配置

命令:

tc qdisc show dev eth0

说明:该命令指的是查看eth0网卡设置。

2.6 恢复初始配置

命令:

tc qdisc del dev eth0 root

说明:该命令指删除所有的配置,恢复初始配置。

3.示例

产生100ms延时,10%丢包。则:

第一步:设置前ping 20包,查看情况:

第二步:tc qdisc add dev eth0 root netem delay 100ms loss 10%,再ping包,则显示如下:

通过以上两步,可以看出明显延时100ms,同时有10%的丢包,所以模拟成功。

Logo

更多推荐