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%的丢包,所以模拟成功。