Linux

Linux TC:一个能控制发送端流量的工具,模拟网络异常的方法

2022-07-29  本文已影响0人  robot_test_boy

转载自 linux下使用tc(Traffic Control)流量控制命令模拟网络延迟和丢包

上一篇原理篇,介绍了TC流量控制的四种方式:SHAPING(对发出的流量进行带宽的限定)、SCHEDULING(对发出的流量按照优先级分配带宽)、POLICING(对接收的流量进行带宽限定)、DROPPING(对发出和接收的流量超过某个带宽时丢弃该数据包)。

还介绍了流量的处理的三种对象控制:qdisc(内核按照数据包的排队规则,将数据包放入队列,交给网卡驱动模块,系统默认规则为pfifo_fast )、class(类别)和filter(过滤器)。


本篇主要针对qdisc,进行模拟网络异常。

0)查看网卡配置

# tc qdisc show dev eth0

该命令查看并显示 eth0网卡的相关传输配置

1)模拟网络延迟传输

# tc qdisc add dev eth0 root netem delay 100ms

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

2)模拟网络延迟波动

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

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

3)模拟网络延迟波动随机性

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

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

4)模拟网络丢包:

# tc qdisc add dev eth0 root netem loss 1%

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

5)模拟网络丢包成功率

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

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

6)模拟包重复

# tc qdisc add dev eth0 root netem duplicate 1%

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

7)模拟包损坏

# tc qdisc add dev eth0 root netem corrupt 0.2%

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

8)模拟包乱序

# 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

9)删除相关配置

# tc qdisc del dev eth0 root netem

10)查看丢包率

# tc -s qdisc show dev eth0

上一篇 下一篇

猜你喜欢

热点阅读