【Linux】使用tc命令手动设置网络延时


使用tc命令手动设置网络延时

  • tc全名叫做traffic control。
  • tc是一个在内核2.6之后版本中一个网络延时模拟模块
  • 设置延时

    ``` 设置100ms延迟 tc qdisc add dev eth0 root netem delay 100ms 真实情况下不可能那么精准的100ms延时!! 带有波动的延时值90ms-110ms tc qdisc add dev eth0 root netem delay 100ms 10ms 还可以进一步加强这种延时, tc qdisc add dev eth0 root netem delay 100ms 10ms 30% 表示大约有30%的包会按照90ms-100ms进行处理

    ```

  • 模拟网络丢包

    ```

    tc qdisc add dev eth0 root netem loss 1%

    tc qdisc add dev eth0 root netem loss 10%

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

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

    ```

  • 删除网卡上的相关配置:将添加命令(add)修改为(del)即可

  • 模拟包重复:

    ```

    tc qdisc add dev eth0 root netem duplicate 1%

    随机产生1%重复的包

    tc qdisc add dev eth0 root netem corrupt 0.2%

    随机产生0.2%损坏的数据包

    ```

  • 模拟数据包乱序

    ```

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

    有25%的数据包(50%相关)会被立即发送,其他的延时10ms

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

    会一定程度上打乱发送包的次序

    ```

  • 查看已经设置的网络条件 # tc qdisc show dev eth0